linux/drivers/leds
Dmitry Baryshkov 3031993b34 led: qcom-lpg: Fix sleeping in atomic
lpg_brighness_set() function can sleep, while led's brightness_set()
callback must be non-blocking. Change LPG driver to use
brightness_set_blocking() instead.

BUG: sleeping function called from invalid context at kernel/locking/mutex.c:580
in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 0, name: swapper/0
preempt_count: 101, expected: 0
INFO: lockdep is turned off.
CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W          6.1.0-rc1-00014-gbe99b089c6fc-dirty #85
Hardware name: Qualcomm Technologies, Inc. DB820c (DT)
Call trace:
 dump_backtrace.part.0+0xe4/0xf0
 show_stack+0x18/0x40
 dump_stack_lvl+0x88/0xb4
 dump_stack+0x18/0x34
 __might_resched+0x170/0x254
 __might_sleep+0x48/0x9c
 __mutex_lock+0x4c/0x400
 mutex_lock_nested+0x2c/0x40
 lpg_brightness_single_set+0x40/0x90
 led_set_brightness_nosleep+0x34/0x60
 led_heartbeat_function+0x80/0x170
 call_timer_fn+0xb8/0x340
 __run_timers.part.0+0x20c/0x254
 run_timer_softirq+0x3c/0x7c
 _stext+0x14c/0x578
 ____do_softirq+0x10/0x20
 call_on_irq_stack+0x2c/0x5c
 do_softirq_own_stack+0x1c/0x30
 __irq_exit_rcu+0x164/0x170
 irq_exit_rcu+0x10/0x40
 el1_interrupt+0x38/0x50
 el1h_64_irq_handler+0x18/0x2c
 el1h_64_irq+0x64/0x68
 cpuidle_enter_state+0xc8/0x380
 cpuidle_enter+0x38/0x50
 do_idle+0x244/0x2d0
 cpu_startup_entry+0x24/0x30
 rest_init+0x128/0x1a0
 arch_post_acpi_subsys_init+0x0/0x18
 start_kernel+0x6f4/0x734
 __primary_switched+0xbc/0xc4

Fixes: 24e2d05d1b ("leds: Add driver for Qualcomm LPG")
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Pavel Machek <pavel@ucw.cz>
2022-10-22 11:56:41 +02:00
..
blink leds: leds-bcm63138: get rid of LED_OFF 2022-07-17 14:55:40 +02:00
flash i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
rgb led: qcom-lpg: Fix sleeping in atomic 2022-10-22 11:56:41 +02:00
simple leds: simatic-ipc-leds-gpio: Make simatic_ipc_led_gpio_table static 2022-09-10 14:16:16 +02:00
trigger leds: trigger: Disable CPU trigger on PREEMPT_RT 2021-10-13 20:07:57 +02:00
Kconfig leds: is31fl319x: Make use of device properties 2022-08-02 16:43:30 +02:00
led-class-flash.c led-class-flash: fix -Wrestrict warning 2021-09-27 16:09:42 +02:00
led-class-multicolor.c leds: multicolor: Introduce a multicolor class definition 2020-07-22 14:41:29 +02:00
led-class.c leds: led-core: Update fwnode with device_set_node 2022-01-12 19:43:14 +01:00
led-core.c leds: move default_state read from fwnode to core 2021-08-18 08:27:30 +02:00
led-triggers.c leds: trigger: use RCU to protect the led_cdevs list 2021-09-27 16:16:42 +02:00
leds-88pm860x.c leds: various: use only available OF children 2020-09-26 21:56:39 +02:00
leds-acer-a500.c leds: Add driver for Acer Iconia Tab A500 2020-09-26 21:56:42 +02:00
leds-adp5520.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 149 2019-05-30 11:25:18 -07:00
leds-an30259a.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-apu.c leds: apu: extend support for PC Engines APU1 with newer firmware 2021-02-19 22:15:10 +01:00
leds-ariel.c leds: leds-ariel: convert comma to semicolon 2021-01-31 10:38:02 +01:00
leds-asic3.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-aw2013.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-bcm6328.c leds: leds-bcm6328: Demote kernel-doc abuse 2021-05-28 11:38:55 +02:00
leds-bcm6358.c leds: parse linux,default-trigger DT property in LED core 2020-09-26 21:56:43 +02:00
leds-bd2802.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-blinkm.c i2c: Make remove callback return void 2022-08-16 12:46:26 +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 leds: various: use device_get_match_data 2020-09-26 21:56:39 +02:00
leds-cr0014114.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
leds-da903x.c leds: da903x: fix use-after-free on unbind 2020-06-22 10:37:58 +02:00
leds-da9052.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
leds-dac124s085.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
leds-el15203000.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
leds-gpio-register.c leds: leds-gpio-register: Supply description for param 'id' 2021-05-28 11:38:54 +02:00
leds-gpio.c leds: move default_state read from fwnode to core 2021-08-18 08:27:30 +02:00
leds-hp6xx.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-ip30.c leds: ip30: compile if COMPILE_TEST=y 2020-09-26 21:56:38 +02:00
leds-ipaq-micro.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-is31fl32xx.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-is31fl319x.c leds: is31fl319x: use simple i2c probe function 2022-08-02 16:43:31 +02:00
leds-lm355x.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lm3530.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lm3532.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lm3533.c Updates for 5.12-rc1. Besides usual fixes and new drivers, we are 2021-02-26 13:56:40 -08:00
leds-lm3642.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lm3692x.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lm3697.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lm36274.c leds: lm36274: Add missed property.h 2021-05-30 23:03:48 +02:00
leds-locomo.c ARM: pxa: split up mach/hardware.h 2022-04-19 16:27:05 +02:00
leds-lp50xx.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lp55xx-common.c leds: lp55xx: remove variable j 2022-10-21 15:12:06 +02:00
leds-lp55xx-common.h leds: lp55xx: Add multicolor framework support to lp55xx 2020-07-22 14:42:06 +02:00
leds-lp3944.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lp3952.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lp5521.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lp5523.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lp5562.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lp8501.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lp8788.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-lp8860.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lt3593.c leds: lt3593: Put fwnode in any case during ->probe() 2021-08-03 23:49:31 +02: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: parse linux,default-trigger DT property in LED core 2020-09-26 21:56:43 +02:00
leds-mc13783.c leds: various: use only available OF children 2020-09-26 21:56:39 +02:00
leds-menf21bmc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
leds-mlxcpld.c leds: leds-mlxcpld: Fix a bunch of kernel-doc formatting issues 2021-05-28 11:39:00 +02:00
leds-mlxreg.c leds: leds-mlxreg: Fix incorrect documentation of struct member 'led_cdev' and 'led_cdev_name' 2021-05-28 11:38:59 +02:00
leds-mt6323.c leds: parse linux,default-trigger DT property in LED core 2020-09-26 21:56:43 +02:00
leds-net48xx.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-netxbig.c leds: Use DEVICE_ATTR_{RW, RO, WO} macros 2020-12-30 19:37:13 +01:00
leds-nic78bx.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
leds-ns2.c leds: ns2: do not guard OF match pointer with of_match_ptr 2020-09-30 19:22:58 +02:00
leds-ot200.c
leds-pca955x.c leds-pca955x: Remove the unused function pca95xx_num_led_regs() 2022-10-21 15:08:07 +02:00
leds-pca963x.c leds: pca963: fix misleading indentation 2022-09-26 23:16:37 +02:00
leds-pca9532.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-pm8058.c leds: parse linux,default-trigger DT property in LED core 2020-09-26 21:56:43 +02:00
leds-powernv.c leds: various: use only available OF children 2020-09-26 21:56:39 +02:00
leds-pwm.c leds: pwm: add support for default-state device property 2021-08-18 08:27:31 +02:00
leds-rb532.c leds: rb532: cleanup whitespace 2020-01-02 22:41:53 +01:00
leds-regulator.c leds: regulator: Make probeable from device tree 2022-05-05 10:04:52 +02:00
leds-s3c24xx.c leds: s3c24xx: Remove unused machine header include 2020-08-17 18:04:06 +02:00
leds-sc27xx-bltc.c leds: various: use only available OF children 2020-09-26 21:56:39 +02:00
leds-spi-byte.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
leds-ss4200.c leds: ss4200: simplify the return expression of register_nasgpio_led() 2020-12-30 19:37:14 +01: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: parse linux,default-trigger DT property in LED core 2020-09-26 21:56:43 +02:00
leds-tca6507.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-ti-lmu-common.c leds: ti-lmu-common: Move static keyword to the front of declaration 2019-09-03 20:34:46 +02:00
leds-tlc591xx.c leds: tlc591xx: fix return value check in tlc591xx_probe() 2021-05-10 11:58:54 +02:00
leds-tps6105x.c leds: tps6105x: add driver for MFD chip LED mode 2019-12-21 20:10:02 +01:00
leds-turris-omnia.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-wm831x-status.c leds: Use DEVICE_ATTR_{RW, RO, WO} macros 2020-12-30 19:37:13 +01:00
leds-wm8350.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-wrap.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds.h leds: move default_state read from fwnode to core 2021-08-18 08:27:30 +02:00
Makefile leds: Move pwm-multicolor driver into rgb directory 2022-05-07 23:09:31 +02:00
TODO leds: TODO: Add documentation about possible subsystem improvements 2020-09-30 19:15:33 +02:00
uleds.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00