[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: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
parent
7507e8da2f
commit
41923e4413
6 changed files with 11 additions and 11 deletions
|
@ -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 {
|
||||||
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 {
|
||||||
|
|
||||||
/* 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 {
|
||||||
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 {
|
||||||
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 {
|
||||||
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 {
|
||||||
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;
|
||||||
|
|
Loading…
Reference in a new issue