Re: [OKS] Module removal

Kai Germaschewski
2002-07-09T08:57:11Z

On Tue, 9 Jul 2002, Roman Zippel wrote:

> Who is changing the use count? How do you ensure that someone doesn't
> cache a reference past that magic sync point?
> IMO the real problem is that cleanup_module() can't fail. If modules
> already do proper data acounting, it's not too difficult to detect if
> there still exists a reference. In the driverfs example the problem is
> that remove_driver() returns void instead of int, so it can't fail.

I tend to see this differently: cleanup_module() cannot fail, but it can
sleep. So it's perfectly fine to deregister, wait until all references are
gone, clean up and return. So a kind of two-stage unregister is already
happening.

It's different in that it does use explicit refcounting, but
when the right interfaces are provided, the driver author doesn't need to
care - the author should just call pci_unregister/netdev_unregister/..,
that'll sleep until all references are gone (which also means no one will
use callbacks into the module anymore) and be done.

--Kai