base: core: WARN() about bogus permissions on device attributes
authorFelipe Balbi <balbi@ti.com>
Wed, 20 Feb 2013 08:31:42 +0000 (10:31 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 15 Mar 2013 16:39:15 +0000 (09:39 -0700)
Whenever a struct device_attribute is registered
with mismatched permissions - read permission without
a show routine or write permission without store
routine - we will issue a big warning so we catch
those early enough.

Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/base/core.c

index 56536f4..a7391a3 100644 (file)
@@ -563,8 +563,15 @@ int device_create_file(struct device *dev,
                       const struct device_attribute *attr)
 {
        int error = 0;
-       if (dev)
+
+       if (dev) {
+               WARN(((attr->attr.mode & S_IWUGO) && !attr->store),
+                               "Write permission without 'store'\n");
+               WARN(((attr->attr.mode & S_IRUGO) && !attr->show),
+                               "Read permission without 'show'\n");
                error = sysfs_create_file(&dev->kobj, &attr->attr);
+       }
+
        return error;
 }