sysctl: add the ->permissions callback on the ctl_table_root
When reading from/writing to some table, a root, which this table came from, may affect this table's permissions, depending on who is working with the table. The core hunk is at the bottom of this patch. All the rest is just pushing the ctl_table_root argument up to the sysctl_perm() function. This will be mostly (only?) used in the net sysctls. Signed-off-by: Pavel Emelyanov <xemul@openvz.org> Acked-by: David S. Miller <davem@davemloft.net> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Cc: Alexey Dobriyan <adobriyan@sw.ru> Cc: Denis V. Lunev <den@openvz.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
2c4c7155f2
commit
d7321cd624
@@ -190,7 +190,7 @@ static ssize_t proc_sys_call_handler(struct file *filp, void __user *buf,
|
||||
* and won't be until we finish.
|
||||
*/
|
||||
error = -EPERM;
|
||||
if (sysctl_perm(table, write ? MAY_WRITE : MAY_READ))
|
||||
if (sysctl_perm(head->root, table, write ? MAY_WRITE : MAY_READ))
|
||||
goto out;
|
||||
|
||||
/* careful: calling conventions are nasty here */
|
||||
@@ -388,7 +388,7 @@ static int proc_sys_permission(struct inode *inode, int mask, struct nameidata *
|
||||
goto out;
|
||||
|
||||
/* Use the permissions on the sysctl table entry */
|
||||
error = sysctl_perm(table, mask);
|
||||
error = sysctl_perm(head->root, table, mask);
|
||||
out:
|
||||
sysctl_head_finish(head);
|
||||
return error;
|
||||
|
Reference in New Issue
Block a user