Commit 9cbc8610 authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Pavel Machek
Browse files

leds: lgm-sso: Propagate error codes from callee to caller



The one of the latest change to the driver reveals the problem that
the error codes from callee aren't propagated to the caller of
__sso_led_dt_parse(). Fix this accordingly.

Fixes: 9999908c ("leds: lgm-sso: Put fwnode in any case during ->probe()")
Fixes: c3987cd2 ("leds: lgm: Add LED controller driver for LGM SoC")
Reported-by: default avatarkernel test robot <lkp@intel.com>
Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: default avatarPavel Machek <pavel@ucw.cz>
parent 64f67b52
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -640,7 +640,7 @@ __sso_led_dt_parse(struct sso_led_priv *priv, struct fwnode_handle *fw_ssoled)
							      fwnode_child,
							      GPIOD_ASIS, NULL);
		if (IS_ERR(led->gpiod)) {
			dev_err_probe(dev, PTR_ERR(led->gpiod), "led: get gpio fail!\n");
			ret = dev_err_probe(dev, PTR_ERR(led->gpiod), "led: get gpio fail!\n");
			goto __dt_err;
		}

@@ -660,8 +660,11 @@ __sso_led_dt_parse(struct sso_led_priv *priv, struct fwnode_handle *fw_ssoled)
			desc->panic_indicator = 1;

		ret = fwnode_property_read_u32(fwnode_child, "reg", &prop);
		if (ret != 0 || prop >= SSO_LED_MAX_NUM) {
		if (ret)
			goto __dt_err;
		if (prop >= SSO_LED_MAX_NUM) {
			dev_err(dev, "invalid LED pin:%u\n", prop);
			ret = -EINVAL;
			goto __dt_err;
		}
		desc->pin = prop;
@@ -697,7 +700,8 @@ __sso_led_dt_parse(struct sso_led_priv *priv, struct fwnode_handle *fw_ssoled)
				desc->brightness = LED_FULL;
		}

		if (sso_create_led(priv, led, fwnode_child))
		ret = sso_create_led(priv, led, fwnode_child);
		if (ret)
			goto __dt_err;
	}

@@ -709,7 +713,7 @@ __sso_led_dt_parse(struct sso_led_priv *priv, struct fwnode_handle *fw_ssoled)
	list_for_each_entry(led, &priv->led_list, list)
		sso_led_shutdown(led);

	return -EINVAL;
	return ret;
}

static int sso_led_dt_parse(struct sso_led_priv *priv)