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

Commit 6022e75b authored by NeilBrown's avatar NeilBrown
Browse files

md: extend spinlock protection in register_md_cluster_operations



This code looks racy.

The only possible race is if two modules try to register at the same
time and that won't happen.  But make the code look safe anyway.

Signed-off-by: default avatarNeilBrown <neilb@suse.com>
parent abb9b22a
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -7427,15 +7427,19 @@ int unregister_md_personality(struct md_personality *p)
}
EXPORT_SYMBOL(unregister_md_personality);

int register_md_cluster_operations(struct md_cluster_operations *ops, struct module *module)
int register_md_cluster_operations(struct md_cluster_operations *ops,
				   struct module *module)
{
	if (md_cluster_ops != NULL)
		return -EALREADY;
	int ret = 0;
	spin_lock(&pers_lock);
	if (md_cluster_ops != NULL)
		ret = -EALREADY;
	else {
		md_cluster_ops = ops;
		md_cluster_mod = module;
	}
	spin_unlock(&pers_lock);
	return 0;
	return ret;
}
EXPORT_SYMBOL(register_md_cluster_operations);