.. | .. |
---|
74 | 74 | err = -EPERM; |
---|
75 | 75 | goto setflags_out; |
---|
76 | 76 | } |
---|
77 | | - if (((flags ^ REISERFS_I(inode)-> |
---|
78 | | - i_attrs) & (REISERFS_IMMUTABLE_FL | |
---|
79 | | - REISERFS_APPEND_FL)) |
---|
80 | | - && !capable(CAP_LINUX_IMMUTABLE)) { |
---|
81 | | - err = -EPERM; |
---|
| 77 | + err = vfs_ioc_setflags_prepare(inode, |
---|
| 78 | + REISERFS_I(inode)->i_attrs, |
---|
| 79 | + flags); |
---|
| 80 | + if (err) |
---|
82 | 81 | goto setflags_out; |
---|
83 | | - } |
---|
84 | 82 | if ((flags & REISERFS_NOTAIL_FL) && |
---|
85 | 83 | S_ISREG(inode->i_mode)) { |
---|
86 | 84 | int result; |
---|
.. | .. |
---|
186 | 184 | } |
---|
187 | 185 | |
---|
188 | 186 | /* we need to make sure nobody is changing the file size beneath us */ |
---|
189 | | -{ |
---|
190 | | - int depth = reiserfs_write_unlock_nested(inode->i_sb); |
---|
191 | | - inode_lock(inode); |
---|
192 | | - reiserfs_write_lock_nested(inode->i_sb, depth); |
---|
193 | | -} |
---|
| 187 | + { |
---|
| 188 | + int depth = reiserfs_write_unlock_nested(inode->i_sb); |
---|
| 189 | + |
---|
| 190 | + inode_lock(inode); |
---|
| 191 | + reiserfs_write_lock_nested(inode->i_sb, depth); |
---|
| 192 | + } |
---|
194 | 193 | |
---|
195 | 194 | reiserfs_write_lock(inode->i_sb); |
---|
196 | 195 | |
---|