Commit 92900e51 authored by Al Viro's avatar Al Viro Committed by David Sterba
Browse files

btrfs: fix potential oops in device_list_add



alloc_fs_devices() can return ERR_PTR(-ENOMEM), so dereferencing its
result before the check for IS_ERR() is a bad idea.

Fixes: d1a63002 ("btrfs: add members to fs_devices to track fsid changes")
Reviewed-by: default avatarNikolay Borisov <nborisov@suse.com>
Reviewed-by: default avatarAnand Jain <anand.jain@oracle.com>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 302167c5
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -957,11 +957,11 @@ static noinline struct btrfs_device *device_list_add(const char *path,
		else
			fs_devices = alloc_fs_devices(disk_super->fsid, NULL);

		fs_devices->fsid_change = fsid_change_in_progress;

		if (IS_ERR(fs_devices))
			return ERR_CAST(fs_devices);

		fs_devices->fsid_change = fsid_change_in_progress;

		mutex_lock(&fs_devices->device_list_mutex);
		list_add(&fs_devices->fs_list, &fs_uuids);