Re: kobject: delayed kobject release: help find buggy drivers
From: Rusty Russell
Date: Wed Sep 04 2013 - 01:36:55 EST
Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> writes:
> On Tue, Sep 03, 2013 at 04:44:42PM -0400, Dave Jones wrote:
>> On Tue, Sep 03, 2013 at 06:59:24PM +0000, Linux Kernel wrote:
>> > Gitweb: http://git.kernel.org/linus/;a=commit;h=c817a67ecba7c3c2aaa104796d78f160af60920d
>> > Commit: c817a67ecba7c3c2aaa104796d78f160af60920d
>> > Parent: 7c42721fe0c58a848849b43ff558cf2fb86aa35a
>> > Author: Russell King <rmk+kernel@xxxxxxxxxxxxxxxx>
>> > AuthorDate: Thu Jun 27 15:06:14 2013 +0100
>> > Committer: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
>> > CommitDate: Thu Jul 25 15:39:04 2013 -0700
>> >
>> > kobject: delayed kobject release: help find buggy drivers
>> >
>> > Implement debugging for kobject release functions. kobjects are
>> > reference counted, so the drop of the last reference to them is not
>> > predictable. However, the common case is for the last reference to be
>> > the kobject's removal from a subsystem, which results in the release
>> > function being immediately called.
>> >
>> > This can hide subtle bugs, which can occur when another thread holds a
>> > reference to the kobject at the same time that a kobject is removed.
>> > This results in the release method being delayed.
>> >
>> > In order to make these kinds of problems more visible, the following
>> > patch implements a delayed release; this has the effect that the
>> > release function will be out of order with respect to the removal of
>> > the kobject in the same manner that it would be if a reference was
>> > being held.
>> >
>> > This provides us with an easy way to allow driver writers to debug
>> > their drivers and fix otherwise hidden problems.
>> >
>> > Signed-off-by: Russell King <rmk+kernel@xxxxxxxxxxxxxxxx>
>> > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
>>
>> With this enabled, I get a bunch of scrolling oopses immediately after
>> exiting the bootloader. It happens so early I can't even capture them
>> over usb-serial, or earlyprintk=dbgp.
>>
>> And for whatever reason, the printk path while oopsing ignores boot_delay parameter,
>> so I can't even use that.
>>
>> any ideas ?
>
> The first big bug found with this was with the module kobject code, and
> a fix for that should be going in through Rusty's tree to Linus for this
> merge window (right Rusty?)
Yep, just sent pull request. The fix was the final commit there...
Cheers,
Rusty.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/