Up to now, is_visible can only be used to either remove visibility of a file entirely or to add permissions, but not to reduce permissions. This makes it impossible, for example, to use DEVICE_ATTR_RW to define file attributes and reduce permissions to read-only.
This behavior is undesirable and unnecessarily complicates code which needs to reduce permissions; instead of just returning the desired permissions, it has to ensure that the permissions in the attribute variable declaration only reflect the minimal permissions ever needed. Change semantics of is_visible to only use the permissions returned from it instead of oring the returned value with the hard-coded permissions. The code now dumps a warning to the console if an is_visible function returns unexpected permissions. Also document struct attribute_group. Tested with v3.19-rc5. v2: This patchset, originally from Guenter, includes the fixup for the patch 2/3 discussed in the thread https://lkml.org/lkml/2015/1/20/877, that is limiting the scope of attributes to SYSFS_PREALLOC | 0664, since we want to avoid executable and world-writable sysfs files as well. Rebased onto v4.0-rc3. v3: Add missing signed-off-by. Guenter Roeck (2): sysfs: Use only return value from is_visible for the file mode sysfs: Document struct attribute_group Vivien Didelot (1): sysfs: Only accept read/write permissions for file attributes fs/sysfs/group.c | 11 ++++++++--- include/linux/sysfs.h | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) -- 2.3.2 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/