X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2Freiserfs%2Fioctl.c;h=0e225be224b3b534b703968c828647e818d3e6c0;hb=d46bc780027c5439db9f72d42c0732775b53925a;hp=eaddaf9ceaebb734e2420acb78a715b21a47eb4f;hpb=a8e794ca871505c8ea96cc102f4ad555c5231d7f;p=linux-2.6.git diff --git a/fs/reiserfs/ioctl.c b/fs/reiserfs/ioctl.c index eaddaf9ce..0e225be22 100644 --- a/fs/reiserfs/ioctl.c +++ b/fs/reiserfs/ioctl.c @@ -49,9 +49,9 @@ int reiserfs_ioctl (struct inode * inode, struct file * filp, unsigned int cmd, return -EFAULT; oldflags = REISERFS_I(inode) -> i_attrs; - if ( ( ( flags ^ oldflags) & - ( REISERFS_IMMUTABLE_FL | REISERFS_IUNLINK_FL | REISERFS_APPEND_FL)) && - !capable( CAP_LINUX_IMMUTABLE ) ) + if ( (oldflags & REISERFS_IMMUTABLE_FL) || ( ( (flags ^ oldflags) & + (REISERFS_IMMUTABLE_FL | REISERFS_IUNLINK_FL | REISERFS_APPEND_FL)) && + !capable( CAP_LINUX_IMMUTABLE ) ) ) return -EPERM; if( ( flags & REISERFS_NOTAIL_FL ) &&