Commit 7dbdb8bd authored by Siddharth Gupta's avatar Siddharth Gupta Committed by Bjorn Andersson
Browse files

remoteproc: core: Cleanup device in case of failure



When a failure occurs in rproc_add() it returns an error, but does
not cleanup after itself. This change adds the failure path in such
cases.

Signed-off-by: default avatarSiddharth Gupta <sidgup@codeaurora.org>
Link: https://lore.kernel.org/r/1623723671-5517-5-git-send-email-sidgup@codeaurora.org


Signed-off-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
parent 930eec0b
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -2343,8 +2343,10 @@ int rproc_add(struct rproc *rproc)
		return ret;

	ret = device_add(dev);
	if (ret < 0)
		return ret;
	if (ret < 0) {
		put_device(dev);
		goto rproc_remove_cdev;
	}

	dev_info(dev, "%s is available\n", rproc->name);

@@ -2355,7 +2357,7 @@ int rproc_add(struct rproc *rproc)
	if (rproc->auto_boot) {
		ret = rproc_trigger_auto_boot(rproc);
		if (ret < 0)
			return ret;
			goto rproc_remove_dev;
	}

	/* expose to rproc_get_by_phandle users */
@@ -2364,6 +2366,13 @@ int rproc_add(struct rproc *rproc)
	mutex_unlock(&rproc_list_mutex);

	return 0;

rproc_remove_dev:
	rproc_delete_debug_dir(rproc);
	device_del(dev);
rproc_remove_cdev:
	rproc_char_device_remove(rproc);
	return ret;
}
EXPORT_SYMBOL(rproc_add);