-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi again,
Just in case it has any relevance, the way I get the oopses is by saying
"cat bigfile > /dev/usb/lp0" right after my printer has been turned off.
Then nothing happens for a while (maybe 10-30 seconds), until suddenly the
oops occurs. I wonder if the oops happens when the usb system figures out
that the printer has disappeared?
Thanks again for struggling with this one!
Anders
> This one was in my queue ... the refcounting should really
> be "while device is open", shouldn't it? (Anders reported
> later that this patch didn't solve the problem.)
>
> usblp_open and usblp_release should do the refcounts,
> not usblp_probe and usblp_disconnect. And I think a
> semaphore should probably protect access to the
> printer data structures in usblp_{read,write}. I seem
> to recall thinking I got this kind of locking right in the
> dc2xx code, thereby stopping very similar oopses in
> the middle of streaming bulk I/O (big jpg from camera,
> instead of big bitmap to printer). But it sure surprised
> me how long it took for that bug to get reported!
>
> - Dave
>
>
> ----- Original Message -----
> From: "Randy.Dunlap" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Cc: <[EMAIL PROTECTED]>
> Sent: Monday, February 12, 2001 5:31 PM
> Subject: Re: [linux-usb-devel] Bug report (2.4.1)
>
>
> > Hi Anders,
> >
> > Would you see if the attached patch helps prevent the oops
> > that you were seeing on removal of a USB printer while
> > printing?
> >
> > It adds reference counting to the USB printer driver.
> >
> > Thanks,
> > ~Randy
> >
> >
> > > > From: David Brownell [mailto:[EMAIL PROTECTED]]
> > > >
> > > > Anders Buch wrote:
> > > >
> > > > > I have a printer (Epson 980) connected to my USB port. If I turn my
> > > > > printer off and immediately after cat a large file to /dev/usb/lp0,
> > > > > then the kernel oops'es and locks up.
> > > >
> > > > Well, someone's got the refcount wrong on this device.
> > > > Either "printer.c"
> > > > or "usb-ohci.c", I'd have to look more to find out.
>
>
> --------------------------------------------------------------------------------
>
>
> > --- linux/drivers/usb/printer.c.org Thu Jan 4 13:15:32 2001
> > +++ linux/drivers/usb/printer.c Mon Feb 12 17:07:30 2001
> > @@ -1,5 +1,5 @@
> > /*
> > - * printer.c Version 0.6
> > + * printer.c Version 0.7
> > *
> > * Copyright (c) 1999 Michael Gee <[EMAIL PROTECTED]>
> > * Copyright (c) 1999 Pavel Machek <[EMAIL PROTECTED]>
> > @@ -17,6 +17,7 @@
> > * v0.4 - fixes in unidirectional mode
> > * v0.5 - add DEVICE_ID string support
> > * v0.6 - never time out
> > + * v0.7 - add refcnt-ing
> > */
> >
> > /*
> > @@ -550,6 +551,9 @@
> > FILL_BULK_URB(&usblp->readurb, dev, usb_rcvbulkpipe(dev,
>epread->bEndpointAddress),
> > buf + USBLP_BUF_SIZE, USBLP_BUF_SIZE, usblp_bulk, usblp);
> >
> > + /* Commit to using it; increment its refcnt. */
> > + usb_inc_dev_use(dev);
> > +
> > /* Get the device_id string if possible. FIXME: Could make this kmalloc(length).
>*/
> > err = usblp_get_id(usblp, 0, usblp->device_id_string, DEVICE_ID_SIZE - 1);
> > if (err >= 0) {
> > @@ -586,6 +590,7 @@
> > return;
> > }
> >
> > + usb_dec_dev_use(usblp->dev); /* decrement refcnt */
> > usblp->dev = NULL;
> >
> > usb_unlink_urb(&usblp->writeurb);
> >
>
Anders Skovsted Buch Phone: (617) 253-4399
MIT Room 2-275 Fax: (617) 253-4358
77 Massachusetts Ave E-mail: [EMAIL PROTECTED]
Cambridge, MA 02139 http://www-math.mit.edu/~abuch/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.2 (SunOS)
Comment: For info see http://www.gnupg.org
iD8DBQE6qjivWyfD6jrb5n4RAsm8AJ9hwJp4pzRlthJQhE54Kf7p2kwQPgCgiOXa
QlNDpHKBPedhHUBsYtt5TAg=
=iK+1
-----END PGP SIGNATURE-----
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
http://lists.sourceforge.net/lists/listinfo/linux-usb-devel