On Wed, Mar 11, 2009 at 03:10:15PM -0400, Alan Stern wrote: > On Wed, 11 Mar 2009, Leonid wrote: > > > Hi all, > > > > There seems to have been a bug introduced in the recent > > kernels relating to usbdevfs syscalls. > > > > My application is constantly submitting and reaping URBs > > using the USBDEVFS ioctls. In recent kernels, if I > > disconnect the device while the application is in the > > USBDEVFS_REAPURB ioctl call, ioctl never returns, causing > > the application to freeze. At this point, dmesg shows the > > kernel has detected the disconnect. If I then background > > the application and return it to the foreground, the ioctl > > returns with errno = EINTR and subsequent calls to ioctl > > properly return with errno = ENODEV. > > > > Since the libusb library uses the USBDEVFS_REAPURB ioctl call > > inside the usb_bulk_read and usb_bulk_write functions, this > > particular issue should be of general interest as well. > > I am able to reproduce this behavior on kernels 2.6.23.1, > > 2.6.26.8, and 2.6.28.5. > > > > If I disconnect the device when running kernel 2.6.20, the > > USBDEVFS_REAPURB ioctl never gets stuck in the manner > > described above. Unfortunately, due to a lack of time, I am > > unable to determine the first kernel version that introduces > > this bug. > > > > I was wondering if any one is aware of the bug, or has any > > idea why this is happening in the newer kernels? > > A patch to fix this problem is here: > > http://marc.info/?l=linux-usb&m=123662065119759&w=2 And it should show up in the next .27 and .28 releases as well, if I get the patches to Linus soon... thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html