linux-stable/drivers/leds
Christian Marangi 3f360227cb leds: trigger: netdev: Fix kernel panic on interface rename trig notify
[ Upstream commit 415798bc07 ]

Commit d5e01266e7 ("leds: trigger: netdev: add additional specific link
speed mode") in the various changes, reworked the way to set the LINKUP
mode in commit cee4bd16c3 ("leds: trigger: netdev: Recheck
NETDEV_LED_MODE_LINKUP on dev rename") and moved it to a generic function.

This changed the logic where, in the previous implementation the dev
from the trigger event was used to check if the carrier was ok, but in
the new implementation with the generic function, the dev in
trigger_data is used instead.

This is problematic and cause a possible kernel panic due to the fact
that the dev in the trigger_data still reference the old one as the
new one (passed from the trigger event) still has to be hold and saved
in the trigger_data struct (done in the NETDEV_REGISTER case).

On calling of get_device_state(), an invalid net_dev is used and this
cause a kernel panic.

To handle this correctly, move the call to get_device_state() after the
new net_dev is correctly set in trigger_data (in the NETDEV_REGISTER
case) and correctly parse the new dev.

Fixes: d5e01266e7 ("leds: trigger: netdev: add additional specific link speed mode")
Cc: stable@vger.kernel.org
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://lore.kernel.org/r/20240203235413.1146-1-ansuelsmth@gmail.com
Signed-off-by: Lee Jones <lee@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-04-03 15:32:15 +02:00
..
blink leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
flash leds: sgm3140: Add missing timer cleanup and flash gpio control 2024-03-26 18:17:18 -04:00
rgb - New Drivers 2024-01-17 15:25:27 -08:00
simple leds: simatic-ipc-leds-gpio: Convert to platform remove callback returning void 2023-11-01 11:28:33 +00:00
trigger leds: trigger: netdev: Fix kernel panic on interface rename trig notify 2024-04-03 15:32:15 +02:00
Kconfig leds: sun50i-a100: Convert to be agnostic to property provider 2023-12-21 14:45:35 +00:00
Makefile leds: max5970: Add support for max5970 2023-12-13 11:28:41 +00:00
TODO
led-class-flash.c
led-class-multicolor.c leds: multicolor: Use rounded division when calculating color components 2023-08-17 11:25:03 +01:00
led-class.c leds: class: Don't expose color sysfs entry 2023-11-22 11:46:03 +00:00
led-core.c - Core Frameworks 2023-11-02 14:53:19 -10:00
led-triggers.c leds: trigger: Remove unused function led_trigger_rename_static() 2023-12-13 15:55:09 +00:00
leds-88pm860x.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-acer-a500.c
leds-adp5520.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-an30259a.c leds: Remove redundant of_match_ptr() 2023-08-17 13:28:25 +01:00
leds-apu.c
leds-ariel.c leds: Explicitly include correct DT includes 2023-07-28 10:02:32 +01:00
leds-aw200xx.c leds: aw200xx: Add support for aw20108 device 2023-12-13 11:29:01 +00:00
leds-aw2013.c leds: aw2013: Unlock mutex before destroying it 2024-03-26 18:17:18 -04:00
leds-bcm6328.c leds: bcm6328: Get rid of custom led_init_default_state_get() 2023-01-30 08:03:37 +00:00
leds-bcm6358.c leds: bcm6358: Get rid of custom led_init_default_state_get() 2023-01-30 08:03:38 +00:00
leds-bd2606mvv.c leds: Switch i2c drivers back to use .probe() 2023-05-25 12:16:22 +01:00
leds-bd2802.c leds: Switch i2c drivers back to use .probe() 2023-05-25 12:16:22 +01:00
leds-blinkm.c leds: blinkm: Replace all non-returning strlcpy with strscpy 2023-05-25 12:31:18 +01:00
leds-cht-wcove.c leds: cht-wcove: Remove unneeded semicolon 2023-06-08 18:11:14 +01:00
leds-clevo-mail.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-cobalt-qube.c
leds-cobalt-raq.c
leds-cpcap.c leds: Explicitly include correct DT includes 2023-07-28 10:02:32 +01:00
leds-cr0014114.c leds: cr0014114: Annotate struct cr0014114 with __counted_by 2023-11-01 11:28:26 +00:00
leds-da903x.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-da9052.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-dac124s085.c
leds-el15203000.c leds: el15203000: Annotate struct el15203000 with __counted_by 2023-11-01 11:28:28 +00:00
leds-gpio-register.c
leds-gpio.c leds: gpio: Add kernel log if devm_fwnode_gpiod_get() fails 2023-12-13 15:45:55 +00:00
leds-hp6xx.c
leds-ip30.c leds: ip30: Convert to devm_platform_ioremap_resource() 2023-07-28 09:26:21 +01:00
leds-ipaq-micro.c
leds-is31fl32xx.c leds: Explicitly include correct DT includes 2023-07-28 10:02:32 +01:00
leds-is31fl319x.c leds: Switch i2c drivers back to use .probe() 2023-05-25 12:16:22 +01:00
leds-lm355x.c leds: Switch i2c drivers back to use .probe() 2023-05-25 12:16:22 +01:00
leds-lm3530.c leds: Switch i2c drivers back to use .probe() 2023-05-25 12:16:22 +01:00
leds-lm3532.c leds: Switch i2c drivers back to use .probe() 2023-05-25 12:16:22 +01:00
leds-lm3533.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-lm3642.c leds: Switch i2c drivers back to use .probe() 2023-05-25 12:16:22 +01:00
leds-lm3692x.c leds: lm392x: Convert to use maple tree register cache 2023-11-01 11:29:02 +00:00
leds-lm3697.c leds: lm3697: Annotate struct lm3697 with __counted_by 2023-11-01 11:28:31 +00:00
leds-lm36274.c
leds-locomo.c
leds-lp50xx.c leds: Switch i2c drivers back to use .probe() 2023-05-25 12:16:22 +01:00
leds-lp55xx-common.c leds: lp55xx: Use gpiod_set_value_cansleep() 2023-11-01 11:28:42 +00:00
leds-lp55xx-common.h
leds-lp3944.c leds: Switch i2c drivers back to use .probe() 2023-05-25 12:16:22 +01:00
leds-lp3952.c leds: lp3952: Convert to use maple tree register cache 2023-11-01 11:29:03 +00:00
leds-lp5521.c leds: lp5521: Add an error check in lp5521_post_init_device 2023-11-01 11:29:26 +00:00
leds-lp5523.c leds: Remove redundant of_match_ptr() 2023-08-17 13:28:25 +01:00
leds-lp5562.c leds: Remove redundant of_match_ptr() 2023-08-17 13:28:25 +01:00
leds-lp8501.c leds: Remove redundant of_match_ptr() 2023-08-17 13:28:25 +01:00
leds-lp8788.c
leds-lp8860.c leds: Switch i2c drivers back to use .probe() 2023-05-25 12:16:22 +01:00
leds-lt3593.c
leds-max5970.c leds: max5970: Add missing headers 2023-12-21 14:42:59 +00:00
leds-max8997.c leds: max8997: Don't error if there is no pdata 2022-10-22 11:55:03 +02:00
leds-max77650.c
leds-mc13783.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-menf21bmc.c
leds-mlxcpld.c
leds-mlxreg.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-mt6323.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-net48xx.c
leds-netxbig.c
leds-nic78bx.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-ns2.c leds: ns2: Slightly simplify a memory allocation 2023-07-28 11:58:04 +01:00
leds-ot200.c
leds-pca955x.c leds: pca955x: Cleanup OF/ID table terminators 2023-11-01 11:28:55 +00:00
leds-pca963x.c leds: Switch i2c drivers back to use .probe() 2023-05-25 12:16:22 +01:00
leds-pca995x.c leds: pca995x: Fix MODULE_DEVICE_TABLE for OF 2023-08-15 18:30:07 +01:00
leds-pca9532.c leds: Explicitly include correct DT includes 2023-07-28 10:02:32 +01:00
leds-pm8058.c leds: Explicitly include correct DT includes 2023-07-28 10:02:32 +01:00
leds-powernv.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-pwm.c pwm: Rename pwm_apply_state() to pwm_apply_might_sleep() 2023-12-20 16:07:04 +01:00
leds-rb532.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-regulator.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-sc27xx-bltc.c leds: sc27xx: Move mutex_init() down 2023-11-01 11:29:15 +00:00
leds-spi-byte.c leds: Explicitly include correct DT includes 2023-07-28 10:02:32 +01:00
leds-ss4200.c
leds-sun50i-a100.c leds: sun50i-a100: Convert to be agnostic to property provider 2023-12-21 14:45:35 +00:00
leds-sunfire.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-syscon.c leds: syscon: Support 'reg' in addition to 'offset' for register address 2023-12-13 11:28:26 +00:00
leds-tca6507.c leds: tca6507: Use devm_led_classdev_register() to simplify remove path 2023-12-13 11:28:41 +00:00
leds-ti-lmu-common.c leds: Explicitly include correct DT includes 2023-07-28 10:02:32 +01:00
leds-tlc591xx.c leds: Explicitly include correct DT includes 2023-07-28 10:02:32 +01:00
leds-tps6105x.c
leds-turris-omnia.c leds: turris-omnia: Fix brightness setting and trigger activating 2023-11-01 11:29:16 +00:00
leds-wm831x-status.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-wm8350.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-wrap.c
leds.h leds: Move led_init_default_state_get() to the global header 2023-01-30 08:03:35 +00:00
uleds.c leds: uleds: Use module_misc_device macro to simplify the code 2023-08-18 11:42:54 +01:00