Re: SysFS 'module' params with CONFIG_MODULES=n

From: Jason Wessel
Date: Sat Nov 12 2005 - 14:50:02 EST


Greg KH wrote:
On Fri, Nov 11, 2005 at 08:32:20AM -0700, Tom Rini wrote:
On 2.6.14, and probably newer, a system where CONFIG_MODULES=n
/sys/module/foo/parameters/param fails:

# cat /sys/module/tcp_bic/parameters/low_window
cat: /sys/module/tcp_bic/parameters/low_window: Permission denied

But just changing MODULES to y:

# cat /sys/module/tcp_bic/parameters/low_window
14

Is this intentional or fixable? Just an observation right now, thanks.

Not intentional at all. Did this work before 2.6.14?

thanks,

greg k-h
I am not sure when it stopped working.

I recommend the attached patch to kernel/params.c All the work was done to setup the file and maintain the file handles but the access functions were zeroed out due to the #ifdef. Removing the #ifdef allows full access to all the parameters when CONFIG_MODULES=n.

signed off: Jason Wessel <jason.wessel@xxxxxxxxxxxxx>

Thanks,
Jason.




Index: linux-2.6.14/kernel/params.c
===================================================================
--- linux-2.6.14.orig/kernel/params.c 2005-11-11 08:40:03.456317256 -0800
+++ linux-2.6.14/kernel/params.c 2005-11-12 11:43:00.439765632 -0800
@@ -618,8 +618,6 @@ static void __init param_sysfs_builtin(v


/* module-related sysfs stuff */
-#ifdef CONFIG_MODULES
-
#define to_module_attr(n) container_of(n, struct module_attribute, attr);
#define to_module_kobject(n) container_of(n, struct module_kobject, kobj);

@@ -676,13 +674,6 @@ static struct sysfs_ops module_sysfs_ops
.store = module_attr_store,
};

-#else
-static struct sysfs_ops module_sysfs_ops = {
- .show = NULL,
- .store = NULL,
-};
-#endif
-
static struct kobj_type module_ktype = {
.sysfs_ops = &module_sysfs_ops,
};