ANDROID: sdcardfs: copy lower inode attributes in ->ioctl
authorDaniel Rosenberg <drosen@google.com>
Fri, 10 Mar 2017 05:24:58 +0000 (21:24 -0800)
committerStricted <info@stricted.net>
Thu, 11 Oct 2018 16:03:35 +0000 (18:03 +0200)
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 93b93bec6a729e66d68183731a95ed3f7c72af5c..3ceac2b4d31c0469f434846bbf8760bc29df41f4 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;
 }