ANDROID: sdcardfs: Propagate dentry down to inode_change_ok()
authorAmit Pundir <amit.pundir@linaro.org>
Tue, 11 Oct 2016 07:56:17 +0000 (13:26 +0530)
committerDaniel Rosenberg <drosen@google.com>
Tue, 30 Jan 2018 03:40:02 +0000 (19:40 -0800)
Since commit 31051c85b5e2 ("fs: Give dentry to inode_change_ok()
instead of inode"), to avoid clearing of capabilities or security
related extended attributes too early, inode_change_ok() will
need to take dentry instead of inode. Propagate it down to
sdcardfs_setattr() and also rename it to setattr_prepare(),
otherwise we run into following build error:

  CC [M]  fs/sdcardfs/inode.o
fs/sdcardfs/inode.c: In function ‘sdcardfs_setattr’:
fs/sdcardfs/inode.c:644:8: error: implicit declaration of function ‘inode_change_ok’ [-Werror=implicit-function-declaration]
  err = inode_change_ok(inode, ia);
        ^

Change-Id: I714b4f4f68b7fea1ac82a71d2f323c76b11fa008
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
fs/sdcardfs/inode.c

index bd8a70185147ebf38bffdf4e4b9807f19990e8e3..76b57c8c32fd9a4aa88ec2dc8f4e982e8e3a6693 100644 (file)
@@ -706,6 +706,7 @@ static int sdcardfs_setattr(struct vfsmount *mnt, struct dentry *dentry, struct
        struct iattr lower_ia;
        struct dentry *parent;
        struct inode tmp;
+       struct dentry tmp_d;
        struct inode *top;
        const struct cred *saved_cred = NULL;
 
@@ -736,13 +737,14 @@ static int sdcardfs_setattr(struct vfsmount *mnt, struct dentry *dentry, struct
        tmp.i_size = i_size_read(inode);
        release_top(SDCARDFS_I(inode));
        tmp.i_sb = inode->i_sb;
+       tmp_d.d_inode = &tmp;
 
        /*
-        * Check if user has permission to change inode.  We don't check if
+        * Check if user has permission to change dentry.  We don't check if
         * this user can change the lower inode: that should happen when
         * calling notify_change on the lower inode.
         */
-       err = inode_change_ok(&tmp, ia);
+       err = setattr_prepare(&tmp_d, ia);
 
        if (!err) {
                /* check the Android group ID */