Hi,

Oliver Neukum:
> the option driver does not directly use usb_kill_urb(). It uses a wrapper.
> This wrapper means that callbacks which are running are not killed during
> close, resubmitting and illicitly pushing data into the tty layer.
> The whole purpose of usb_kill_urb() is subverted. The wrapper must be
> removed.
> 
Umm, I don't recall off-hand whether urb can ever be NULL, e.g. due to
allocation problems. Did you verify that it cannot?

Otherwise I'd use this patch instead.

Signed-Off-By: Matthias Urlichs <[EMAIL PROTECTED]>
---

+++ linux-2.6.21-rc4/drivers/usb/serial/option.c        2007-03-20 
13:33:16.000000000 +0100
@@ -580,12 +580,11 @@
        return (0);
 }
 
 static inline void stop_urb(struct urb *urb)
 {
-       if (urb && urb->status == -EINPROGRESS)
-               usb_kill_urb(urb);
+       if (urb) usb_kill_urb(urb);
 }
 
 static void option_close(struct usb_serial_port *port, struct file *filp)
 {
        int i;


-- 
Matthias Urlichs   |   {M:U} IT Design @ m-u-it.de   |  [EMAIL PROTECTED]
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
 - -
Mister Teatime had a truly brilliant mind, but it was brilliant like a 
fractured mirror, all marvellous facets and rainbows but, ultimately, also 
something that was broken.
                -- Terry Pratchett (Hogfather)

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to