summaryrefslogtreecommitdiff
path: root/fs/ext4/ioctl.c
diff options
context:
space:
mode:
authorVarun Wadekar <vwadekar@nvidia.com>2012-06-11 11:29:44 +0530
committerVarun Wadekar <vwadekar@nvidia.com>2012-06-11 11:29:44 +0530
commite6dca42c2c2ad0f06c6704c73a03e5516dc14b13 (patch)
tree6ce2385fd736a6fc9a02ace4f5f139a6c8cfbaaf /fs/ext4/ioctl.c
parent462ba8b0bca7e376722158f1f1a094ba1c0bd1ad (diff)
parent1f5547c7f183363eabe07e5d202a49f2e94e995a (diff)
Merge commit 'v3.4.2' into android-tegra-nv-3.4
Conflicts: drivers/i2c/busses/i2c-tegra.c drivers/usb/gadget/fsl_udc_core.c Change-Id: Ibfc3a8edc3665b832ddc94f89fc17b556629d104 Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
Diffstat (limited to 'fs/ext4/ioctl.c')
-rw-r--r--fs/ext4/ioctl.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c
index 6eee25591b81..1365903a5144 100644
--- a/fs/ext4/ioctl.c
+++ b/fs/ext4/ioctl.c
@@ -38,7 +38,7 @@ long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
handle_t *handle = NULL;
int err, migrate = 0;
struct ext4_iloc iloc;
- unsigned int oldflags;
+ unsigned int oldflags, mask, i;
unsigned int jflag;
if (!inode_owner_or_capable(inode))
@@ -115,9 +115,14 @@ long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
if (err)
goto flags_err;
- flags = flags & EXT4_FL_USER_MODIFIABLE;
- flags |= oldflags & ~EXT4_FL_USER_MODIFIABLE;
- ei->i_flags = flags;
+ for (i = 0, mask = 1; i < 32; i++, mask <<= 1) {
+ if (!(mask & EXT4_FL_USER_MODIFIABLE))
+ continue;
+ if (mask & flags)
+ ext4_set_inode_flag(inode, i);
+ else
+ ext4_clear_inode_flag(inode, i);
+ }
ext4_set_inode_flags(inode);
inode->i_ctime = ext4_current_time(inode);