Vojtech:
This bug was reported back in July, and I sent out a patch but apparently
it never got to you. The usblp driver was calling usb_buffer_free() from
usblp_cleanup(), which runs after disconnect() if a user process holds the
device open. But once the usb_device is gone usb_buffer_free() will
oops. The patch frees the buffers in usb_disconnect() instead.
Recently Joost Witteveen reported the same oops and found that the
patch solved it for him. So there shouldn't be problems with accepting
it.
Alan Stern
Signed-off-by: Alan Stern <[EMAIL PROTECTED]>
===== drivers/usb/class/usblp.c 1.108 vs edited =====
--- 1.108/drivers/usb/class/usblp.c 2004-09-09 05:24:11 -04:00
+++ edited/drivers/usb/class/usblp.c 2004-09-20 14:33:03 -04:00
@@ -397,10 +397,6 @@
{
info("usblp%d: removed", usblp->minor);
- usb_buffer_free (usblp->dev, USBLP_BUF_SIZE,
- usblp->writebuf, usblp->writeurb->transfer_dma);
- usb_buffer_free (usblp->dev, USBLP_BUF_SIZE,
- usblp->readbuf, usblp->readurb->transfer_dma);
kfree (usblp->device_id_string);
kfree (usblp->statusbuf);
usb_free_urb(usblp->writeurb);
@@ -1159,6 +1155,10 @@
usb_set_intfdata (intf, NULL);
usblp_unlink_urbs(usblp);
+ usb_buffer_free (usblp->dev, USBLP_BUF_SIZE,
+ usblp->writebuf, usblp->writeurb->transfer_dma);
+ usb_buffer_free (usblp->dev, USBLP_BUF_SIZE,
+ usblp->readbuf, usblp->readurb->transfer_dma);
if (!usblp->used)
usblp_cleanup (usblp);
-------------------------------------------------------
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM.
Deadline: Sept. 24. Go here: http://sf.net/ppc_contest.php
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel