In regulator_list_autoset there is a test for ret being non-zero and error being zero but it uses the binary '&' instead of the logical '&&' which could well lead to unexpected results. Correct this to use the logical '&&' instead.
This issue found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> --- Changes in v2: - Ignore -EALREADY errors from autoset - Link to v1: https://lore.kernel.org/r/[email protected] --- drivers/power/regulator/regulator-uclass.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/power/regulator/regulator-uclass.c b/drivers/power/regulator/regulator-uclass.c index 09567eb9dbb..7aa47c918ad 100644 --- a/drivers/power/regulator/regulator-uclass.c +++ b/drivers/power/regulator/regulator-uclass.c @@ -389,7 +389,7 @@ int regulator_list_autoset(const char *list_platname[], ret = regulator_autoset_by_name(list_platname[i], &dev); if (ret != -EMEDIUMTYPE && verbose) regulator_show(dev, ret); - if (ret & !error) + if (ret && ret != -EALREADY && !error) error = ret; if (list_devp) --- base-commit: 7027b445cc0bfb86204ecb1f1fe596f5895048d9 change-id: 20250703-regulator_uclass_fix-d9457eff7fe9 Best regards, -- Andrew Goodbody <[email protected]>

