ANDROID: sdcardfs: copy lower inode attributes in ->ioctl
authorDaniel Rosenberg <drosen@google.com>
Fri, 10 Mar 2017 05:24:58 +0000 (21:24 -0800)
committerAmit Pundir <amit.pundir@linaro.org>
Mon, 10 Apr 2017 07:59:53 +0000 (13:29 +0530)
Adapted from wrapfs
commit fbc9c6f83ea6 ("Wrapfs: copy lower inode attributes in ->ioctl")
commit e97d8e26cc9e ("Wrapfs: use file_inode helper")

Some ioctls (e.g., EXT2_IOC_SETFLAGS) can change inode attributes, so copy
them from lower inode.

Signed-off-by: Erez Zadok <ezk@cs.sunysb.edu>
Signed-off-by: Daniel Rosenberg <drosen@google.com>
Bug: 35766959
Change-Id: I0f12684b9dbd4088b4a622c7ea9c03087f40e572

fs/sdcardfs/file.c

index 7e2c50b30782da51b2e05e73367a0124d878936f..41a550fec3f23f3ed234912bb4a3f5d18e991758 100644 (file)
@@ -113,6 +113,10 @@ static long sdcardfs_unlocked_ioctl(struct file *file, unsigned int cmd,
        if (lower_file->f_op->unlocked_ioctl)
                err = lower_file->f_op->unlocked_ioctl(lower_file, cmd, arg);
 
+       /* some ioctls can change inode attributes (EXT2_IOC_SETFLAGS) */
+       if (!err)
+               sdcardfs_copy_and_fix_attrs(file_inode(file),
+                                     file_inode(lower_file));
 out:
        return err;
 }