ChangeSet 1.1673.8.46, 2004/03/30 08:55:44-08:00, [EMAIL PROTECTED]

[PATCH] USB: ohci unlink tweaks

Minor unlink tweaks, including a case where SMP could oops
if it were abused, as if from 'usbtest' or 'stir4200'.


 drivers/usb/host/ohci-hcd.c |    2 +-
 drivers/usb/host/ohci-q.c   |    8 +++++---
 2 files changed, 6 insertions(+), 4 deletions(-)


diff -Nru a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
--- a/drivers/usb/host/ohci-hcd.c       Wed Apr 14 14:36:19 2004
+++ b/drivers/usb/host/ohci-hcd.c       Wed Apr 14 14:36:19 2004
@@ -233,7 +233,7 @@
        spin_lock (&urb->lock);
        if (urb->status != -EINPROGRESS) {
                spin_unlock (&urb->lock);
-
+               urb->hcpriv = urb_priv;
                finish_urb (ohci, urb, 0);
                retval = 0;
                goto fail;
diff -Nru a/drivers/usb/host/ohci-q.c b/drivers/usb/host/ohci-q.c
--- a/drivers/usb/host/ohci-q.c Wed Apr 14 14:36:19 2004
+++ b/drivers/usb/host/ohci-q.c Wed Apr 14 14:36:19 2004
@@ -1073,10 +1073,12 @@
                        finish_urb (ohci, urb, regs);
 
                /* clean schedule:  unlink EDs that are no longer busy */
-               if (list_empty (&ed->td_list) && ed->state == ED_OPER)
-                       start_ed_unlink (ohci, ed);
+               if (list_empty (&ed->td_list)) {
+                       if (ed->state == ED_OPER)
+                               start_ed_unlink (ohci, ed);
+
                /* ... reenabling halted EDs only after fault cleanup */
-               else if ((ed->hwINFO & (ED_SKIP | ED_DEQUEUE)) == ED_SKIP) {
+               } else if ((ed->hwINFO & (ED_SKIP | ED_DEQUEUE)) == ED_SKIP) {
                        td = list_entry (ed->td_list.next, struct td, td_list);
                        if (!(td->hwINFO & TD_DONE)) {
                                ed->hwINFO &= ~ED_SKIP;



-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id70&alloc_id638&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to