]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
btrfs: don't rewrite ret from inode_permission
authorJosef Bacik <josef@toxicpanda.com>
Tue, 18 Nov 2025 16:08:41 +0000 (17:08 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 2 Jan 2026 11:57:08 +0000 (12:57 +0100)
commit 0185c2292c600993199bc6b1f342ad47a9e8c678 upstream.

In our user safe ino resolve ioctl we'll just turn any ret into -EACCES
from inode_permission().  This is redundant, and could potentially be
wrong if we had an ENOMEM in the security layer or some such other
error, so simply return the actual return value.

Note: The patch was taken from v5 of fscrypt patchset
(https://lore.kernel.org/linux-btrfs/cover.1706116485.git.josef@toxicpanda.com/)
which was handled over time by various people: Omar Sandoval, Sweet Tea
Dorminy, Josef Bacik.

Fixes: 23d0b79dfaed ("btrfs: Add unprivileged version of ino_lookup ioctl")
CC: stable@vger.kernel.org # 5.4+
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Daniel Vacek <neelx@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
[ add note ]
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/btrfs/ioctl.c

index 8cb7d5a462ef793e1789c95091c1cfb15060ba45..9a34d6530658e5ab773fecb40a470edd654d011f 100644 (file)
@@ -1913,10 +1913,8 @@ static int btrfs_search_path_in_tree_user(struct mnt_idmap *idmap,
                        ret = inode_permission(idmap, &temp_inode->vfs_inode,
                                               MAY_READ | MAY_EXEC);
                        iput(&temp_inode->vfs_inode);
-                       if (ret) {
-                               ret = -EACCES;
+                       if (ret)
                                goto out_put;
-                       }
 
                        if (key.offset == upper_limit)
                                break;