Message ID | 20190212141314.9169-1-nborisov@suse.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | btrfs: Transpose btrfs_close_devices/btrfs_mapping_tree_free in close_ctree | expand |
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index f1c42d242d48..4f74942f1d97 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -4041,8 +4041,8 @@ void close_ctree(struct btrfs_fs_info *fs_info) btrfsic_unmount(fs_info->fs_devices); #endif - btrfs_close_devices(fs_info->fs_devices); btrfs_mapping_tree_free(&fs_info->mapping_tree); + btrfs_close_devices(fs_info->fs_devices); percpu_counter_destroy(&fs_info->dirty_metadata_bytes); percpu_counter_destroy(&fs_info->delalloc_bytes);
Following the introduction of the alloc_state tree, some of the callees of btrfs_mapping_tree_free will have to interact with the btrfs_device of the constituent devices. Enable this by moving the code responsible for freeing devices after the last user (btrfs_mapping_tree_free). Otherwise the kernel could crash due to UAF. Signed-off-by: Nikolay Borisov <nborisov@suse.com> --- Hello David, The following patch either needs to come before "btrfs: replace pending/pinned chunks lists with io tree" or has to be squashed in said commit. I'd prefer it to be a separate patch to have the explanation of the order of functions in the commit log. fs/btrfs/disk-io.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)