Re: [Patch -mm 3/3] RFC: Introduce kobject->owner for refcounting.

From: Cornelia Huck
Date: Tue Apr 17 2007 - 03:14:13 EST


On Tue, 17 Apr 2007 12:53:10 +1000,
Rusty Russell <rusty@xxxxxxxxxxxxxxx> wrote:

> On Mon, 2007-04-16 at 15:53 -0400, Alan Stern wrote:
> > The fundamental rule is that whenever you hand out a pointer to a routine
> > living in a module, the receiver has to increment the module's refcount.
> > But the driver core violates this rule all over the place.
>
> Hi Alan,
>
> Your rule is overly simplistic, unfortunately. You have two choices:
> take a reference count, *or* ensure that the reference will go away when
> the module's cleanup routine is called. Network drivers are a classic
> example of the latter.

Hm, but that's exactly the problem we face here. There is no race-free
way (at least, nobody could think about one yet) to make sure all
references are freed at exit time and simultaneously to make sure that
the release functions have finished before the module has been deleted.

>
> Note that you cannot do both: if the cleanup routine calls something
> which drops a reference count, it implies that the cleanup routine needs
> to be called with non-zero reference count, and it won't be (ignoring
> --force).

That's where that second reference count (the kref in the embedded
kobject in the module) comes into play, that doesn't prevent rmmod from
being run.
-
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/