This is a note to let you know that I've just added the patch titled

     Subject: USB: fix locking loop by avoiding flush_scheduled_work

to my gregkh-2.6 tree.  Its filename is

     usb-fix-locking-loop-by-avoiding-flush_scheduled_work.patch

This tree can be found at 
    http://www.kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/patches/


>From [EMAIL PROTECTED] Tue Dec 11 13:02:30 2007
From: Alan Stern <[EMAIL PROTECTED]>
Date: Tue, 11 Dec 2007 16:02:23 -0500 (EST)
Subject: USB: fix locking loop by avoiding flush_scheduled_work
To: Greg KH <[EMAIL PROTECTED]>
Cc: David Brownell <[EMAIL PROTECTED]>, USB list <linux-usb@vger.kernel.org>, 
USB development list <[EMAIL PROTECTED]>
Message-ID: <[EMAIL PROTECTED]>


This patch (as1027) replaces a call to flush_scheduled_work() -- a
dangerous routine to invoke, especially while holding any sort of lock
-- with calls to cancel_work_sync() and cancel_delayed_work_sync().

This fixes Bugzilla #9532.

Signed-off-by: Alan Stern <[EMAIL PROTECTED]>
CC: David Brownell <[EMAIL PROTECTED]>
Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>

---
 drivers/usb/core/hub.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -529,9 +529,9 @@ static void hub_quiesce(struct usb_hub *
        /* (blocking) stop khubd and related activity */
        usb_kill_urb(hub->urb);
        if (hub->has_indicators)
-               cancel_delayed_work(&hub->leds);
-       if (hub->has_indicators || hub->tt.hub)
-               flush_scheduled_work();
+               cancel_delayed_work_sync(&hub->leds);
+       if (hub->tt.hub)
+               cancel_work_sync(&hub->tt.kevent);
 }
 
 static void hub_activate(struct usb_hub *hub)


Patches currently in gregkh-2.6 which might be from [EMAIL PROTECTED] are

driver/pm-acquire-device-locks-prior-to-suspending.patch
driver/kobject-drop-child-parent-ref-at-unregistration.patch
driver/driver-core-fix-race-in-__device_release_driver.patch
driver/driver-core-fix-class-glue-dir-cleanup-logic.patch
usb/usb-storage-fix-devices-that-cannot-handle-32k-transfers.patch
usb/usb-usb-storage-new-lockable-subclass-0x07.patch
usb/usb-fix-locking-loop-by-avoiding-flush_scheduled_work.patch
usb/usb-usb-mon-mon_bin.c-cleanups.patch
usb/usb-revert-portions-of-unusual_dev-sync-up-some-reported-devices-from-ubuntu.patch
usb/usb-use-irqf_disabled-for-hcd-interrupt-handlers.patch
usb/usb-autosuspend-for-cdc-acm.patch
usb/usb-don-t-change-hc-power-state-for-a-freeze.patch
usb/usb-dummy_hcd-don-t-register-drivers-on-the-platform-bus.patch
usb/usb-force-handover-port-to-companion-when-hub_port_connect_change-fails.patch
usb/usb-make-ksuspend_usbd-thread-non-freezable.patch
-
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to