提交 a4e7a121 编写于 作者: T Takashi Iwai

ALSA: hda - Fix possible zero-division

Check the TLV db scale result before actually dividing in vmaster
slave init code.  Also mask TLV_DB_SCALE_MUTE bit so that the right
value is obtained even if this bit is set by the codec driver.
Signed-off-by: NTakashi Iwai <tiwai@suse.de>
上级 504333df
......@@ -2676,8 +2676,13 @@ static int get_kctl_0dB_offset(struct snd_kcontrol *kctl)
set_fs(fs);
} else if (kctl->vd[0].access & SNDRV_CTL_ELEM_ACCESS_TLV_READ)
tlv = kctl->tlv.p;
if (tlv && tlv[0] == SNDRV_CTL_TLVT_DB_SCALE)
val = -tlv[2] / tlv[3];
if (tlv && tlv[0] == SNDRV_CTL_TLVT_DB_SCALE) {
int step = tlv[3];
step &= ~TLV_DB_SCALE_MUTE;
if (!step)
return -1;
val = -tlv[2] / step;
}
return val;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册