diff options
| author | Christian Brauner <brauner@kernel.org> | 2026-02-16 16:32:03 +0300 |
|---|---|---|
| committer | Christian Brauner <brauner@kernel.org> | 2026-03-02 13:06:42 +0300 |
| commit | 3ec90ae54dadbff30fd041796d04eac7f0474887 (patch) | |
| tree | edbbdd1b1d848a5a654e73a9a7b41980bcb9a9df | |
| parent | 25ab7b6f34c74ea555b4489b57f7219612991433 (diff) | |
| download | linux-3ec90ae54dadbff30fd041796d04eac7f0474887.tar.xz | |
xattr: add xattr_permission_error()
Stop repeating the ?: in multiple places and use a simple helper for
this.
Link: https://patch.msgid.link/20260216-work-xattr-socket-v1-7-c2efa4f74cb7@kernel.org
Acked-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Christian Brauner <brauner@kernel.org>
| -rw-r--r-- | fs/xattr.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/fs/xattr.c b/fs/xattr.c index 64803097e1dc..c4db8663c32e 100644 --- a/fs/xattr.c +++ b/fs/xattr.c @@ -106,6 +106,13 @@ int may_write_xattr(struct mnt_idmap *idmap, struct inode *inode) return 0; } +static inline int xattr_permission_error(int mask) +{ + if (mask & MAY_WRITE) + return -EPERM; + return -ENODATA; +} + /* * Check permissions for extended attribute access. This is a bit complicated * because different namespaces have very different rules. @@ -135,7 +142,7 @@ xattr_permission(struct mnt_idmap *idmap, struct inode *inode, */ if (!strncmp(name, XATTR_TRUSTED_PREFIX, XATTR_TRUSTED_PREFIX_LEN)) { if (!capable(CAP_SYS_ADMIN)) - return (mask & MAY_WRITE) ? -EPERM : -ENODATA; + return xattr_permission_error(mask); return 0; } @@ -146,7 +153,7 @@ xattr_permission(struct mnt_idmap *idmap, struct inode *inode, */ if (!strncmp(name, XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN)) { if (!S_ISREG(inode->i_mode) && !S_ISDIR(inode->i_mode)) - return (mask & MAY_WRITE) ? -EPERM : -ENODATA; + return xattr_permission_error(mask); if (S_ISDIR(inode->i_mode) && (inode->i_mode & S_ISVTX) && (mask & MAY_WRITE) && !inode_owner_or_capable(idmap, inode)) |
