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>
This commit is contained in:
parent
55440e4e37
commit
4671264608
|
@ -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));
|
info = get_alloc_amp_hash(codec, HDA_HASH_KEY(nid, direction, idx));
|
||||||
if (!info)
|
if (!info)
|
||||||
return 0;
|
return 0;
|
||||||
|
if (snd_BUG_ON(mask & ~0xff))
|
||||||
|
mask &= 0xff;
|
||||||
val &= mask;
|
val &= mask;
|
||||||
val |= get_vol_mute(codec, info, nid, ch, direction, idx) & ~mask;
|
val |= get_vol_mute(codec, info, nid, ch, direction, idx) & ~mask;
|
||||||
if (info->vol[ch] == val)
|
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 direction, int idx, int mask, int val)
|
||||||
{
|
{
|
||||||
int ch, ret = 0;
|
int ch, ret = 0;
|
||||||
|
|
||||||
|
if (snd_BUG_ON(mask & ~0xff))
|
||||||
|
mask &= 0xff;
|
||||||
for (ch = 0; ch < 2; ch++)
|
for (ch = 0; ch < 2; ch++)
|
||||||
ret |= snd_hda_codec_amp_update(codec, nid, ch, direction,
|
ret |= snd_hda_codec_amp_update(codec, nid, ch, direction,
|
||||||
idx, mask, val);
|
idx, mask, val);
|
||||||
|
|
Loading…
Reference in New Issue