diff options
Diffstat (limited to 'fs/attr.c')
-rw-r--r-- | fs/attr.c | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -47,14 +47,14 @@ int inode_change_ok(const struct inode *inode, struct iattr *attr) | |||
47 | 47 | ||
48 | /* Make sure a caller can chown. */ | 48 | /* Make sure a caller can chown. */ |
49 | if ((ia_valid & ATTR_UID) && | 49 | if ((ia_valid & ATTR_UID) && |
50 | (current_fsuid() != inode->i_uid || | 50 | (!uid_eq(current_fsuid(), inode->i_uid) || |
51 | attr->ia_uid != inode->i_uid) && !capable(CAP_CHOWN)) | 51 | !uid_eq(attr->ia_uid, inode->i_uid)) && !capable(CAP_CHOWN)) |
52 | return -EPERM; | 52 | return -EPERM; |
53 | 53 | ||
54 | /* Make sure caller can chgrp. */ | 54 | /* Make sure caller can chgrp. */ |
55 | if ((ia_valid & ATTR_GID) && | 55 | if ((ia_valid & ATTR_GID) && |
56 | (current_fsuid() != inode->i_uid || | 56 | (!uid_eq(current_fsuid(), inode->i_uid) || |
57 | (!in_group_p(attr->ia_gid) && attr->ia_gid != inode->i_gid)) && | 57 | (!in_group_p(attr->ia_gid) && !gid_eq(attr->ia_gid, inode->i_gid))) && |
58 | !capable(CAP_CHOWN)) | 58 | !capable(CAP_CHOWN)) |
59 | return -EPERM; | 59 | return -EPERM; |
60 | 60 | ||