]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - fs/sysfs/inode.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / fs / sysfs / inode.c
index cffb1fd8ba33fdb66aab0c076cf24e3f4f2e6387..0a12eb89cd32b544aa720804d2836c4c6d2c8a3c 100644 (file)
@@ -19,6 +19,7 @@
 #include <linux/errno.h>
 #include <linux/sched.h>
 #include <linux/slab.h>
+#include <linux/sysfs.h>
 #include <linux/xattr.h>
 #include <linux/security.h>
 #include "sysfs.h"
@@ -348,13 +349,18 @@ int sysfs_hash_and_remove(struct sysfs_dirent *dir_sd, const void *ns, const cha
                return -ENOENT;
 }
 
-int sysfs_permission(struct inode *inode, int mask)
+int sysfs_permission(struct inode *inode, int mask, unsigned int flags)
 {
-       struct sysfs_dirent *sd = inode->i_private;
+       struct sysfs_dirent *sd;
+
+       if (flags & IPERM_FLAG_RCU)
+               return -ECHILD;
+
+       sd = inode->i_private;
 
        mutex_lock(&sysfs_mutex);
        sysfs_refresh_inode(sd, inode);
        mutex_unlock(&sysfs_mutex);
 
-       return generic_permission(inode, mask, NULL);
+       return generic_permission(inode, mask, flags, NULL);
 }