Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d25628bd authored by Liu Bo's avatar Liu Bo Committed by Josef Bacik
Browse files

Btrfs: protect devices list with its mutex



Since we've kill the bigger one volume_mutex, we need to add devices
list mutex back.

Signed-off-by: default avatarLiu Bo <bo.li.liu@oracle.com>
Signed-off-by: default avatarChris Mason <chris.mason@fusionio.com>
parent b53d3f5d
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -1681,16 +1681,17 @@ int btrfs_init_new_device(struct btrfs_root *root, char *device_path)
	filemap_write_and_wait(bdev->bd_inode->i_mapping);

	devices = &root->fs_info->fs_devices->devices;
	/*
	 * we have the volume lock, so we don't need the extra
	 * device list mutex while reading the list here.
	 */

	mutex_lock(&root->fs_info->fs_devices->device_list_mutex);
	list_for_each_entry(device, devices, dev_list) {
		if (device->bdev == bdev) {
			ret = -EEXIST;
			mutex_unlock(
				&root->fs_info->fs_devices->device_list_mutex);
			goto error;
		}
	}
	mutex_unlock(&root->fs_info->fs_devices->device_list_mutex);

	device = kzalloc(sizeof(*device), GFP_NOFS);
	if (!device) {