Re: [PATCH] EDAC: core EDAC support code

Al Viro
2006-03-07T11:09:00Z

On Tue, Mar 07, 2006 at 02:41:13AM -0800, Andrew Morton wrote:
> Al Viro <viro@ftp.linux.org.uk> wrote:
> >
> > On Mon, Mar 06, 2006 at 01:53:44PM -0800, Greg KH wrote:
> > > > rmmod your_turd </sys/spew/from/your_turd
> > > > and there you go. rmmod can _NOT_ wait for sysfs references to go away.
> > >
> > > To be fair, the only part of the kernel that supports the above process,
> > > is the network stack. And they implemented a special kind of lock to
> > > handle just this kind of thing.
> > >
> > > That is not something that I want the rest of the kernel to have to use.
> > > If your code blocks when doing the above thing, that's fine with me.
> >
> > One word: fail. With -EBUSY.
>
> It seems quite simple to make wait_for_zero_refcount() interruptible?
> Something like...

That's something we need to do anyway, but here it's not a matter of removal
blocking on module refcount:

| 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.

and that is clearly broken. Moreover, unlike having rmmod -w interruptible
(which is obviously a very good idea), here we would be in the middle of
cleanup sequence and it would be too late to back off if interrupted.