Re: [PATCH 13/15] EDAC: kobject/sysfs fixes

From: Al Viro
Date: Thu Mar 02 2006 - 21:42:23 EST


On Thu, Mar 02, 2006 at 06:31:53PM -0800, Andrew Morton wrote:
> Dave Peterson <dsp@xxxxxxxx> wrote:
> >
> > - After we unregister a kobject, wait for our kobject release method
> > to call complete(). This causes us to wait until the kobject
> > reference count reaches 0. Otherwise, a task accessing the EDAC
> > sysfs interface can hold the reference count above 0 until after the
> > EDAC module has been unloaded. When the reference count finally
> > drops to 0, this will result in an attempt to call our release
> > method inside the EDAC module after the module has already been
> > unloaded.
>
> That's not really the way to do it. If you have all the correct
> module_get()s and try_module_get()s and module_put()s in all the right
> places, kenrel/module.c:wait_for_zero_refcount() should do this for you.

Fundamentally, you _can't_ wait for sysfs references to go away when
doing rmmod. You can fail with -EBUSY, but waiting is an instant deadlock.
Why? Because rmmod your_turd </sys/something_from_your_turd is going to
wait for itself to exit if you do that.
-
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/