Re: [RFC] Suspicious bug in module refcounting

From: Russell King
Date: Wed Feb 04 2009 - 05:12:22 EST


On Wed, Feb 04, 2009 at 02:18:08PM +1030, Rusty Russell wrote:
> gameport.c, serio.c and input.c increment their own refcount, but to get
> into those init functions someone must be holding a refcount already (ie. a
> module depends on this module). Ditto cyber2000fb.c, and MTD.

Err, wrong. cyber2000fb.c does it in its module initialization function
to prevent the module (when built for Shark) from being unloaded. It
does this because it's from the days of 2.2 kernels and no one bothered
writing the module unload support for Shark. I'm certainly not in a
position to do that.

Since you can't unload a module while its initialization function is
running, so someone else must be holding a refcount (the insmod process).

I'm not saying that it's the right solution, I'm saying that this is how
it's evolved.

If someone has an idea on what to do about it then patches will be given
due consideration.

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of:
--
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/