X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2Fext3%2Fioctl.c;h=dbe8a6fe8c5f8a3bc6f1704f1e5b25de9eacafe6;hb=5e3b93f248c98873cc843e83092bb8da92ac85a2;hp=f58d4973648c30f2ba197a0448f3e247249d3dac;hpb=a91482bdcc2e0f6035702e46f1b99043a0893346;p=linux-2.6.git diff --git a/fs/ext3/ioctl.c b/fs/ext3/ioctl.c index f58d49736..dbe8a6fe8 100644 --- a/fs/ext3/ioctl.c +++ b/fs/ext3/ioctl.c @@ -35,8 +35,7 @@ int ext3_ioctl (struct inode * inode, struct file * filp, unsigned int cmd, unsigned int oldflags; unsigned int jflag; - if (IS_RDONLY(inode) || - (filp && MNT_IS_RDONLY(filp->f_vfsmnt))) + if (IS_RDONLY(inode)) return -EROFS; if ((current->fsuid != inode->i_uid) && !capable(CAP_FOWNER)) @@ -59,11 +58,11 @@ int ext3_ioctl (struct inode * inode, struct file * filp, unsigned int cmd, * * This test looks nicer. Thanks to Pauline Middelink */ - if (((oldflags & EXT3_IMMUTABLE_FL) || + if ((oldflags & EXT3_IMMUTABLE_FL) || ((flags ^ oldflags) & - (EXT3_APPEND_FL | EXT3_IMMUTABLE_FL | EXT3_IUNLINK_FL))) - && !capable(CAP_LINUX_IMMUTABLE)) { - return -EPERM; + (EXT3_APPEND_FL | EXT3_IMMUTABLE_FL))) { + if (!capable(CAP_LINUX_IMMUTABLE)) + return -EPERM; } /* @@ -114,8 +113,7 @@ flags_err: if ((current->fsuid != inode->i_uid) && !capable(CAP_FOWNER)) return -EPERM; - if (IS_RDONLY(inode) || - (filp && MNT_IS_RDONLY(filp->f_vfsmnt))) + if (IS_RDONLY(inode)) return -EROFS; if (get_user(generation, (int __user *) arg)) return -EFAULT; @@ -156,6 +154,7 @@ flags_err: return ret; } #endif + #if defined(CONFIG_VSERVER_LEGACY) && !defined(CONFIG_INOXID_NONE) case EXT3_IOC_SETXID: { handle_t *handle;