diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2006-05-12 12:08:10 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-05-12 12:08:10 -0700 |
commit | 6959249171ed531e3238721562bc8204004e5cd7 (patch) | |
tree | 8e1889f47510407c9df9f211e7746981981cbbbc /usb | |
parent | 6fbc08c96071b6de8e4fd0a447ea9425c8c32cbf (diff) | |
download | patches-6959249171ed531e3238721562bc8204004e5cd7.tar.gz |
put omninet in usb dir
Diffstat (limited to 'usb')
-rw-r--r-- | usb/omninet.patch | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/usb/omninet.patch b/usb/omninet.patch new file mode 100644 index 00000000000000..e860d2d8a4749b --- /dev/null +++ b/usb/omninet.patch @@ -0,0 +1,52 @@ +From foo@baz Tue Apr 9 12:12:43 2002 +Date: Tue, 2 May 2006 08:44:45 +0200 +To: Greg KH <greg@kroah.com> +From: Greg Kroah-Hartman <gregkh@suse.de> +Subject: USB: fix omninet driver bug + +I introduced this way back in 2.6.13 when adding the port lock logic. +This device talks out through different "ports" all at the same time, so +the lock logic was wrong, preventing any data from ever being sent +properly. + +Thanks a lot to Bernhard Reiter <bernhard@intevation.de> for being +patient and helping with debugging this. + +Cc: Bernhard Reiter <bernhard@intevation.de> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/serial/omninet.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +--- gregkh-2.6.orig/drivers/usb/serial/omninet.c ++++ gregkh-2.6/drivers/usb/serial/omninet.c +@@ -257,14 +257,14 @@ static int omninet_write (struct usb_ser + return (0); + } + +- spin_lock(&port->lock); +- if (port->write_urb_busy) { +- spin_unlock(&port->lock); ++ spin_lock(&wport->lock); ++ if (wport->write_urb_busy) { ++ spin_unlock(&wport->lock); + dbg("%s - already writing", __FUNCTION__); + return 0; + } +- port->write_urb_busy = 1; +- spin_unlock(&port->lock); ++ wport->write_urb_busy = 1; ++ spin_unlock(&wport->lock); + + count = (count > OMNINET_BULKOUTSIZE) ? OMNINET_BULKOUTSIZE : count; + +@@ -283,7 +283,7 @@ static int omninet_write (struct usb_ser + wport->write_urb->dev = serial->dev; + result = usb_submit_urb(wport->write_urb, GFP_ATOMIC); + if (result) { +- port->write_urb_busy = 0; ++ wport->write_urb_busy = 0; + err("%s - failed submitting write urb, error %d", __FUNCTION__, result); + } else + result = count; |