Andrea Vettorello wrote:
On Fri, 24 Sep 2004 21:51:09 +0800, Uwe Dippel <[EMAIL PROTECTED]> wrote:
(today I'm kind of unlucky with the daily update, it seems: Thunderbird broke, XMMS broke and now:) After the update from 2.6.8-2 (??), but 2.6.8 in any case 2.6.8; the kernel freezes at isapnp. I tried three times (Power-Off); and then booted to 2.6.3; the install-kernel; without any problem.
I wonder if I'm the only one and should file a bug-report ?
I've experienced a freeze plugging/unplugging my usb printer with 2.6.8-2...
There is actually a bug in 2.6.8.1 that causes an OOPS when I switch off my USB printer
in 2.6.8.1 -- a bug that apparently already was there in 2.6.5 (or before).
Here's the patch that worked for me (and now apparently has been applied by Greg KH to
the kernel):
Below is the email with the patch in it:
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);
Andrea
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]