PERFORCE change 161961 for review
Andrew Thompson
thompsa at FreeBSD.org
Tue May 12 14:46:00 UTC 2009
On Tue, May 12, 2009 at 06:39:53AM +0000, Hans Petter Selasky wrote:
> http://perforce.freebsd.org/chv.cgi?CH=161961
>
> Change 161961 by hselasky at hselasky_laptop001 on 2009/05/12 06:38:57
>
>
> USB CORE:
> - Cancelled error code must be returned in special
> case, else device drivers might end up in infinite loop.
> - The special case code was introduced by a recent commit.
>
> Bug report by: Andrey <andrey.kosachenko at gmail.com>
>
> Affected files ...
>
> .. //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#144 edit
>
> Differences ...
>
> ==== //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#144 (text+ko) ====
>
> @@ -1439,7 +1439,11 @@
> /* Check if the device is still alive */
> if (info->udev->state < USB_STATE_POWERED) {
> USB_BUS_LOCK(bus);
> - usb2_transfer_done(xfer, USB_ERR_NOT_CONFIGURED);
> + /*
> + * Must return cancelled error code else
> + * device drivers can hang.
> + */
> + usb2_transfer_done(xfer, USB_ERR_CANCELLED);
> USB_BUS_UNLOCK(bus);
> return;
> }
I rather think this is a bug in the drivers, they blindly resubmit the
transfer without knowing if the error is restartable.
Andew
More information about the p4-projects
mailing list