The patch titled usbtouchscreen: don't send interrupt urbs to bulk endpoints has been added to the -mm tree. Its filename is usbtouchscreen-dont-send-interrupt-urbs-to-bulk-endpoints.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://userweb.kernel.org/~akpm/stuff/added-to-mm.txt to find out what to do about this The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: usbtouchscreen: don't send interrupt urbs to bulk endpoints From: Ondrej Zary <linux@xxxxxxxxxxxxxxxxxxxx> Don't send interrupt urbs to bulk endpoints. This fixes EHCI corruption after rmmod with NEXIO touchscreen. Signed-off-by: Ondrej Zary <linux@xxxxxxxxxxxxxxxxxxxx> Cc: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx> Cc: Jim Persson <jim-linux@xxxxxxx> Cc: Florian Echtler <floe@xxxxxxxxxxxxxx> Cc: Dan Streetman <ddstreet@xxxxxxxx> Cc: Daniel Ritz <daniel.ritz@xxxxxx> Cc: Greg KH <greg@xxxxxxxxx> Cc: Oliver Neukum <oliver@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- drivers/input/touchscreen/usbtouchscreen.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff -puN drivers/input/touchscreen/usbtouchscreen.c~usbtouchscreen-dont-send-interrupt-urbs-to-bulk-endpoints drivers/input/touchscreen/usbtouchscreen.c --- a/drivers/input/touchscreen/usbtouchscreen.c~usbtouchscreen-dont-send-interrupt-urbs-to-bulk-endpoints +++ a/drivers/input/touchscreen/usbtouchscreen.c @@ -1375,10 +1375,16 @@ static int usbtouch_probe(struct usb_int input_set_abs_params(input_dev, ABS_PRESSURE, type->min_press, type->max_press, 0, 0); - usb_fill_int_urb(usbtouch->irq, udev, + if (usb_endpoint_type(endpoint) == USB_ENDPOINT_XFER_INT) + usb_fill_int_urb(usbtouch->irq, udev, usb_rcvintpipe(udev, endpoint->bEndpointAddress), usbtouch->data, type->rept_size, usbtouch_irq, usbtouch, endpoint->bInterval); + else + usb_fill_bulk_urb(usbtouch->irq, udev, + usb_rcvbulkpipe(udev, endpoint->bEndpointAddress), + usbtouch->data, type->rept_size, + usbtouch_irq, usbtouch); usbtouch->irq->dev = udev; usbtouch->irq->transfer_dma = usbtouch->data_dma; _ Patches currently in -mm which might be from linux@xxxxxxxxxxxxxxxxxxxx are origin.patch usbtouchscreen-convert-from-usb_device-to-usb_interface.patch usbtouchscreen-find-input-endpoint-automatically.patch usbtouchscreen-add-nexio-or-inexio-support.patch usbtouchscreen-fix-nexio-ack-and-usb-disconnect.patch usbtouchscreen-dont-send-interrupt-urbs-to-bulk-endpoints.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html