Re: [BUG] object: is not initialized, yet kobject_put() is being called
From: Markus Trippelsdorf <hidden>
Date: 2010-08-12 13:04:18
Also in:
lkml
On Thu, Aug 12, 2010 at 02:57:57PM +0200, Jiri Kosina wrote:
On Thu, 12 Aug 2010, Jiri Kosina wrote:quoted
quoted
quoted
quoted
quoted
quoted
quoted
Guys, could you please send me your .config with which you are experiencing the problem, so that I can try to reproduce it with it?Attached.So I had to add support for HW of mine (SATA_VIA, PATA_VIA, disabled the radeon firmware stuff, and, most importantly, enabled UHCI, which is what is on machine I am using now for testing), and disconnect-connect cycle works nicely: usb 3-2: USB disconnect, address 3 usb 3-2: new low speed USB device using uhci_hcd and address 4 input: mouse USB mouse with wheel as /devices/pci0000:00/0000:00:10.1/usb3/3-2/3-2:1.0/input/input6 generic-usb 0003:05B8:3091.0004: input,hidraw0: USB HID v1.10 Mouse [mouse USB mouse with wheel] on usb-0000:00:10.1-2/input0 input: mouse USB mouse with wheel as /devices/pci0000:00/0000:00:10.1/usb3/3-2/3-2:1.1/input/input7 generic-usb 0003:05B8:3091.0005: input,hidraw1: USB HID v1.10 Keyboard [mouse USB mouse with wheel] on usb-0000:00:10.1-2/input1 so still no BUG from kobject refcounting, and the hidraw numbers are the same. The major difference seems to be that I am using UHCI and you have your HID devices connected through OHCI, is that correct?Correct. And I should add that it very easy to reproduce here; just disconnecting the usb receiver triggers the WARNING.Disabling USB_HIDDEV in my .config solves the problem (there is no WARNING anymore when disconnecting the receiver).Reverting bd25f4dd6972755579d0ea50d1a5ace2e9b00d1a with USB_HIDDEV enabled also solves the problem. So there must be a bug in that patch: commit bd25f4dd6972755579d0ea50d1a5ace2e9b00d1a Author: Arnd Bergmann [off-list ref] Date: Sun Jul 11 15:34:05 2010 +0200 HID: hiddev: use usb_find_interface, get rid of BKL This removes the private hiddev_table in the usbhid driver and changes it to use usb_find_interface instead. The advantage is that we can avoid the race between usb_register_dev and usb_open and no longer need the big kernel lock. This doesn't introduce race condition -- the intf pointer could be invalidated only in hiddev_disconnect() through usb_deregister_dev(), but that will block on minor_rwsem and not actually remove the device until usb_open(). Signed-off-by: Arnd Bergmann [off-list ref] Cc: Jiri Kosina [off-list ref] Cc: "Greg Kroah-Hartman" [off-list ref] Signed-off-by: Jiri Kosina [off-list ref]Thanks, I had my suspicion about this commit (that's why I asked to you verify with CONFIG_USB_HIDDEV turned off as well). Adding Arnd to CC and will look into it myself as well soon. Arnd, the complete thread can be found at http://lkml.org/lkml/2010/8/10/280Could please those of you, who are able to reproduce the problem, verify whether the patch below (completely untested) makes everything behave again? Thanks.
Yes, everything behaves again. Thanks Jiri. -- »A man who doesn't know he is in prison can never escape.« William S. Burroughs