Messages in this thread | | | Date | Wed, 11 Nov 2009 12:11:00 -0800 (PST) | From | Linus Torvalds <> | Subject | Re: GPF in run_workqueue()/list_del_init(cwq->worklist.next) on resume (was: Re: Help needed: Resume problems in 2.6.32-rc, perhaps related to preempt_count leakage in keventd) |
| |
On Wed, 11 Nov 2009, Rafael J. Wysocki wrote: > > I applied the patch and this is the result of 'dmesg | grep ERR' after 10-or-so > consecutive suspend-resume and hibernate-resume cycles: > > [ 129.008689] ERR!! btusb_waker+0x0/0x27 [btusb] > [ 166.477373] ERR!! btusb_waker+0x0/0x27 [btusb] > [ 203.983665] ERR!! btusb_waker+0x0/0x27 [btusb] > [ 241.636547] ERR!! btusb_waker+0x0/0x27 [btusb] > > which kind of confirms my previous observation that the problem was not > reproducible without Bluetooth.
.. and that btusb thing matches my observation that only a few BT drivers seem to use workqueues, and btusb_disconnect() isn't doing any work cancel.
> I'm going to test the appended patch, then.
Hmm. the USB disconnect doesn't call hci_dev_put(), it calls hci_free_dev() and doesn't seem to call the ->destruct thing.
Although again, maybe that gets called indirectly.
So I'd put the cancel work in the actual disconnect routine. But maybe thar's just me.
Linus
| |