Forráskód Böngészése

ALSA: hda - Report errors when invalid values are passed to snd_hda_amp_*()

The values should be in 8 bits.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai 15 éve
szülő
commit
4671264608
1 módosított fájl, 5 hozzáadás és 0 törlés
  1. 5 0
      sound/pci/hda/hda_codec.c

+ 5 - 0
sound/pci/hda/hda_codec.c

@@ -1461,6 +1461,8 @@ int snd_hda_codec_amp_update(struct hda_codec *codec, hda_nid_t nid, int ch,
 	info = get_alloc_amp_hash(codec, HDA_HASH_KEY(nid, direction, idx));
 	if (!info)
 		return 0;
+	if (snd_BUG_ON(mask & ~0xff))
+		mask &= 0xff;
 	val &= mask;
 	val |= get_vol_mute(codec, info, nid, ch, direction, idx) & ~mask;
 	if (info->vol[ch] == val)
@@ -1486,6 +1488,9 @@ int snd_hda_codec_amp_stereo(struct hda_codec *codec, hda_nid_t nid,
 			     int direction, int idx, int mask, int val)
 {
 	int ch, ret = 0;
+
+	if (snd_BUG_ON(mask & ~0xff))
+		mask &= 0xff;
 	for (ch = 0; ch < 2; ch++)
 		ret |= snd_hda_codec_amp_update(codec, nid, ch, direction,
 						idx, mask, val);