Message ID | 420f314d458db9d40e104773254a61dab954442e.1664314043.git.msuchanek@suse.de |
---|---|
State | Changes Requested |
Delegated to: | Simon Glass |
Headers | show |
Series | Do not stop uclass iteration on error | expand |
On Tue, 27 Sept 2022 at 15:38, Michal Suchanek <msuchanek@suse.de> wrote: > > uclass_probe_all uses uclass_first_device/uclass_next_device assigning > the return value. > > The interface for getting meaningful error is > uclass_first_device_check/uclass_next_device_check, use it. > > Also do not stop iteration when an error is encountered. Probing all > devices includes those that happen to be after a failing device in the > uclass order. > > Fixes: a59153dfeb ("dm: core: add function uclass_probe_all() to probe all devices") > Signed-off-by: Michal Suchanek <msuchanek@suse.de> > --- > drivers/core/uclass.c | 12 +++++------- > 1 file changed, 5 insertions(+), 7 deletions(-) > Reviewed-by: Simon Glass <sjg@chromium.org> but this could use a test e.g. in test/dm/core.c
diff --git a/drivers/core/uclass.c b/drivers/core/uclass.c index 08d9ed82de..a591e22403 100644 --- a/drivers/core/uclass.c +++ b/drivers/core/uclass.c @@ -799,20 +799,18 @@ int uclass_pre_remove_device(struct udevice *dev) int uclass_probe_all(enum uclass_id id) { struct udevice *dev; - int ret; + int ret, err; - ret = uclass_first_device(id, &dev); - if (ret || !dev) - return ret; + err = uclass_first_device_check(id, &dev); /* Scanning uclass to probe all devices */ while (dev) { - ret = uclass_next_device(&dev); + ret = uclass_next_device_check(&dev); if (ret) - return ret; + err = ret; } - return 0; + return err; } int uclass_id_count(enum uclass_id id)
uclass_probe_all uses uclass_first_device/uclass_next_device assigning the return value. The interface for getting meaningful error is uclass_first_device_check/uclass_next_device_check, use it. Also do not stop iteration when an error is encountered. Probing all devices includes those that happen to be after a failing device in the uclass order. Fixes: a59153dfeb ("dm: core: add function uclass_probe_all() to probe all devices") Signed-off-by: Michal Suchanek <msuchanek@suse.de> --- drivers/core/uclass.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-)