[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] xhci: check return value from usb_packet_map
From: |
Gerd Hoffmann |
Subject: |
Re: [PATCH] xhci: check return value from usb_packet_map |
Date: |
Tue, 1 Sep 2020 07:27:08 +0200 |
On Tue, Sep 01, 2020 at 10:19:26AM +0530, P J P wrote:
> +-- On Sun, 30 Aug 2020, Alexander Bulekov wrote --+
> | I think there is already a fix queued for this one:
> | https://www.mail-archive.com/qemu-devel@nongnu.org/msg734424.html
>
> Yes, it looks similar.
>
> | > @@ -1615,7 +1615,14 @@ static int xhci_setup_packet(XHCITransfer *xfer)
> | > xhci_xfer_create_sgl(xfer, dir == USB_TOKEN_IN); /* Also sets
> int_req */
> | > usb_packet_setup(&xfer->packet, dir, ep, xfer->streamid,
> | > xfer->trbs[0].addr, false, xfer->int_req);
> | > - usb_packet_map(&xfer->packet, &xfer->sgl);
> | > + if (usb_packet_map(&xfer->packet, &xfer->sgl) < 0) {
> | > + DPRINTF("xhci: setup packet failed: pid: 0x%x addr %d ep %d\n",
> | > + xfer->packet.pid, ep->dev->addr, ep->nr);
> | > + usb_packet_cleanup(&xfer->packet);
> | > + qemu_sglist_destroy(&xfer->sgl);
> | > + return -1;
>
> We don't need 'usb_packet_cleanup' call? (to confirm)
Oh, didn't notice the difference. I think we need it, otherwise we leak
iov entries in case the packet has multiple segments and only the second
(or any later) fails to map.
take care,
Gerd