]> www.infradead.org Git - users/jedix/linux-maple.git/commit
btrfs: ioctl: don't free iov when btrfs_encoded_read() returns -EAGAIN
authorSidong Yang <sidong.yang@furiosa.ai>
Wed, 19 Mar 2025 11:24:01 +0000 (11:24 +0000)
committerDavid Sterba <dsterba@suse.com>
Mon, 31 Mar 2025 23:02:26 +0000 (01:02 +0200)
commit8e587ab43cb92a9e57f99ea8d6c069ee65863707
tree1e82ee19972a0678b1982a6e0dbedb97bd81522b
parent35fec1089ebb5617f85884d3fa6a699ce6337a75
btrfs: ioctl: don't free iov when btrfs_encoded_read() returns -EAGAIN

Fix a bug in encoded read that mistakenly frees the iov in case
btrfs_encoded_read() returns -EAGAIN assuming the structure will be
reused.  This can happen when when receiving requests concurrently, the
io_uring subsystem does not reset the data, and the last free will
happen in btrfs_uring_read_finished().

Handle the -EAGAIN error and skip freeing iov.

CC: stable@vger.kernel.org # 6.13+
Signed-off-by: Sidong Yang <sidong.yang@furiosa.ai>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/ioctl.c