Alexander Holler
fb31fbeb64
leds: heartbeat: fix bug on panic
With commit 49dca5aebf I introduced
a bug (visible if CONFIG_PROVE_RCU is enabled) which occures when a panic
has happened:
[ 1526.520230] ===============================
[ 1526.520230] [ INFO: suspicious RCU usage. ]
[ 1526.520230] 3.5.0-rc1+ #12 Not tainted
[ 1526.520230] -------------------------------
[ 1526.520230] /c/kernel-tests/mm/include/linux/rcupdate.h:436 Illegal context switch in RCU read-side critical section!
[ 1526.520230]
[ 1526.520230] other info that might help us debug this:
[ 1526.520230]
[ 1526.520230]
[ 1526.520230] rcu_scheduler_active = 1, debug_locks = 0
[ 1526.520230] 3 locks held by net.agent/3279:
[ 1526.520230] #0: (&mm->mmap_sem){++++++}, at: [<ffffffff82f85962>] do_page_fault+0x193/0x390
[ 1526.520230] #1: (panic_lock){+.+...}, at: [<ffffffff82ed2830>] panic+0x37/0x1d3
[ 1526.520230] #2: (rcu_read_lock){.+.+..}, at: [<ffffffff810b9b28>] rcu_lock_acquire+0x0/0x29
[ 1526.520230]
[ 1526.520230] stack backtrace:
[ 1526.520230] Pid: 3279, comm: net.agent Not tainted 3.5.0-rc1+ #12
[ 1526.520230] Call Trace:
[ 1526.520230] [<ffffffff810e1570>] lockdep_rcu_suspicious+0x109/0x112
[ 1526.520230] [<ffffffff810bfe3a>] rcu_preempt_sleep_check+0x45/0x47
[ 1526.520230] [<ffffffff810bfe5a>] __might_sleep+0x1e/0x19a
[ 1526.520230] [<ffffffff82f8010e>] down_write+0x26/0x81
[ 1526.520230] [<ffffffff8276a966>] led_trigger_unregister+0x1f/0x9c
[ 1526.520230] [<ffffffff8276def5>] heartbeat_reboot_notifier+0x15/0x19
[ 1526.520230] [<ffffffff82f85bf5>] notifier_call_chain+0x96/0xcd
[ 1526.520230] [<ffffffff82f85cba>] __atomic_notifier_call_chain+0x8e/0xff
[ 1526.520230] [<ffffffff81094b7c>] ? kmsg_dump+0x37/0x1eb
[ 1526.520230] [<ffffffff82f85d3f>] atomic_notifier_call_chain+0x14/0x16
[ 1526.520230] [<ffffffff82ed28e1>] panic+0xe8/0x1d3
[ 1526.520230] [<ffffffff811473e2>] out_of_memory+0x15d/0x1d3
So in case of a panic, now just turn of the LED. Other approaches like
scheduling a work to unregister the trigger aren't working because there
isn't much which still runs after a panic occured (except timers).
Signed-off-by: Alexander Holler <holler@ahsoftware.de>
Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
|
2012-07-04 15:55:19 +08:00 |
| .. |
|
dell-led.c
|
|
|
|
Kconfig
|
leds: Make LEDS_ASIC3 and LEDS_RENESAS_TPU depend on LEDS_CLASS=y
|
2012-06-12 10:56:25 +08:00 |
|
led-class.c
|
leds: fixed a coding style issue.
|
2012-06-12 10:56:24 +08:00 |
|
led-core.c
|
leds: don't disable blinking when writing the same value to delay_on or delay_off
|
2012-06-12 10:56:24 +08:00 |
|
led-triggers.c
|
driver-core: remove sysdev.h usage.
|
2011-12-21 16:26:03 -08:00 |
|
leds-88pm860x.c
|
led: Modified power control of pm860x led
|
2012-03-06 18:46:53 +01:00 |
|
leds-adp5520.c
|
leds: convert led platform drivers to module_platform_driver
|
2012-01-10 16:30:48 -08:00 |
|
leds-asic3.c
|
leds: convert led platform drivers to module_platform_driver
|
2012-01-10 16:30:48 -08:00 |
|
leds-atmel-pwm.c
|
leds-atmel-pwm.c: Make pwmled_probe() __devinit
|
2012-04-17 16:29:31 +02:00 |
|
leds-bd2802.c
|
drivers/leds/leds-bd2802.c: use gpio_request_one()
|
2012-01-10 16:30:49 -08:00 |
|
leds-clevo-mail.c
|
module_param: make bool parameters really bool (drivers & misc)
|
2012-01-13 09:32:20 +10:30 |
|
leds-cobalt-qube.c
|
leds: convert led platform drivers to module_platform_driver
|
2012-01-10 16:30:48 -08:00 |
|
leds-cobalt-raq.c
|
|
|
|
leds-da903x.c
|
leds: convert led platform drivers to module_platform_driver
|
2012-01-10 16:30:48 -08:00 |
|
leds-da9052.c
|
leds: driver for DA9052/53 PMIC v2
|
2012-05-29 16:22:31 -07:00 |
|
leds-dac124s085.c
|
leds: convert leds-dac124s085 to module_spi_driver
|
2012-01-10 16:30:49 -08:00 |
|
leds-fsg.c
|
leds: convert led platform drivers to module_platform_driver
|
2012-01-10 16:30:48 -08:00 |
|
leds-gpio-register.c
|
|
|
|
leds-gpio.c
|
drivers/leds/leds-gpio.c: use linux/gpio.h rather than asm/gpio.h
|
2012-03-23 16:58:35 -07:00 |
|
leds-hp6xx.c
|
leds: convert led platform drivers to module_platform_driver
|
2012-01-10 16:30:48 -08:00 |
|
leds-lm3530.c
|
drivers/leds/leds-lm3530.c: simplify als configuration on initialization
|
2012-05-29 16:22:32 -07:00 |
|
leds-lm3533.c
|
leds: add LM3533 LED driver
|
2012-05-29 16:22:32 -07:00 |
|
leds-locomo.c
|
|
|
|
leds-lp3944.c
|
leds: convert led i2c drivers to module_i2c_driver
|
2012-01-10 16:30:48 -08:00 |
|
leds-lp5521.c
|
drivers/leds/leds-lp5521.c: fix lp5521_read() error handling
|
2012-05-29 16:22:31 -07:00 |
|
leds-lp5523.c
|
drivers/leds/leds-lp5523.c: constify some data
|
2012-03-23 16:58:35 -07:00 |
|
leds-lt3593.c
|
leds: convert led platform drivers to module_platform_driver
|
2012-01-10 16:30:48 -08:00 |
|
leds-max8997.c
|
leds: Add suuport for MAX8997-LED driver
|
2012-01-09 00:37:41 +01:00 |
|
leds-mc13783.c
|
leds: Use kcalloc instead of kzalloc to allocate array
|
2012-05-29 16:22:31 -07:00 |
|
leds-net48xx.c
|
|
|
|
leds-netxbig.c
|
drivers/leds: correct __devexit annotations
|
2012-05-10 15:06:44 -07:00 |
|
leds-ns2.c
|
drivers/leds: correct __devexit annotations
|
2012-05-10 15:06:44 -07:00 |
|
leds-ot200.c
|
leds: add led driver for Bachmann's ot200
|
2012-01-23 08:38:47 -08:00 |
|
leds-pca955x.c
|
drivers/leds/leds-pca955x.c: fix race condition while setting brightness on several LEDs
|
2012-05-29 16:22:32 -07:00 |
|
leds-pca9532.c
|
leds: convert led i2c drivers to module_i2c_driver
|
2012-01-10 16:30:48 -08:00 |
|
leds-pca9633.c
|
drivers/leds/leds-pca9633.c: remove unused 'adapter' variable
|
2012-03-23 16:58:35 -07:00 |
|
leds-pwm.c
|
leds: convert led platform drivers to module_platform_driver
|
2012-01-10 16:30:48 -08:00 |
|
leds-rb532.c
|
leds: convert led platform drivers to module_platform_driver
|
2012-01-10 16:30:48 -08:00 |
|
leds-regulator.c
|
leds: convert led platform drivers to module_platform_driver
|
2012-01-10 16:30:48 -08:00 |
|
leds-renesas-tpu.c
|
leds: convert led platform drivers to module_platform_driver
|
2012-01-10 16:30:48 -08:00 |
|
leds-s3c24xx.c
|
leds: convert led platform drivers to module_platform_driver
|
2012-01-10 16:30:48 -08:00 |
|
leds-ss4200.c
|
module_param: make bool parameters really bool (drivers & misc)
|
2012-01-13 09:32:20 +10:30 |
|
leds-sunfire.c
|
|
|
|
leds-tca6507.c
|
drivers/leds/leds-tca6507.c: remove obsolete cleanup for clientdata
|
2012-03-23 16:58:34 -07:00 |
|
leds-wm831x-status.c
|
leds: convert wm831x status driver to devm_kzalloc()
|
2012-01-10 16:30:49 -08:00 |
|
leds-wm8350.c
|
leds: convert wm8350 driver to devm_kzalloc()
|
2012-01-10 16:30:49 -08:00 |
|
leds-wrap.c
|
|
|
|
leds.h
|
|
|
|
ledtrig-backlight.c
|
leds: change existing triggers to use activated flag
|
2012-05-29 16:22:31 -07:00 |
|
ledtrig-default-on.c
|
|
|
|
ledtrig-gpio.c
|
leds: change existing triggers to use activated flag
|
2012-05-29 16:22:31 -07:00 |
|
ledtrig-heartbeat.c
|
leds: heartbeat: fix bug on panic
|
2012-07-04 15:55:19 +08:00 |
|
ledtrig-ide-disk.c
|
|
|
|
ledtrig-timer.c
|
leds: change ledtrig-timer to use activated flag
|
2012-05-29 16:22:31 -07:00 |
|
ledtrig-transient.c
|
leds: add new transient trigger for one shot timer activation
|
2012-05-29 16:22:32 -07:00 |
|
Makefile
|
leds: add LM3533 LED driver
|
2012-05-29 16:22:32 -07:00 |