FAILED: patch "[PATCH] filelocks: use mount idmapping for setlease permission check" failed to apply to 6.1-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 6.1-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.1.y
git checkout FETCH_HEAD
git cherry-pick -x 42d0c4bdf753063b6eec55415003184d3ca24f6e
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '[email protected]' --subject-prefix 'PATCH 6.1.y' HEAD^..
Possible dependencies:
42d0c4bdf753 ("filelocks: use mount idmapping for setlease permission check")c65454a94726 ("fs: remove locks_inode")5970e15dbcfe ("filelock: move file locking definitions to separate header file") 8e1858710d9a ("ceph: avoid use-after-free in ceph_fl_release_lock()")461ab10ef7e6 ("ceph: switch to vfs_inode_has_locks() to fix file lock bug")6a518afcc206 ("Merge tag 'fs.acl.rework.v6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/idmapping")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 42d0c4bdf753063b6eec55415003184d3ca24f6e Mon Sep 17 00:00:00 2001
From: Seth Forshee <[email protected]>
Date: Thu, 9 Mar 2023 14:39:09 -0600
Subject: [PATCH] filelocks: use mount idmapping for setlease permission check
A user should be allowed to take out a lease via an idmapped mount if the fsuid matches the mapped uid of the inode. generic_setlease() is checking the unmapped inode uid, causing these operations to be denied.
Fix this by comparing against the mapped inode uid instead of the unmapped uid.
fs/locks.c +2 -1
@@ -1863,9 +1863,10 @@ int generic_setlease(struct file *filp, long arg, struct file_lock **flp, void **priv) {struct inode *inode =file_inode (filp); +vfsuid_t vfsuid =i_uid_into_vfsuid (file_mnt_idmap (filp), inode);int error; -if ((!uid_eq (current_fsuid (), inode->i_uid)) && !capable (CAP_LEASE )) +if ((!vfsuid_eq_kuid (vfsuid,current_fsuid ())) && !capable (CAP_LEASE ))return -EACCES ;if (!S_ISREG (inode->i_mode))return -EINVAL ;
PATCH 1/1 filelocks: use mount idmapping for setlease permission check
From: Seth Forshee <[email protected]>
[ Upstream commit 42d0c4bdf753063b6eec55415003184d3ca24f6e ]
A user should be allowed to take out a lease via an idmapped mount if the fsuid matches the mapped uid of the inode. generic_setlease() is checking the unmapped inode uid, causing these operations to be denied.
Fix this by comparing against the mapped inode uid instead of the unmapped uid.
--- fs/locks.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
fs/locks.c +2 -1
@@ -1862,9 +1862,10 @@ int generic_setlease(struct file *filp, long arg, struct file_lock **flp, void **priv) {struct inode *inode =locks_inode (filp); +vfsuid_t vfsuid =i_uid_into_vfsuid (file_mnt_user_ns (filp), inode);int error; -if ((!uid_eq (current_fsuid (), inode->i_uid)) && !capable (CAP_LEASE )) +if ((!vfsuid_eq_kuid (vfsuid,current_fsuid ())) && !capable (CAP_LEASE ))return -EACCES ;if (!S_ISREG (inode->i_mode))return -EINVAL ;
Signature · 1 line
2.39.1