Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0a0a542f authored by Uwe Kleine-König's avatar Uwe Kleine-König Committed by Wim Van Sebroeck
Browse files

watchdog: gpio-wdt: be more strict about hw_algo matching



strncmp(algo, "toggle", 6) doesn't compare the trailing '\0' byte, so
using

	hw_algo = "toggleboggle"

is recognized the same way as

	hw_algo = "toggle"

. While this doesn't introduce any problems for a device tree that
sticks to the documented settings it's still ugly.

Fix this by using strcmp to only match on "toggle" and "level".

Signed-off-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Reviewed-by: default avatarGuenter Roeck <linux@roeck-us.net>
Signed-off-by: default avatarWim Van Sebroeck <wim@iguana.be>
parent ab54d7f0
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -182,10 +182,10 @@ static int gpio_wdt_probe(struct platform_device *pdev)
	ret = of_property_read_string(pdev->dev.of_node, "hw_algo", &algo);
	ret = of_property_read_string(pdev->dev.of_node, "hw_algo", &algo);
	if (ret)
	if (ret)
		return ret;
		return ret;
	if (!strncmp(algo, "toggle", 6)) {
	if (!strcmp(algo, "toggle")) {
		priv->hw_algo = HW_ALGO_TOGGLE;
		priv->hw_algo = HW_ALGO_TOGGLE;
		f = GPIOF_IN;
		f = GPIOF_IN;
	} else if (!strncmp(algo, "level", 5)) {
	} else if (!strcmp(algo, "level")) {
		priv->hw_algo = HW_ALGO_LEVEL;
		priv->hw_algo = HW_ALGO_LEVEL;
		f = priv->active_low ? GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW;
		f = priv->active_low ? GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW;
	} else {
	} else {