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

Commit 342827d7 authored by Al Viro's avatar Al Viro
Browse files

ocfs2: fix leaks on failure exits in module_init



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 0794f569
Loading
Loading
Loading
Loading
+21 −19
Original line number Diff line number Diff line
@@ -1624,21 +1624,17 @@ static int __init ocfs2_init(void)
		init_waitqueue_head(&ocfs2__ioend_wq[i]);

	status = init_ocfs2_uptodate_cache();
	if (status < 0) {
		mlog_errno(status);
		goto leave;
	}
	if (status < 0)
		goto out1;

	status = ocfs2_initialize_mem_caches();
	if (status < 0) {
		mlog_errno(status);
		goto leave;
	}
	if (status < 0)
		goto out2;

	ocfs2_wq = create_singlethread_workqueue("ocfs2_wq");
	if (!ocfs2_wq) {
		status = -ENOMEM;
		goto leave;
		goto out3;
	}

	ocfs2_debugfs_root = debugfs_create_dir("ocfs2", NULL);
@@ -1650,17 +1646,23 @@ static int __init ocfs2_init(void)
	ocfs2_set_locking_protocol();

	status = register_quota_format(&ocfs2_quota_format);
leave:
	if (status < 0) {
	if (status < 0)
		goto out4;
	status = register_filesystem(&ocfs2_fs_type);
	if (!status)
		return 0;

	unregister_quota_format(&ocfs2_quota_format);
out4:
	destroy_workqueue(ocfs2_wq);
	debugfs_remove(ocfs2_debugfs_root);
out3:
	ocfs2_free_mem_caches();
out2:
	exit_ocfs2_uptodate_cache();
out1:
	mlog_errno(status);
	}

	if (status >= 0) {
		return register_filesystem(&ocfs2_fs_type);
	} else
		return -1;
	return status;
}

static void __exit ocfs2_exit(void)