Re: [PATCH] EDAC: core EDAC support code

Greg KH
2006-03-07T17:04:19Z

On Tue, Mar 07, 2006 at 08:47:44AM -0800, Dave Peterson wrote:
> On Monday 06 March 2006 13:32, Al Viro wrote:
> > On Mon, Mar 06, 2006 at 01:01:37PM -0800, Dave Peterson wrote:
> > > Regarding the above problem with the kobject reference count, this
> > > was recently fixed in the -mm tree (see edac-kobject-sysfs-fixes.patch
> > > in 2.6.16-rc5-mm2). The fix I implemented was to add a call to
> > > complete() in edac_memctrl_master_release() and then have the module
> > > cleanup code wait for the completion. I think there were a few other
> > > instances of this type of problem that I also fixed in the
> > > above-mentioned patch.
> >
> > This is not a fix, this is a goddamn deadlock.
> > rmmod your_turd </sys/spew/from/your_turd
> > and there you go. rmmod can _NOT_ wait for sysfs references to go away.
>
> Ok, how does this sound:
>
> - Modify EDAC so it uses kmalloc() to create the kobject.
> - Eliminate edac_memctrl_master_release(). Instead, use kfree() as
> the release method for the kobject. Here, it's important to use a
> function -outside- of EDAC as the release method since the core
> EDAC module may have been unloaded by the time the release method
> is called.

No, if this happens then you are using the kobject incorrectly. How
could it be held if your module is unloaded? Don't you have the module
reference counting logic correct?

> - Make similar modifications to the other places in EDAC where
> kobjects are used.

Yes.

> At least this will keep the module unload operation from blocking
> in the module cleanup function due to a nonzero kobject reference
> count. I'm going to be away from my keyboard for most of the rest of
> today. However, if there is general agreement that this is a
> reasonable way to proceed, I'll make a patch that implements this
> tomorrow.

It's a good start :)

thanks,

greg k-h