From: Sarah Sharp <sarah.a.sharp@linux.intel.com>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: "Éric Piel" <E.A.B.Piel@tudelft.nl>, "Greg KH" <gregkh@suse.de>,
LKML <linux-kernel@vger.kernel.org>,
"Rafael J. Wysocki" <rjw@sisk.pl>,
stable@kernel.org
Subject: Re: Regression 3.0-rc5+ : khubd blocked
Date: Fri, 1 Jul 2011 09:12:53 -0700 [thread overview]
Message-ID: <20110701161253.GC5598@xanatos> (raw)
In-Reply-To: <Pine.LNX.4.44L0.1107011106380.1988-100000@iolanthe.rowland.org>
On Fri, Jul 01, 2011 at 11:21:50AM -0400, Alan Stern wrote:
> On Fri, 1 Jul 2011, Éric Piel wrote:
>
> > Hello,
> > I've come across to what looks like a regression in the kernel a
> > few commits after 3.0-rc5.
> >
> > When I turn off a usb hub, to which my mouse and keyboard are connected,
> > and then turn it on again, they are not detected again. After unplugging
> > it and waiting a few minutes I get a "task khubd:621 blocked for more
> > than 120 seconds."
> >
> > I haven't investigated much. It seems reproducible here on my x86_64
> > laptop. It doesn't seem to happen on a 3.0-rc4. Maybe important, my
> > kernel already has commit 2e34b429a404675dc4fc4ad2ee339eea028da3ca
> > "Merge branch 'usb-linus' of
> > git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6"
> >
> > Let me know if you need me to investigate more, or maybe there is
> > already a fix for that bug?
> >
> > Below is the whole message of the hung.
> >
> > Cheers,
> > Éric
> >
> >
> > Jul 1 14:08:16 dutifh kernel: INFO: task khubd:621 blocked for more than 120 seconds.
> > Jul 1 14:08:16 dutifh kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
> > Jul 1 14:08:16 dutifh kernel: khubd D ffff88013a30dfd8 0 621 2 0x00000000
> > Jul 1 14:08:16 dutifh kernel: ffff88013a30db00 0000000000000046 ffff88013a30da10 ffffffffa00dd852
> > Jul 1 14:08:16 dutifh kernel: ffff88013b954320 ffff88013a30dfd8 ffff88013a30dfd8 ffff88013a30dfd8
> > Jul 1 14:08:16 dutifh kernel: ffff88013b891660 ffff88013b954320 ffff8800bb0084c0 dead000000100100
> > Jul 1 14:08:16 dutifh kernel: Call Trace:
> > Jul 1 14:08:16 dutifh kernel: [<ffffffffa00dd852>] ? usb_hcd_giveback_urb+0x72/0xe0 [usbcore]
> > Jul 1 14:08:16 dutifh kernel: [<ffffffff8109e24f>] ? __rcu_read_unlock+0x2f/0x200
> > Jul 1 14:08:16 dutifh kernel: [<ffffffff81388634>] __mutex_lock_slowpath+0xf4/0x190
> > Jul 1 14:08:16 dutifh kernel: [<ffffffff8138806d>] mutex_lock+0x1d/0x40
> > Jul 1 14:08:16 dutifh kernel: [<ffffffffa00e1e22>] usb_set_interface+0x62/0x250 [usbcore]
> > Jul 1 14:08:16 dutifh kernel: [<ffffffffa00e3b9f>] usb_unbind_interface+0x10f/0x180 [usbcore]
> > Jul 1 14:08:16 dutifh kernel: [<ffffffff81269217>] __device_release_driver+0x77/0xd0
> > Jul 1 14:08:16 dutifh kernel: [<ffffffff81269297>] device_release_driver+0x27/0x40
> > Jul 1 14:08:16 dutifh kernel: [<ffffffff81268d83>] bus_remove_device+0x73/0xb0
> > Jul 1 14:08:16 dutifh kernel: [<ffffffff81266845>] device_del+0x125/0x1a0
> > Jul 1 14:08:16 dutifh kernel: [<ffffffffa00e192c>] usb_disable_device+0x7c/0x1a0 [usbcore]
> > Jul 1 14:08:16 dutifh kernel: [<ffffffffa00d9f80>] usb_disconnect+0xa0/0x140 [usbcore]
>
> It appears that this was caused by Sarah's commit
> fccf4e86200b8f5edd9a65da26f150e32ba79808 (USB: Free bandwidth when
> usb_disable_device is called). usb_disconnect() grabs the
> bandwidth_mutex before calling usb_disable_device(), which calls down
> indirectly to usb_set_interface(), which tries to acquire the
> bandwidth_mutex.
Ugh, yeah, and that patch was marked for stable. I haven't seen it go
by into the stable trees yet. Alan, can you mark your bug fix patch for
stable?
> This patch should fix the problem. Still, this whole area cries out
> for some serious rewriting.
Yes, it isn't pretty. Patches welcome. :)
Sarah Sharp
> Index: usb-3.0/drivers/usb/core/message.c
> ===================================================================
> --- usb-3.0.orig/drivers/usb/core/message.c
> +++ usb-3.0/drivers/usb/core/message.c
> @@ -1273,6 +1273,8 @@ int usb_set_interface(struct usb_device
> interface);
> return -EINVAL;
> }
> + if (iface->unregistering)
> + return -ENODEV;
>
> alt = usb_altnum_to_altsetting(iface, alternate);
> if (!alt) {
>
next prev parent reply other threads:[~2011-07-01 16:12 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-01 12:45 Regression 3.0-rc5+ : khubd blocked Éric Piel
2011-07-01 13:29 ` Greg KH
2011-07-01 15:21 ` Alan Stern
2011-07-01 15:41 ` Éric Piel
2011-07-01 16:12 ` Sarah Sharp [this message]
-- strict thread matches above, loose matches on Subject: below --
2011-07-01 16:20 Éric Piel
2011-07-01 17:19 ` Alan Stern
2011-07-01 20:08 ` Sarah Sharp
2011-07-01 20:40 ` Alan Stern
2011-07-01 20:53 ` Sarah Sharp
2011-07-01 22:05 ` Éric Piel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110701161253.GC5598@xanatos \
--to=sarah.a.sharp@linux.intel.com \
--cc=E.A.B.Piel@tudelft.nl \
--cc=gregkh@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=rjw@sisk.pl \
--cc=stable@kernel.org \
--cc=stern@rowland.harvard.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.