]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
btrfs: don't skip accounting in early ENOTTY return in btrfs_uring_encoded_read()
authorCaleb Sander Mateos <csander@purestorage.com>
Thu, 19 Jun 2025 19:27:45 +0000 (13:27 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 20 Aug 2025 16:36:31 +0000 (18:36 +0200)
commit ea124ec327086325fc096abf42837dac471ac7ae upstream.

btrfs_uring_encoded_read() returns early with -ENOTTY if the uring_cmd
is issued with IO_URING_F_COMPAT but the kernel doesn't support compat
syscalls. However, this early return bypasses the syscall accounting.
Go to out_acct instead to ensure the syscall is counted.

Fixes: 34310c442e17 ("btrfs: add io_uring command for encoded reads (ENCODED_READ ioctl)")
CC: stable@vger.kernel.org # 6.15+
Signed-off-by: Caleb Sander Mateos <csander@purestorage.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/btrfs/ioctl.c

index b70ef4455610a0fe5232227fb9ada9056c98f2ad..d250a658eab86367c2cf72cc9cc2531f3d99139e 100644 (file)
@@ -4832,7 +4832,8 @@ static int btrfs_uring_encoded_read(struct io_uring_cmd *cmd, unsigned int issue
 #if defined(CONFIG_64BIT) && defined(CONFIG_COMPAT)
                copy_end = offsetofend(struct btrfs_ioctl_encoded_io_args_32, flags);
 #else
-               return -ENOTTY;
+               ret = -ENOTTY;
+               goto out_acct;
 #endif
        } else {
                copy_end = copy_end_kernel;