From nobody Mon Feb 9 00:53:49 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 B978E21D3E4 for ; Tue, 13 May 2025 09:18:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747127915; cv=none; b=rLuN89pZGa2XXfcW8vkx9d5NxRrgvunI9pDrnwl1MjpvavrTKgdYLn+8mPprQTFOwSoN/Cg7p3WrIwvaOJ31iCAqXQI+xTJRnHvvXNMDPMyfkeLiwhhl8FCvYXZblL8uqFMHjF8nj/mWDuB/zs5aMs5fpTN8KXetHxKhrjVRWUQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747127915; c=relaxed/simple; bh=6GRgC9l31t4YtW1WpN15HEtI//c4dan1yl5qtYWAaXk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jHK+iCEoC5Pr9jpqNA6ji7spgtTKyMWSo7vJ130ERaLJR8ciOdYkKFeOXNsac+i+rz8HDewFhDzPzf+p1iNXcouHCQpIiclcFhKctVGmzquXT3AMwf8GiQ66VuEVmaOTibJ6Up+hDVS+Q2gfKsqaVD51buCGeyAOSEuda9NgOj0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=JWUtKsiy; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="JWUtKsiy" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747127907; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=NOc7n03QtvhEu44iPpxkG92PTjRYJg6Nm8X16D2kY0E=; b=JWUtKsiyOCSkp9b7jELLmcblSS9joc79PNpGDMYcXiJspk8K6DlRHwzemymbyyhUouMEBl PR9iTTj4h3XwyWSxkzc/67IXu1/IyPv0K3+cUypYnES0BlmtGmwO3nkdQzDcSvlNj2JmDb wbVXSLymH5ZdBYX3TLU9OMmqCj4kT+Q= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-596-8COjkvBfNHy1ZIuGA9dptw-1; Tue, 13 May 2025 05:18:26 -0400 X-MC-Unique: 8COjkvBfNHy1ZIuGA9dptw-1 X-Mimecast-MFC-AGG-ID: 8COjkvBfNHy1ZIuGA9dptw_1747127905 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-441c96c1977so35387155e9.0 for ; Tue, 13 May 2025 02:18:26 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747127905; x=1747732705; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NOc7n03QtvhEu44iPpxkG92PTjRYJg6Nm8X16D2kY0E=; b=qt2R4wZ+HdPYMJpVmr1n026iEQv5F0Xs2JQjK9X3EnNj346tVr4cYTWy5rtekZbwbj xhakzWuDmciqB47BRIL6MLT6Jf8kf0+HdtIIVNoh0iV2uMfqAQQaWcJMQN6CwA8kfgPE xbAw6ZlqEOBqLZqJmc7F8uN1xdJWsVDna05F/ExOlfBF6VEvlvzIEXU7H0X0aaA6iLoa /znCiITB40cxyBGR/sCYYuckJj+gDg5NTUXZmKN9ywH6AxVHbkV2y8dyxyoB4BVYzt2w +bfXhGquLyIeg6TKQdc4MyZAPxQ+XHJWwlAO6LHmyAChDSW6QI+0VHZ6HQeFbd7EEcCQ R9vw== X-Forwarded-Encrypted: i=1; AJvYcCU+ceLZMidrBxwYg0Xo3P6HoGUDxO2+F5Np1Tljijp8XpO73ZMB2LsRSU94WXcs3QUhAOivk4Myw/lv95o=@vger.kernel.org X-Gm-Message-State: AOJu0YxT+TmDZc0SeHh9NL8llUzfZ19PHYi4RJuUYHHPoMFhkb8TFmiY v3C/dTiLCQ3oNuA5OUUDhueLSjgBlg3UZOlbANT27EZODiaBFgfBwgKj8bXtJ6RQzKj3FpM0YKJ tl2P1IuBdxwh+LgI9troPfOy+OG117SHMx5DCccdeLv3ArkomOuygQKovaxYA X-Gm-Gg: ASbGncuOSRIjjWNWVAdaOV9l6LBq8LWrh+wCPdBuwBe/OaCrZ6rnNgzcto4sV0t4ZJH xoiQ05S0ZZ1JAOeWiX1J03ARggnCvA1Nnc62P6xIg3/mTDtt8ckIv0okqTRtSYWasha0QkS5pld Rj7p2eF1Gbzodq9UGVTLuRhkusj1f8arbduio7hX3SFZ0V1m/+9nz9QD2NSkbjeb4UakiMTwEKy bRIFxkqZzK9gfXcychj2cINSf6CdeobEVzLbf7DfbpiWx3cIErlsgLEsiZlihDdcSIyIEdWBhDS CAMlTitWoeTuBRlr6deaznMq/liMvLV95jFWxho5uDaBNg8= X-Received: by 2002:a05:600c:4454:b0:440:6a5f:c308 with SMTP id 5b1f17b1804b1-442d6d44bd0mr165938875e9.13.1747127904747; Tue, 13 May 2025 02:18:24 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHqiuvTxW0gPiYb5Yeg/YAPZpfvdIILgd83canCiQJJ8hwGNTheApWOvMPsjwENNn935UE4Tg== X-Received: by 2002:a05:600c:4454:b0:440:6a5f:c308 with SMTP id 5b1f17b1804b1-442d6d44bd0mr165938225e9.13.1747127904260; Tue, 13 May 2025 02:18:24 -0700 (PDT) Received: from [127.0.0.2] (109-92-26-237.static.isp.telekom.rs. [109.92.26.237]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-442ed666dc7sm12345655e9.18.2025.05.13.02.18.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 May 2025 02:18:23 -0700 (PDT) From: Andrey Albershteyn X-Google-Original-From: Andrey Albershteyn Date: Tue, 13 May 2025 11:17:58 +0200 Subject: [PATCH v5 5/7] fs: make vfs_fileattr_[get|set] return -EOPNOSUPP 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: <20250513-xattrat-syscall-v5-5-22bb9c6c767f@kernel.org> References: <20250513-xattrat-syscall-v5-0-22bb9c6c767f@kernel.org> In-Reply-To: <20250513-xattrat-syscall-v5-0-22bb9c6c767f@kernel.org> To: Richard Henderson , Matt Turner , Russell King , Catalin Marinas , Will Deacon , Geert Uytterhoeven , Michal Simek , Thomas Bogendoerfer , "James E.J. Bottomley" , Helge Deller , Madhavan Srinivasan , Michael Ellerman , Nicholas Piggin , Christophe Leroy , Naveen N Rao , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , Yoshinori Sato , Rich Felker , John Paul Adrian Glaubitz , "David S. Miller" , Andreas Larsson , Andy Lutomirski , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Chris Zankel , Max Filippov , Alexander Viro , Christian Brauner , Jan Kara , =?utf-8?q?Micka=C3=ABl_Sala=C3=BCn?= , =?utf-8?q?G=C3=BCnther_Noack?= , Arnd Bergmann , =?utf-8?q?Pali_Roh=C3=A1r?= , Paul Moore , James Morris , "Serge E. Hallyn" , Stephen Smalley , Ondrej Mosnacek , Tyler Hicks , Miklos Szeredi , Amir Goldstein Cc: linux-alpha@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org, linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-security-module@vger.kernel.org, linux-api@vger.kernel.org, linux-arch@vger.kernel.org, selinux@vger.kernel.org, ecryptfs@vger.kernel.org, linux-unionfs@vger.kernel.org, linux-xfs@vger.kernel.org, Andrey Albershteyn X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3525; i=aalbersh@kernel.org; h=from:subject:message-id; bh=6GRgC9l31t4YtW1WpN15HEtI//c4dan1yl5qtYWAaXk=; b=owJ4nJvAy8zAJea2/JXEGuOHHIyn1ZIYMpT5vHeeSvx1XJ17VoznhbT1nNa68Vxah3ftytP4y xmmWH2hyqOjlIVBjItBVkyRZZ201tSkIqn8IwY18jBzWJlAhjBwcQrARCziGBkWnup90+qj/jDX J/7rpgO7jA7djNJlqpoYIWnU9Pi2iqsMwz9DVwXDCxlLHq56tKRp98R9l+e5LHztcHHptMMCT7x vsnLxAQC/ekWI X-Developer-Key: i=aalbersh@kernel.org; a=openpgp; fpr=AE1B2A9562721A6FC4307C1F46A7EA18AC33E108 Future patches will add new syscalls which use these functions. As this interface won't be used for ioctls only the EOPNOSUPP is more appropriate return code. This patch coverts return code from ENOIOCTLCMD to EOPNOSUPP for vfs_fileattr_get and vfs_fileattr_set. To save old behavior translate EOPNOSUPP back for current users - overlayfs, encryptfs and fs/ioctl.c. Signed-off-by: Andrey Albershteyn --- fs/ecryptfs/inode.c | 8 +++++++- fs/file_attr.c | 12 ++++++++++-- fs/overlayfs/inode.c | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c index 51a5c54eb74026d8b2deec6e0608f3d2b3e9c092..6bf08ff4d7f71c5223b90f4cde5= 7e380b68260fd 100644 --- a/fs/ecryptfs/inode.c +++ b/fs/ecryptfs/inode.c @@ -1124,7 +1124,13 @@ static int ecryptfs_removexattr(struct dentry *dentr= y, struct inode *inode, =20 static int ecryptfs_fileattr_get(struct dentry *dentry, struct fileattr *f= a) { - return vfs_fileattr_get(ecryptfs_dentry_to_lower(dentry), fa); + int rc; + + rc =3D vfs_fileattr_get(ecryptfs_dentry_to_lower(dentry), fa); + if (rc =3D=3D -EOPNOTSUPP) + rc =3D -ENOIOCTLCMD; + + return rc; } =20 static int ecryptfs_fileattr_set(struct mnt_idmap *idmap, diff --git a/fs/file_attr.c b/fs/file_attr.c index d9eab553dc250f84075ac74c1c7d8d6fd6588374..d696f440fa4ffcba8985cc4bfe2= 2a1c0e612ac7c 100644 --- a/fs/file_attr.c +++ b/fs/file_attr.c @@ -79,7 +79,7 @@ int vfs_fileattr_get(struct dentry *dentry, struct fileat= tr *fa) int error; =20 if (!inode->i_op->fileattr_get) - return -ENOIOCTLCMD; + return -EOPNOTSUPP; =20 error =3D security_inode_file_getattr(dentry, fa); if (error) @@ -239,7 +239,7 @@ int vfs_fileattr_set(struct mnt_idmap *idmap, struct de= ntry *dentry, int err; =20 if (!inode->i_op->fileattr_set) - return -ENOIOCTLCMD; + return -EOPNOTSUPP; =20 if (!inode_owner_or_capable(idmap, inode)) return -EPERM; @@ -281,6 +281,8 @@ int ioctl_getflags(struct file *file, unsigned int __us= er *argp) int err; =20 err =3D vfs_fileattr_get(file->f_path.dentry, &fa); + if (err =3D=3D -EOPNOTSUPP) + err =3D -ENOIOCTLCMD; if (!err) err =3D put_user(fa.flags, argp); return err; @@ -302,6 +304,8 @@ int ioctl_setflags(struct file *file, unsigned int __us= er *argp) fileattr_fill_flags(&fa, flags); err =3D vfs_fileattr_set(idmap, dentry, &fa); mnt_drop_write_file(file); + if (err =3D=3D -EOPNOTSUPP) + err =3D -ENOIOCTLCMD; } } return err; @@ -314,6 +318,8 @@ int ioctl_fsgetxattr(struct file *file, void __user *ar= gp) int err; =20 err =3D vfs_fileattr_get(file->f_path.dentry, &fa); + if (err =3D=3D -EOPNOTSUPP) + err =3D -ENOIOCTLCMD; if (!err) err =3D copy_fsxattr_to_user(&fa, argp); =20 @@ -334,6 +340,8 @@ int ioctl_fssetxattr(struct file *file, void __user *ar= gp) if (!err) { err =3D vfs_fileattr_set(idmap, dentry, &fa); mnt_drop_write_file(file); + if (err =3D=3D -EOPNOTSUPP) + err =3D -ENOIOCTLCMD; } } return err; diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c index 6f0e15f86c21fc576fe1679e977597bd9f817e36..096d44712bb1130fd3e9673a617= 47b0fbf877d25 100644 --- a/fs/overlayfs/inode.c +++ b/fs/overlayfs/inode.c @@ -721,7 +721,7 @@ int ovl_real_fileattr_get(const struct path *realpath, = struct fileattr *fa) return err; =20 err =3D vfs_fileattr_get(realpath->dentry, fa); - if (err =3D=3D -ENOIOCTLCMD) + if (err =3D=3D -EOPNOTSUPP) err =3D -ENOTTY; return err; } --=20 2.47.2