fs: make helpers idmap mount aware
[sfrench/cifs-2.6.git] / fs / fuse / dir.c
index d2e318ed9b260a78adbf7c84f900f51e7e8896e5..06a18700a845542ab140590553b53f51de807030 100644 (file)
@@ -605,7 +605,8 @@ out_err:
        return err;
 }
 
-static int fuse_mknod(struct inode *, struct dentry *, umode_t, dev_t);
+static int fuse_mknod(struct user_namespace *, struct inode *, struct dentry *,
+                     umode_t, dev_t);
 static int fuse_atomic_open(struct inode *dir, struct dentry *entry,
                            struct file *file, unsigned flags,
                            umode_t mode)
@@ -645,7 +646,7 @@ out_dput:
        return err;
 
 mknod:
-       err = fuse_mknod(dir, entry, mode, 0);
+       err = fuse_mknod(&init_user_ns, dir, entry, mode, 0);
        if (err)
                goto out_dput;
 no_open:
@@ -715,8 +716,8 @@ static int create_new_entry(struct fuse_mount *fm, struct fuse_args *args,
        return err;
 }
 
-static int fuse_mknod(struct inode *dir, struct dentry *entry, umode_t mode,
-                     dev_t rdev)
+static int fuse_mknod(struct user_namespace *mnt_userns, struct inode *dir,
+                     struct dentry *entry, umode_t mode, dev_t rdev)
 {
        struct fuse_mknod_in inarg;
        struct fuse_mount *fm = get_fuse_mount(dir);
@@ -738,13 +739,14 @@ static int fuse_mknod(struct inode *dir, struct dentry *entry, umode_t mode,
        return create_new_entry(fm, &args, dir, entry, mode);
 }
 
-static int fuse_create(struct inode *dir, struct dentry *entry, umode_t mode,
-                      bool excl)
+static int fuse_create(struct user_namespace *mnt_userns, struct inode *dir,
+                      struct dentry *entry, umode_t mode, bool excl)
 {
-       return fuse_mknod(dir, entry, mode, 0);
+       return fuse_mknod(&init_user_ns, dir, entry, mode, 0);
 }
 
-static int fuse_mkdir(struct inode *dir, struct dentry *entry, umode_t mode)
+static int fuse_mkdir(struct user_namespace *mnt_userns, struct inode *dir,
+                     struct dentry *entry, umode_t mode)
 {
        struct fuse_mkdir_in inarg;
        struct fuse_mount *fm = get_fuse_mount(dir);
@@ -765,8 +767,8 @@ static int fuse_mkdir(struct inode *dir, struct dentry *entry, umode_t mode)
        return create_new_entry(fm, &args, dir, entry, S_IFDIR);
 }
 
-static int fuse_symlink(struct inode *dir, struct dentry *entry,
-                       const char *link)
+static int fuse_symlink(struct user_namespace *mnt_userns, struct inode *dir,
+                       struct dentry *entry, const char *link)
 {
        struct fuse_mount *fm = get_fuse_mount(dir);
        unsigned len = strlen(link) + 1;
@@ -908,9 +910,9 @@ static int fuse_rename_common(struct inode *olddir, struct dentry *oldent,
        return err;
 }
 
-static int fuse_rename2(struct inode *olddir, struct dentry *oldent,
-                       struct inode *newdir, struct dentry *newent,
-                       unsigned int flags)
+static int fuse_rename2(struct user_namespace *mnt_userns, struct inode *olddir,
+                       struct dentry *oldent, struct inode *newdir,
+                       struct dentry *newent, unsigned int flags)
 {
        struct fuse_conn *fc = get_fuse_conn(olddir);
        int err;
@@ -1249,7 +1251,8 @@ static int fuse_perm_getattr(struct inode *inode, int mask)
  * access request is sent.  Execute permission is still checked
  * locally based on file mode.
  */
-static int fuse_permission(struct inode *inode, int mask)
+static int fuse_permission(struct user_namespace *mnt_userns,
+                          struct inode *inode, int mask)
 {
        struct fuse_conn *fc = get_fuse_conn(inode);
        bool refreshed = false;
@@ -1757,7 +1760,8 @@ error:
        return err;
 }
 
-static int fuse_setattr(struct dentry *entry, struct iattr *attr)
+static int fuse_setattr(struct user_namespace *mnt_userns, struct dentry *entry,
+                       struct iattr *attr)
 {
        struct inode *inode = d_inode(entry);
        struct fuse_conn *fc = get_fuse_conn(inode);
@@ -1819,7 +1823,8 @@ static int fuse_setattr(struct dentry *entry, struct iattr *attr)
        return ret;
 }
 
-static int fuse_getattr(const struct path *path, struct kstat *stat,
+static int fuse_getattr(struct user_namespace *mnt_userns,
+                       const struct path *path, struct kstat *stat,
                        u32 request_mask, unsigned int flags)
 {
        struct inode *inode = d_inode(path->dentry);