audio: intel-hda: check stream entry count during transfer
Intel HDA emulator uses stream of buffers during DMA data transfers. Each entry has buffer length and buffer pointer position, which are used to derive bytes to 'copy'. If this length and buffer pointer were to be same, 'copy' could be set to zero(0), leading to an infinite loop. Add check to avoid it. Reported-by: Huawei PSIRT <psirt@huawei.com> Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Message-id: 1476949224-6865-1-git-send-email-ppandit@redhat.com Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
committed by
Gerd Hoffmann
parent
ede0cbeb78
commit
e02b54e4f9
@@ -416,7 +416,8 @@ static bool intel_hda_xfer(HDACodecDevice *dev, uint32_t stnr, bool output,
|
|||||||
}
|
}
|
||||||
|
|
||||||
left = len;
|
left = len;
|
||||||
while (left > 0) {
|
s = st->bentries;
|
||||||
|
while (left > 0 && s-- > 0) {
|
||||||
copy = left;
|
copy = left;
|
||||||
if (copy > st->bsize - st->lpib)
|
if (copy > st->bsize - st->lpib)
|
||||||
copy = st->bsize - st->lpib;
|
copy = st->bsize - st->lpib;
|
||||||
|
|||||||
Reference in New Issue
Block a user