Skip to content

Commit 7dbdb8b

Browse files
Siddharth Guptaandersson
authored andcommitted
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: Siddharth Gupta <sidgup@codeaurora.org> Link: https://lore.kernel.org/r/1623723671-5517-5-git-send-email-sidgup@codeaurora.org Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
1 parent 930eec0 commit 7dbdb8b

1 file changed

Lines changed: 12 additions & 3 deletions

File tree

drivers/remoteproc/remoteproc_core.c

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2343,8 +2343,10 @@ int rproc_add(struct rproc *rproc)
23432343
return ret;
23442344

23452345
ret = device_add(dev);
2346-
if (ret < 0)
2347-
return ret;
2346+
if (ret < 0) {
2347+
put_device(dev);
2348+
goto rproc_remove_cdev;
2349+
}
23482350

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

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

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

23662368
return 0;
2369+
2370+
rproc_remove_dev:
2371+
rproc_delete_debug_dir(rproc);
2372+
device_del(dev);
2373+
rproc_remove_cdev:
2374+
rproc_char_device_remove(rproc);
2375+
return ret;
23672376
}
23682377
EXPORT_SYMBOL(rproc_add);
23692378

0 commit comments

Comments
 (0)