Commit 41923e44 authored by Takashi Iwai's avatar Takashi Iwai Committed by Jaroslav Kysela

[ALSA] hda-codec - Fix possible array overflow

dac_nids arrays in each codec support code may have up to 5 items
when assigned from the auto-configurator.  Some codec codes have
less numbers than the possible max.  This patch defines the constant
and fixes the array definitions.
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarJaroslav Kysela <perex@perex.cz>
parent 7507e8da
...@@ -310,16 +310,17 @@ enum { ...@@ -310,16 +310,17 @@ enum {
extern const char *auto_pin_cfg_labels[AUTO_PIN_LAST]; extern const char *auto_pin_cfg_labels[AUTO_PIN_LAST];
#define AUTO_CFG_MAX_OUTS 5
struct auto_pin_cfg { struct auto_pin_cfg {
int line_outs; int line_outs;
hda_nid_t line_out_pins[5]; /* sorted in the order of /* sorted in the order of Front/Surr/CLFE/Side */
* Front/Surr/CLFE/Side hda_nid_t line_out_pins[AUTO_CFG_MAX_OUTS];
*/
int speaker_outs; int speaker_outs;
hda_nid_t speaker_pins[5]; hda_nid_t speaker_pins[AUTO_CFG_MAX_OUTS];
int hp_outs; int hp_outs;
int line_out_type; /* AUTO_PIN_XXX_OUT */ int line_out_type; /* AUTO_PIN_XXX_OUT */
hda_nid_t hp_pins[5]; hda_nid_t hp_pins[AUTO_CFG_MAX_OUTS];
hda_nid_t input_pins[AUTO_PIN_LAST]; hda_nid_t input_pins[AUTO_PIN_LAST];
hda_nid_t dig_out_pin; hda_nid_t dig_out_pin;
hda_nid_t dig_in_pin; hda_nid_t dig_in_pin;
......
...@@ -72,7 +72,7 @@ struct ad198x_spec { ...@@ -72,7 +72,7 @@ struct ad198x_spec {
unsigned int num_kctl_alloc, num_kctl_used; unsigned int num_kctl_alloc, num_kctl_used;
struct snd_kcontrol_new *kctl_alloc; struct snd_kcontrol_new *kctl_alloc;
struct hda_input_mux private_imux; struct hda_input_mux private_imux;
hda_nid_t private_dac_nids[4]; hda_nid_t private_dac_nids[AUTO_CFG_MAX_OUTS];
unsigned int jack_present :1; unsigned int jack_present :1;
......
...@@ -50,7 +50,7 @@ struct cmi_spec { ...@@ -50,7 +50,7 @@ struct cmi_spec {
/* playback */ /* playback */
struct hda_multi_out multiout; struct hda_multi_out multiout;
hda_nid_t dac_nids[4]; /* NID for each DAC */ hda_nid_t dac_nids[AUTO_CFG_MAX_OUTS]; /* NID for each DAC */
int num_dacs; int num_dacs;
/* capture */ /* capture */
...@@ -73,7 +73,6 @@ struct cmi_spec { ...@@ -73,7 +73,6 @@ struct cmi_spec {
unsigned int pin_def_confs; unsigned int pin_def_confs;
/* multichannel pins */ /* multichannel pins */
hda_nid_t multich_pin[4]; /* max 8-channel */
struct hda_verb multi_init[9]; /* 2 verbs for each pin + terminator */ struct hda_verb multi_init[9]; /* 2 verbs for each pin + terminator */
}; };
......
...@@ -85,7 +85,7 @@ struct conexant_spec { ...@@ -85,7 +85,7 @@ struct conexant_spec {
unsigned int num_kctl_alloc, num_kctl_used; unsigned int num_kctl_alloc, num_kctl_used;
struct snd_kcontrol_new *kctl_alloc; struct snd_kcontrol_new *kctl_alloc;
struct hda_input_mux private_imux; struct hda_input_mux private_imux;
hda_nid_t private_dac_nids[4]; hda_nid_t private_dac_nids[AUTO_CFG_MAX_OUTS];
}; };
......
...@@ -238,7 +238,7 @@ struct alc_spec { ...@@ -238,7 +238,7 @@ struct alc_spec {
unsigned int num_kctl_alloc, num_kctl_used; unsigned int num_kctl_alloc, num_kctl_used;
struct snd_kcontrol_new *kctl_alloc; struct snd_kcontrol_new *kctl_alloc;
struct hda_input_mux private_imux; struct hda_input_mux private_imux;
hda_nid_t private_dac_nids[5]; hda_nid_t private_dac_nids[AUTO_CFG_MAX_OUTS];
/* hooks */ /* hooks */
void (*init_hook)(struct hda_codec *codec); void (*init_hook)(struct hda_codec *codec);
......
...@@ -114,7 +114,7 @@ struct via_spec { ...@@ -114,7 +114,7 @@ struct via_spec {
unsigned int num_kctl_alloc, num_kctl_used; unsigned int num_kctl_alloc, num_kctl_used;
struct snd_kcontrol_new *kctl_alloc; struct snd_kcontrol_new *kctl_alloc;
struct hda_input_mux private_imux; struct hda_input_mux private_imux;
hda_nid_t private_dac_nids[4]; hda_nid_t private_dac_nids[AUTO_CFG_MAX_OUTS];
#ifdef CONFIG_SND_HDA_POWER_SAVE #ifdef CONFIG_SND_HDA_POWER_SAVE
struct hda_loopback_check loopback; struct hda_loopback_check loopback;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment