From d8bf8c92e80fed9119eb222c7e5cc88acf57c12c Mon Sep 17 00:00:00 2001 From: Vivien Didelot Date: Thu, 12 Mar 2015 09:58:27 -0400 Subject: [PATCH] sysfs: Only accept read/write permissions for file attributes For sysfs file attributes, only read and write permissions make sense. Mask provided attribute permissions accordingly and send a warning to the console if invalid permission bits are set. This patch is originally from Guenter [1] and includes the fixup explained in the thread, that is printing permissions in octal format and limiting the scope of attributes to SYSFS_PREALLOC | 0664. [1] https://lkml.org/lkml/2015/1/19/599 Signed-off-by: Vivien Didelot Reviewed-by: Guenter Roeck Signed-off-by: Greg Kroah-Hartman --- fs/sysfs/group.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/fs/sysfs/group.c b/fs/sysfs/group.c index 3fdccd99a9d9..b400c04371f0 100644 --- a/fs/sysfs/group.c +++ b/fs/sysfs/group.c @@ -55,6 +55,12 @@ static int create_files(struct kernfs_node *parent, struct kobject *kobj, if (!mode) continue; } + + WARN(mode & ~(SYSFS_PREALLOC | 0664), + "Attribute %s: Invalid permissions 0%o\n", + (*attr)->name, mode); + + mode &= SYSFS_PREALLOC | 0664; error = sysfs_add_file_mode_ns(parent, *attr, false, mode, NULL); if (unlikely(error))