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

Commit 766fc439 authored by Yehuda Sadeh's avatar Yehuda Sadeh Committed by Sage Weil
Browse files

rbd: fix cleanup when trying to mount inexistent image



Previously we didn't clean up the sysfs entry that was just
created.

Signed-off-by: default avatarYehuda Sadeh <yehuda@hq.newdream.net>
Signed-off-by: default avatarSage Weil <sage@newdream.net>
parent f363e45f
Loading
Loading
Loading
Loading
+15 −4
Original line number Diff line number Diff line
@@ -1790,18 +1790,29 @@ static ssize_t rbd_add(struct bus_type *bus, const char *buf, size_t count)

	rc = rbd_bus_add_dev(rbd_dev);
	if (rc)
		goto err_out_disk;
		goto err_out_blkdev;

	/* set up and announce blkdev mapping */
	rc = rbd_init_disk(rbd_dev);
	if (rc)
		goto err_out_blkdev;
		goto err_out_bus;

	return count;

err_out_bus:
	mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING);
	list_del_init(&rbd_dev->node);
	mutex_unlock(&ctl_mutex);

	/* this will also clean up rest of rbd_dev stuff */

	rbd_bus_del_dev(rbd_dev);
	kfree(options);
	kfree(mon_dev_name);
	return rc;

err_out_blkdev:
	unregister_blkdev(rbd_dev->major, rbd_dev->name);
err_out_disk:
	rbd_free_disk(rbd_dev);
err_out_client:
	rbd_put_client(rbd_dev);
	mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING);