[lkml]   [2007]   [May]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    SubjectRe: [BUG] usb/core/hub.c loops forever on resume from ram due to bluetooth
    Greg KH wrote:
    > Ok, I'll take a patch to keep the loop from going forever, but the main
    > issue here is that there is probably a hardware failure somewhere.

    Okay, found it. The root cause here was a missing CONFIG_USB_SUSPEND=y,
    which means the hci_usb device never got marked as USB_STATE_SUSPENDED,
    which then caused the loop to go on forever.

    The system works fine now with CONFIG_USB_SUSPEND=y in the .config.

    Here's the patch to prevent future lockups for this or other causes.
    I no longer need it, but it does still seem a good idea.

    Signed-off-by: Mark Lord <>

    --- old/drivers/usb/core/hub.c 2007-04-26 12:02:47.000000000 -0400
    +++ linux/drivers/usb/core/hub.c 2007-05-01 18:48:46.000000000 -0400
    @@ -403,9 +403,10 @@
    struct usb_hub *hub =
    container_of(work, struct usb_hub, tt.kevent);
    unsigned long flags;
    + int limit = 100;

    spin_lock_irqsave (&hub->tt.lock, flags);
    - while (!list_empty (&hub->tt.clear_list)) {
    + while (--limit && !list_empty (&hub->tt.clear_list)) {
    struct list_head *temp;
    struct usb_tt_clear *clear;
    struct usb_device *hdev = hub->hdev;
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at
     \ /
      Last update: 2007-05-15 01:51    [W:0.020 / U:11.004 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site