Re: sysfs-related oops during module unload (2.6.16-rc2)

Greg KH
2006-02-11T22:46:01Z

On Sat, Feb 11, 2006 at 04:03:53PM -0600, Nathan Lynch wrote:
> If the refcnt attribute of a module is open when the module is
> unloaded, we get an oops when the file is closed. I used ide_cd for
> this report but I don't think the oops is caused by the driver itself.
> This bug seems to be restricted to the /sys/module hierarchy; it
> doesn't happen with /sys/class etc.
>
> I suspect it's an extra put or a missing get somewhere, but the fix
> isn't obvious to me after looking at it for a little while, so I'm
> punting.
>
> I'm pretty sure this happens with 2.6.15; I can double-check if
> needed.

Ugh, we aren't setting the owner of these fields properly, good catch.

Does the patch below (built tested only), solve this for you?

thanks,

greg k-h

-----------------

kernel/module.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

--- gregkh-2.6.orig/kernel/module.c 2006-01-17 08:27:49.000000000 -0800
+++ gregkh-2.6/kernel/module.c 2006-02-11 14:44:19.000000000 -0800
@@ -1085,8 +1085,10 @@

for (i = 0; (attr = modinfo_attrs[i]) && !error; i++) {
if (!attr->test ||
- (attr->test && attr->test(mod)))
+ (attr->test && attr->test(mod))) {
+ attr->attr.owner = mod;
error = sysfs_create_file(&mod->mkobj.kobj,&attr->attr);
+ }
}
return error;
}