From nobody Thu Mar 19 03:43:23 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 963E431064B; Mon, 16 Feb 2026 13:32:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771248764; cv=none; b=L7txvH5DpR6H39b2tZ9cw83xBCFyKVtEGBX4zbvcf3rNgfya0g2KNKAuI7MdJpUQlqNzfQgdlMW1FLP9JXqf8gOmhEDF6e+y4nDyTgMX2iII7ESmIGHJDgBoftHsrvCjssbtAAH8Ke4J9dXPEqCY3bLbovuha8/RDrNwVUuIshw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771248764; c=relaxed/simple; bh=96SxHSPi59GBrRPEDM8gKWYEJ+q1qKqGM49g4nTkdB4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pvAI1ij/hWSp41rt+NHzXhmgnIkMkglMjUGtotEkQOj9Xwr/bUBeSW6q7MeV98UIWztN04IT3jBzsuu1LEG4O+w3+jAy2XDNmJcDlU346Wle+WWJd+OJ8xlLfd7CgDXJqUGJjfjeLeQWht7wSCZMecDiUAr/Y5MoWGjvxZeJKdY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=IKZnc2bF; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="IKZnc2bF" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1BFF5C116C6; Mon, 16 Feb 2026 13:32:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1771248764; bh=96SxHSPi59GBrRPEDM8gKWYEJ+q1qKqGM49g4nTkdB4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=IKZnc2bFfW0W82B1axiPsfeG/OH6odSnFk6t29PyOLxGZNrqeUK0mUj25LUOU7Ziv A3zbGKEOFHiWHaPfAokCeFQZSRrILdRzwlTIqUvTzIT66H6l0g8ywsCy9KPcUuLHFz jipGl3KpcuDtIWn1Pys7kE7xAoeXNKM95L3+1Qzt21agvqjmsgRFT9JK1az3ssdTT7 nDH5BQpoWz2BrV2zXLAJiN4JvemlPD3Vk+7+LOFvQEaHzXbWekHzZxk7D8a22pJwu+ Y83CBOWXA3QPiDwb9CBWSo2vt7UnEwVQja7kxsYT4mgSUwDYRi2WCVXoEHON8i6Ofr QY6gb/Tbu+rEA== From: Christian Brauner Date: Mon, 16 Feb 2026 14:32:03 +0100 Subject: [PATCH 07/14] xattr: add xattr_permission_error() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260216-work-xattr-socket-v1-7-c2efa4f74cb7@kernel.org> References: <20260216-work-xattr-socket-v1-0-c2efa4f74cb7@kernel.org> In-Reply-To: <20260216-work-xattr-socket-v1-0-c2efa4f74cb7@kernel.org> To: linux-fsdevel@vger.kernel.org Cc: Jeff Layton , Josef Bacik , Alexander Viro , Jan Kara , linux-kernel@vger.kernel.org, Hugh Dickins , linux-mm@kvack.org, Greg Kroah-Hartman , Tejun Heo , Eric Dumazet , Jakub Kicinski , Jann Horn , netdev@vger.kernel.org, Christian Brauner X-Mailer: b4 0.15-dev-47773 X-Developer-Signature: v=1; a=openpgp-sha256; l=1499; i=brauner@kernel.org; h=from:subject:message-id; bh=96SxHSPi59GBrRPEDM8gKWYEJ+q1qKqGM49g4nTkdB4=; b=owGbwMvMwCU28Zj0gdSKO4sYT6slMWROlolTurXu/ddPcs+fdk/9U6Am8MhlAv83LwnD0mgpY 42qf+tdO0pZGMS4GGTFFFkc2k3C5ZbzVGw2ytSAmcPKBDKEgYtTACby35+RYZHzvxMMF7deDl7+ Luzuz1ger61N6y/bPDx6d2PX1idffi9l+Gd9eG9O78xDSiUs5hGruR/YiesulhGeujJ/7rPiMA6 u+fwA X-Developer-Key: i=brauner@kernel.org; a=openpgp; fpr=4880B8C9BD0E5106FC070F4F7B3C391EFEA93624 Stop repeating the ?: in multiple places and use a simple helper for this. Signed-off-by: Christian Brauner Reviewed-by: Jan Kara --- fs/xattr.c | 11 +++++++++-- 1 file 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 in= ode *inode) return 0; } =20 +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 complic= ated * 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; } =20 @@ -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)) --=20 2.47.3