Skip to contentSkip to conversation

module's parameters could not be set via sysfs in 2.6.11-rc1?

PATCH In review Sergey S. Kostyliov 3 participants 6 messages Jan 13, 2005 – Jan 25, 2005

lore
Share & tools
lore
#0 lore raw

Hello,

It looks like module parameters are not setable via sysfs in 2.6.11-rc1

E.g.
arise parameters # echo -en Y > /sys/module/usbcore/parameters/old_scheme_first
-bash: /sys/module/usbcore/parameters/old_scheme_first: Permission denied
arise parameters # id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video) arise parameters #
arise parameters # ls -la /sys/module/usbcore/parameters/old_scheme_first
-rw-r--r-- 1 root root 0 Jan 13 22:22 /sys/module/usbcore/parameters/old_scheme_first
arise parameters #

This is sad because it seems that my usb flash stick (transcebd jetflash) doesn't like new USB device initialization scheme introduced in 2.6.10.

Signature · 2 lines
Sergey S. Kostyliov <[email protected]>
Jabber ID: [email protected]
#1 lore raw
Quoted 14 lines · Sergey S. Kostyliov

Hello,

It looks like module parameters are not setable via sysfs in 2.6.11-rc1

E.g.
arise parameters # echo -en Y > /sys/module/usbcore/parameters/old_scheme_first
-bash: /sys/module/usbcore/parameters/old_scheme_first: Permission denied
arise parameters # id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video) arise parameters #
arise parameters # ls -la /sys/module/usbcore/parameters/old_scheme_first
-rw-r--r-- 1 root root 0 Jan 13 22:22 /sys/module/usbcore/parameters/old_scheme_first
arise parameters #

Quoted 2 lines

This is sad because it seems that my usb flash stick (transcebd jetflash) doesn't like new USB device initialization scheme introduced in 2.6.10.

I'm seeing the same problem here. I'll dig into it later tonight.

thanks,

greg k-h

#2 lore raw

Hi Greg,

Quoted 12 lines
Quoted 12 lines

It looks like module parameters are not setable via sysfs in 2.6.11-rc1

E.g.
arise parameters # echo -en Y > /sys/module/usbcore/parameters/old_scheme_first
-bash: /sys/module/usbcore/parameters/old_scheme_first: Permission denied
arise parameters # id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video) arise parameters #
arise parameters # ls -la /sys/module/usbcore/parameters/old_scheme_first
-rw-r--r-- 1 root root 0 Jan 13 22:22 /sys/module/usbcore/parameters/old_scheme_first
arise parameters #

Quoted 4 lines
Quoted 2 lines

This is sad because it seems that my usb flash stick (transcebd jetflash) doesn't like new USB device initialization scheme introduced in 2.6.10.

I'm seeing the same problem here. I'll dig into it later tonight.

any updates on this? It still results in a permission denied with a recent 2.6.11-rc2 kernel.

Regards

Marcel

#3 lore raw

PATCH 1/1 Modules: Allow sysfs module paramaters to be written to.

Quoted 14 lines · Marcel Holtmann

Hi Greg,

Quoted 12 lines
Quoted 12 lines

It looks like module parameters are not setable via sysfs in 2.6.11-rc1

E.g.
arise parameters # echo -en Y > /sys/module/usbcore/parameters/old_scheme_first
-bash: /sys/module/usbcore/parameters/old_scheme_first: Permission denied
arise parameters # id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video) arise parameters #
arise parameters # ls -la /sys/module/usbcore/parameters/old_scheme_first
-rw-r--r-- 1 root root 0 Jan 13 22:22 /sys/module/usbcore/parameters/old_scheme_first
arise parameters #

Quoted 7 lines
Quoted 4 lines
Quoted 2 lines

This is sad because it seems that my usb flash stick (transcebd jetflash) doesn't like new USB device initialization scheme introduced in 2.6.10.

I'm seeing the same problem here. I'll dig into it later tonight.

any updates on this? It still results in a permission denied with a recent 2.6.11-rc2 kernel.

Here's a patch that fixes this for me. It's as if the function was never implemented at all for some reason. Sorry for not catching this when tj's patches went in that changed all of this logic.

Let me know if this fixes the problem for you or not.

thanks,

greg k-h

-----
Modules: Allow sysfs module paramaters to be written to.

Fixes a bug in the current tree preventing the sysfs module paramaters from being able to be changed at all from userspace. It's as if someone just forgot to write this function...

kernel/params.c +25 -1
diff -Nru a/kernel/params.c b/kernel/params.c
@@ -640,9 +640,33 @@
 	return ret;
 }
 
+static ssize_t module_attr_store(struct kobject *kobj,
+				struct attribute *attr,
+				const char *buf, size_t len)
+{
+	struct module_attribute *attribute;
+	struct module_kobject *mk;
+	int ret;
+
+	attribute = to_module_attr(attr);
+	mk = to_module_kobject(kobj);
+
+	if (!attribute->store)
+		return -EPERM;
+
+	if (!try_module_get(mk->mod))
+		return -ENODEV;
+
+	ret = attribute->store(attribute, mk->mod, buf, len);
+
+	module_put(mk->mod);
+
+	return ret;
+}
+
 static struct sysfs_ops module_sysfs_ops = {
 	.show = module_attr_show,
-	.store = NULL,
+	.store = module_attr_store,
 };
 
 #else
#4 lore raw

Re: [PATCH] Modules: Allow sysfs module paramaters to be written to.

Hi Greg,

Quoted 5 lines

Here's a patch that fixes this for me. It's as if the function was never implemented at all for some reason. Sorry for not catching this when tj's patches went in that changed all of this logic.

Let me know if this fixes the problem for you or not.

works fine for me. Please apply mainline as soon as possible.

Regards

Marcel

#5 lore raw

PATCH 1/1 Modules: Allow sysfs module parameters to be written to.

In reply to Marcel Holtmann

Linus, please apply this to your tree, it fixes the module parameter stuff in sysfs so that it actually works. Was verified by Marcel.

-----------

Fixes a bug in the current tree preventing the sysfs module parameters from being able to be changed at all from userspace. It's as if someone just forgot to write this function...

kernel/params.c +25 -1
diff -Nru a/kernel/params.c b/kernel/params.c
@@ -640,9 +640,33 @@
 	return ret;
 }
 
+static ssize_t module_attr_store(struct kobject *kobj,
+				struct attribute *attr,
+				const char *buf, size_t len)
+{
+	struct module_attribute *attribute;
+	struct module_kobject *mk;
+	int ret;
+
+	attribute = to_module_attr(attr);
+	mk = to_module_kobject(kobj);
+
+	if (!attribute->store)
+		return -EPERM;
+
+	if (!try_module_get(mk->mod))
+		return -ENODEV;
+
+	ret = attribute->store(attribute, mk->mod, buf, len);
+
+	module_put(mk->mod);
+
+	return ret;
+}
+
 static struct sysfs_ops module_sysfs_ops = {
 	.show = module_attr_show,
-	.store = NULL,
+	.store = module_attr_store,
 };
 
 #else