Commit e6751b0b authored by Pavel Zhigulin's avatar Pavel Zhigulin Committed by Jakub Kicinski
Browse files

net: dsa: hellcreek: fix missing error handling in LED registration



The LED setup routine registered both led_sync_good
and led_is_gm devices without checking the return
values of led_classdev_register(). If either registration
failed, the function continued silently, leaving the
driver in a partially-initialized state and leaking
a registered LED classdev.

Add proper error handling

Fixes: 7d9ee2e8 ("net: dsa: hellcreek: Add PTP status LEDs")
Signed-off-by: default avatarPavel Zhigulin <Pavel.Zhigulin@kaspersky.com>
Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
Acked-by: default avatarKurt Kanzenbach <kurt@linutronix.de>
Link: https://patch.msgid.link/20251113135745.92375-1-Pavel.Zhigulin@kaspersky.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 407a0650
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -376,8 +376,18 @@ static int hellcreek_led_setup(struct hellcreek *hellcreek)
		hellcreek_set_brightness(hellcreek, STATUS_OUT_IS_GM, 1);

	/* Register both leds */
	led_classdev_register(hellcreek->dev, &hellcreek->led_sync_good);
	led_classdev_register(hellcreek->dev, &hellcreek->led_is_gm);
	ret = led_classdev_register(hellcreek->dev, &hellcreek->led_sync_good);
	if (ret) {
		dev_err(hellcreek->dev, "Failed to register sync_good LED\n");
		goto out;
	}

	ret = led_classdev_register(hellcreek->dev, &hellcreek->led_is_gm);
	if (ret) {
		dev_err(hellcreek->dev, "Failed to register is_gm LED\n");
		led_classdev_unregister(&hellcreek->led_sync_good);
		goto out;
	}

	ret = 0;