summaryrefslogtreecommitdiff
path: root/drivers/core/device.c
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2023-08-24 13:55:35 -0600
committerTom Rini <trini@konsulko.com>2023-08-25 17:55:18 -0400
commitc837a1423c876669bfd963e1ded518b9e497946d (patch)
tree4dfb76d4c131c3a0d2db9ceb6968a8de0e378b7d /drivers/core/device.c
parentfbd644e7026f89f09cfa854fbf846449579f1684 (diff)
dm: core: Correct error handling when event fails
Follow the correct path in device_probe() when and event handler fails. This avoids getting into a strange state where the device appears to be activated but is not. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'drivers/core/device.c')
-rw-r--r--drivers/core/device.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/core/device.c b/drivers/core/device.c
index 6e26b64fb81..60f8d6700ad 100644
--- a/drivers/core/device.c
+++ b/drivers/core/device.c
@@ -598,9 +598,10 @@ int device_probe(struct udevice *dev)
ret = device_notify(dev, EVT_DM_POST_PROBE);
if (ret)
- return ret;
+ goto fail_event;
return 0;
+fail_event:
fail_uclass:
if (device_remove(dev, DM_REMOVE_NORMAL)) {
dm_warn("%s: Device '%s' failed to remove on error path\n",