linux/drivers/leds
Pavel Machek 8c0f693c6e leds: avoid flush_work in atomic context
It turns out that various triggers use led_blink_setup() from atomic
context, so we can't do a flush_work there. Flush is still needed for
slow LEDs, but we can move it to sysfs code where it is safe.

    WARNING: inconsistent lock state
    5.2.0-rc1 #1 Tainted: G        W
    --------------------------------
    inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage.
    swapper/1/0 [HC0[0]:SC1[1]:HE1:SE0] takes:
    000000006e30541b
    ((work_completion)(&led_cdev->set_brightness_work)){+.?.}, at:
    +__flush_work+0x3b/0x38a
    {SOFTIRQ-ON-W} state was registered at:
      lock_acquire+0x146/0x1a1
     __flush_work+0x5b/0x38a
     flush_work+0xb/0xd
     led_blink_setup+0x1e/0xd3
     led_blink_set+0x3f/0x44
     tpt_trig_timer+0xdb/0x106
     ieee80211_mod_tpt_led_trig+0xed/0x112

Fixes: 0db37915d9 ("leds: avoid races with workqueue")
Signed-off-by: Pavel Machek <pavel@ucw.cz>
Tested-by: Hugh Dickins <hughd@google.com>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-05-31 22:29:14 +02:00
..
trigger leds: avoid flush_work in atomic context 2019-05-31 22:29:14 +02:00
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
led-class-flash.c leds: flash: Remove checking for state < 1 in flash_strobe_store() 2016-01-04 09:57:37 +01:00
led-class.c leds: avoid races with workqueue 2019-05-02 22:54:51 +02:00
led-core.c leds: avoid flush_work in atomic context 2019-05-31 22:29:14 +02:00
led-triggers.c led: triggers: Initialize LED_INIT_DEFAULT_TRIGGER if trigger is brought after class 2018-12-10 21:31:55 +01:00
leds-88pm860x.c leds: 88pm860x: Use of_node_name_eq for node name comparisons 2018-12-06 21:30:08 +01:00
leds-aat1290.c LED updates for 4.14 2017-09-07 14:33:13 -07:00
leds-adp5520.c treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00
leds-an30259a.c leds: add Panasonic AN30259A support 2018-09-10 21:31:11 +02:00
leds-apu.c leds: Modify PC Engines apu/apu2 driver to support apu3 2018-06-28 21:34:43 +02:00
leds-as3645a.c leds: as3645a: Switch to fwnode property API 2019-03-18 19:21:51 +01:00
leds-asic3.c
leds-bcm6328.c leds: bcm6328: fix signal source assignment for leds 4 to 7 2017-06-13 20:36:56 +02:00
leds-bcm6358.c leds: bcm6358: remove unneeded busy status check 2016-01-04 09:57:40 +01:00
leds-bd2802.c leds: bd2802: Remove work queue 2016-01-04 09:57:32 +01:00
leds-blinkm.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
leds-clevo-mail.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
leds-cobalt-qube.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
leds-cobalt-raq.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 1 2019-05-21 11:28:39 +02:00
leds-cpcap.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 89 2019-05-24 17:37:52 +02:00
leds-cr0014114.c leds: Use struct_size() in allocation 2018-06-12 16:19:22 -07:00
leds-da903x.c leds: da903x: Use devm_led_classdev_register 2016-03-14 09:22:22 +01:00
leds-da9052.c treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00
leds-dac124s085.c leds: dac124d085: Remove work queue 2016-01-04 09:57:34 +01:00
leds-fsg.c
leds-gpio-register.c
leds-gpio.c leds: gpio: Drop unneeded manual of_node assignment 2018-12-08 18:17:14 +01:00
leds-hp6xx.c leds: convert IDE trigger to common disk trigger 2016-06-20 09:57:56 +02:00
leds-ipaq-micro.c leds: ipaq-micro: Implement brightness_set_blocking op 2016-01-04 09:57:38 +01:00
leds-is31fl32xx.c leds: Convert to using %pOF instead of full_name 2017-08-12 23:50:07 +02:00
leds-is31fl319x.c leds: is31fl319x: 1/3/6/9-channel light effect led driver 2016-08-15 14:02:31 +02:00
leds-ktd2692.c leds: ktd2692: avoid harmless maybe-uninitialized warning 2017-01-26 21:16:38 +01:00
leds-lm355x.c leds: lm355x: Remove work queue 2016-01-04 09:57:36 +01:00
leds-lm3530.c
leds-lm3532.c leds: lm3532: Introduce the lm3532 LED driver 2019-04-07 20:45:49 +02:00
leds-lm3533.c leds: lm3533: constify attribute_group structure 2017-08-29 21:10:37 +02:00
leds-lm3601x.c leds: lm3601x: Introduce the lm3601x LED driver 2018-05-23 21:44:47 +02:00
leds-lm3642.c leds: lm3642: Remove work queue 2016-01-04 09:57:32 +01:00
leds-lm3692x.c leds: lm3692x: Support LED sync configuration 2018-07-03 22:27:12 +02:00
leds-locomo.c
leds-lp55xx-common.c leds: lp55xx: fix null deref on firmware load failure 2019-02-14 22:03:44 +01:00
leds-lp55xx-common.h leds: lp55xx: Remove work queue 2016-01-04 09:57:33 +01:00
leds-lp3944.c leds: lp3944: improve wording and formatting in a comment 2016-03-14 09:22:20 +01:00
leds-lp3952.c leds: lp3952: Use 'if (ret)' pattern 2017-03-23 20:33:59 +01:00
leds-lp5521.c treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00
leds-lp5523.c leds: lp5523: fix a missing check of return value of lp55xx_read 2019-01-17 22:27:39 +01:00
leds-lp5562.c treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00
leds-lp8501.c treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00
leds-lp8788.c leds: lp8788: Use devm_led_classdev_register 2016-03-14 09:22:22 +01:00
leds-lp8860.c leds: lp8860: Various fixes to align with LED framework 2018-01-08 21:28:12 +01:00
leds-lt3593.c leds: lt3593: Remove unneeded assignment in lt3593_led_probe 2019-03-31 20:12:30 +02:00
leds-max8997.c leds: max8997: use mode when calling max8997_led_set_mode 2018-07-03 22:12:41 +02:00
leds-max77650.c leds: max77650: Add LEDs support 2019-05-08 12:07:02 +01:00
leds-max77693.c media: v4l2-flash-led-class: Create separate sub-devices for indicators 2017-08-26 20:26:35 -04:00
leds-mc13783.c treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00
leds-menf21bmc.c leds: leds-menf21bmc.c: Use devm_led_class_register 2015-11-03 08:59:52 +01:00
leds-mlxcpld.c treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00
leds-mlxreg.c leds: mlxreg: Add support for capability register 2019-02-23 09:20:46 -08:00
leds-mt6323.c leds: mt6323: Fix an off by one bug in probe 2017-03-23 20:23:57 +01:00
leds-net48xx.c leds: leds-net48xx: Use devm_led_classdev_register 2015-11-03 08:59:54 +01:00
leds-netxbig.c treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00
leds-nic78bx.c leds: Add user LED driver for NIC78bx device 2016-11-22 12:07:04 +01:00
leds-ns2.c leds: ns2: Change unsigned to unsigned int 2018-08-06 23:03:12 +02:00
leds-ot200.c
leds-pca955x.c leds: pca955x: Make use of device property API 2019-03-31 20:12:30 +02:00
leds-pca963x.c leds: pca963x: Make use of device property API 2019-03-31 20:12:31 +02:00
leds-pca9532.c leds: pca9532: fix a potential NULL pointer dereference 2019-03-30 18:50:00 +01:00
leds-pm8058.c leds: pm8058: Silence pointer to integer size warning 2017-12-01 08:57:42 +00:00
leds-powernv.c leds: powernv: add of_node_put() 2018-11-21 20:23:14 +01:00
leds-pwm.c leds: pwm: Use OF variant of LED registering function 2018-12-08 18:59:47 +01:00
leds-rb532.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
leds-regulator.c leds: regulator: Remove work queue 2016-01-04 09:57:35 +01:00
leds-s3c24xx.c leds: s3c24xx: Use devm_led_classdev_register 2016-03-14 09:22:22 +01:00
leds-sc27xx-bltc.c leds: sc27xx: Add pattern_set/clear interfaces for LED controller 2018-10-11 21:59:11 +02:00
leds-ss4200.c dmi: Mark all struct dmi_system_id instances const 2017-09-14 11:59:30 +02:00
leds-sunfire.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
leds-syscon.c leds: syscon: Make the driver explicitly non-modular 2016-01-04 09:57:39 +01:00
leds-tca6507.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
leds-tlc591xx.c leds: tlc591xx: add missing of_node_put 2017-07-16 18:45:43 +02:00
leds-wm831x-status.c leds: wm831x-status: Use sysfs_match_string() helper 2018-05-03 21:50:13 +02:00
leds-wm8350.c leds: wm8350: Remove work queue 2016-01-04 09:57:35 +01:00
leds-wrap.c leds: leds-wrap.c: Use devm_led_classdev_register 2015-11-03 08:59:58 +01:00
leds.h leds: triggers: Allow to switch the trigger to "panic" on a kernel panic 2016-05-06 10:22:09 +02:00
Makefile Immutable branch between MFD, ARM and Net due for the 5.2 merge window 2019-05-14 08:09:23 +01:00
uleds.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03:00