diff options
| author | Filipe Manana <fdmanana@suse.com> | 2026-02-27 03:02:33 +0300 |
|---|---|---|
| committer | David Sterba <dsterba@suse.com> | 2026-03-03 19:03:59 +0300 |
| commit | 0f475ee0ebce5c9492b260027cd95270191675fa (patch) | |
| tree | 8a1155dcb5f8e87fbbbfd3b511112f90d43fc032 | |
| parent | 87f2c46003fce4d739138aab4af1942b1afdadac (diff) | |
| download | linux-0f475ee0ebce5c9492b260027cd95270191675fa.tar.xz | |
btrfs: abort transaction on failure to update root in the received subvol ioctl
If we failed to update the root we don't abort the transaction, which is
wrong since we already used the transaction to remove an item from the
uuid tree.
Fixes: dd5f9615fc5c ("Btrfs: maintain subvolume items in the UUID tree")
CC: stable@vger.kernel.org # 3.12+
Reviewed-by: Anand Jain <asj@kernel.org>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
| -rw-r--r-- | fs/btrfs/ioctl.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 56d17eedaf90..5805ac2078f2 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -3984,7 +3984,8 @@ static long _btrfs_ioctl_set_received_subvol(struct file *file, ret = btrfs_update_root(trans, fs_info->tree_root, &root->root_key, &root->root_item); - if (ret < 0) { + if (unlikely(ret < 0)) { + btrfs_abort_transaction(trans, ret); btrfs_end_transaction(trans); goto out; } |
