btrfs: fix missing snapshot drew unlock when root is dead during swap activation
BugLink: https://bugs.launchpad.net/bugs/2102118
[ Upstream commit 9c803c474c6c002d8ade68ebe99026cc39c37f85 ]
When activating a swap file we acquire the root's snapshot drew lock and
then check if the root is dead, failing and returning with -EPERM if it's
dead but without unlocking the root's snapshot lock. Fix this by adding
the missing unlock.
Fixes: 60021bd754 ("btrfs: prevent subvol with swapfile from being deleted")
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Koichiro Den <koichiro.den@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
This commit is contained in:
committed by
Stefan Bader
parent
c26ee91454
commit
457cf3d9e2
@@ -10754,6 +10754,7 @@ static int btrfs_swap_activate(struct swap_info_struct *sis, struct file *file,
|
||||
if (btrfs_root_dead(root)) {
|
||||
spin_unlock(&root->root_item_lock);
|
||||
|
||||
btrfs_drew_write_unlock(&root->snapshot_lock);
|
||||
btrfs_exclop_finish(fs_info);
|
||||
btrfs_warn(fs_info,
|
||||
"cannot activate swapfile because subvolume %llu is being deleted",
|
||||
|
||||
Reference in New Issue
Block a user