Without this patch, usb-uhci oopses after ALSA 1.0's snd-usb-audio has
asynchronously unlinked its URBs. Apparently, the code for handling
still-active TDs forgets to check whether the TD actually must be
unlinked.


--- linux-2.4.23-rc1/drivers/usb/host/usb-uhci.c.orig   Sun Nov 23 00:11:22 2003
+++ linux-2.4.23-rc1/drivers/usb/host/usb-uhci.c        Sun Nov 23 01:23:45 2003
@@ -2554,13 +2554,14 @@
                if (is_td_active(desc)) {
                        // means we have completed the last TD, but not the TDs before
                        desc->hw.td.status &= cpu_to_le32(~TD_CTRL_ACTIVE);
                        dbg("TD still active (%x)- grrr. paranoia!", 
le32_to_cpu(desc->hw.td.status));
                        ret = -EXDEV;
                        urb->iso_frame_desc[i].status = ret;
-                       unlink_td (s, desc, 1);
+                       if (mode == PROCESS_ISO_REGULAR)
+                               unlink_td (s, desc, 1);
                        // FIXME: immediate deletion may be dangerous
                        goto err;
                }

                if (mode == PROCESS_ISO_REGULAR)
                        unlink_td (s, desc, 1);




-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?  SHARE THE LOVE, and help us help
YOU!  Click Here: http://sourceforge.net/donate/
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel

Reply via email to