Commit 833c5a42 authored by Miklos Szeredi's avatar Miklos Szeredi
Browse files

virtiofs: clean up error handling in virtio_fs_get_tree()



Avoid duplicating error cleanup.

Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
parent 6a68d1e1
Loading
Loading
Loading
Loading
+12 −13
Original line number Diff line number Diff line
@@ -1420,22 +1420,14 @@ static int virtio_fs_get_tree(struct fs_context *fsc)
		return -EINVAL;
	}

	err = -ENOMEM;
	fc = kzalloc(sizeof(struct fuse_conn), GFP_KERNEL);
	if (!fc) {
		mutex_lock(&virtio_fs_mutex);
		virtio_fs_put(fs);
		mutex_unlock(&virtio_fs_mutex);
		return -ENOMEM;
	}
	if (!fc)
		goto out_err;

	fm = kzalloc(sizeof(struct fuse_mount), GFP_KERNEL);
	if (!fm) {
		mutex_lock(&virtio_fs_mutex);
		virtio_fs_put(fs);
		mutex_unlock(&virtio_fs_mutex);
		kfree(fc);
		return -ENOMEM;
	}
	if (!fm)
		goto out_err;

	fuse_conn_init(fc, fm, get_user_ns(current_user_ns()),
		       &virtio_fs_fiq_ops, fs);
@@ -1468,6 +1460,13 @@ static int virtio_fs_get_tree(struct fs_context *fsc)
	WARN_ON(fsc->root);
	fsc->root = dget(sb->s_root);
	return 0;

out_err:
	kfree(fc);
	mutex_lock(&virtio_fs_mutex);
	virtio_fs_put(fs);
	mutex_unlock(&virtio_fs_mutex);
	return err;
}

static const struct fs_context_operations virtio_fs_context_ops = {