diff options
Diffstat (limited to 'fs/attr.c')
-rw-r--r-- | fs/attr.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/attr.c b/fs/attr.c index 765fc75fab3b..26c71ba1eed4 100644 --- a/fs/attr.c +++ b/fs/attr.c @@ -108,6 +108,11 @@ int notify_change(struct dentry * dentry, struct iattr * attr) struct timespec now; unsigned int ia_valid = attr->ia_valid; + if (ia_valid & (ATTR_MODE | ATTR_UID | ATTR_GID | ATTR_TIMES_SET)) { + if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) + return -EPERM; + } + now = current_fs_time(inode->i_sb); attr->ia_ctime = now; |