android_kernel_oneplus_msm8998/drivers/leds
Michal Kazior f1289edae5 leds: lp55xx: fix null deref on firmware load failure
[ Upstream commit 5ddb0869bfc1bca6cfc592c74c64a026f936638c ]

I've stumbled upon a kernel crash and the logs
pointed me towards the lp5562 driver:

> <4>[306013.841294] lp5562 0-0030: Direct firmware load for lp5562 failed with error -2
> <4>[306013.894990] lp5562 0-0030: Falling back to user helper
> ...
> <3>[306073.924886] lp5562 0-0030: firmware request failed
> <1>[306073.939456] Unable to handle kernel NULL pointer dereference at virtual address 00000000
> <4>[306074.251011] PC is at _raw_spin_lock+0x1c/0x58
> <4>[306074.255539] LR is at release_firmware+0x6c/0x138
> ...

After taking a look I noticed firmware_release()
could be called with either NULL or a dangling
pointer.

Fixes: 10c06d178d ("leds-lp55xx: support firmware interface")
Signed-off-by: Michal Kazior <michal@plume.com>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-04-27 09:33:51 +02:00
..
trigger leds: triggers: add invert to heartbeat 2015-11-03 08:59:23 +01:00
dell-led.c
Kconfig LED/MIPS: Move SEAD3 LED driver to where it belongs. 2015-11-03 08:59:20 +01:00
led-class-flash.c leds: flash: Remove synchronized flash strobe feature 2015-03-09 17:16:23 -07:00
led-class.c leds: turn off the LED and wait for completion on unregistering LED class device 2018-12-13 09:21:31 +01:00
led-core.c Revert "led: core: Fix brightness setting when setting delay_off=0" 2018-03-11 16:19:45 +01:00
led-triggers.c leds: do not overflow sysfs buffer in led_trigger_show 2018-03-11 16:19:45 +01:00
leds-88pm860x.c leds: 88pm860x: add missing of_node_put 2015-11-03 09:00:06 +01:00
leds-aat1290.c leds: aat1290: add 'static' modifier to init_mm_current_scale 2015-09-17 10:02:08 +02:00
leds-adp5520.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-asic3.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-bcm6328.c leds: bcm6328: add missing of_node_put 2015-11-03 09:00:04 +01:00
leds-bcm6358.c leds: bcm6358: add missing of_node_put 2015-11-03 09:00:02 +01:00
leds-bd2802.c
leds-blinkm.c
leds-clevo-mail.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-cobalt-qube.c leds: leds-cobalt-qube: Use devm_led_classdev_register 2015-11-03 08:59:09 +01:00
leds-cobalt-raq.c drivers/leds: don't use module_init in non-modular leds-cobalt-raq.c 2015-06-22 13:57:09 -07:00
leds-da903x.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-da9052.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-dac124s085.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
leds-fsg.c leds: leds-fsg: Use devm_led_classdev_register 2015-08-28 14:06:23 +02:00
leds-gpio-register.c
leds-gpio.c leds: leds-gpio: Fix return value check in create_gpio_led() 2018-12-13 09:21:31 +01:00
leds-hp6xx.c leds: leds-hp6xx: Use devm_led_classdev_register 2015-11-03 08:59:11 +01:00
leds-ipaq-micro.c leds: leds-ipaq-micro: Fix coding style issues 2015-11-03 08:59:17 +01:00
leds-ktd2692.c leds: ktd2692: avoid harmless maybe-uninitialized warning 2017-05-14 13:32:55 +02:00
leds-lm355x.c leds: Drop owner assignment from i2c_driver 2015-08-28 14:06:02 +02:00
leds-lm3530.c leds: Drop owner assignment from i2c_driver 2015-08-28 14:06:02 +02:00
leds-lm3533.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-lm3642.c leds: Drop owner assignment from i2c_driver 2015-08-28 14:06:02 +02:00
leds-locomo.c leds: leds-locomo.c: Use devm_led_classdev_register 2015-11-03 08:59:50 +01:00
leds-lp55xx-common.c leds: lp55xx: fix null deref on firmware load failure 2019-04-27 09:33:51 +02:00
leds-lp55xx-common.h leds:lp55xx: use the private data instead of updating I2C device platform data 2015-08-28 14:06:28 +02:00
leds-lp3944.c
leds-lp5521.c leds:lp55xx: use the private data instead of updating I2C device platform data 2015-08-28 14:06:28 +02:00
leds-lp5523.c leds: lp5523: fix a missing check of return value of lp55xx_read 2019-03-23 08:44:17 +01:00
leds-lp5562.c leds:lp55xx: use the private data instead of updating I2C device platform data 2015-08-28 14:06:28 +02:00
leds-lp8501.c leds:lp55xx: use the private data instead of updating I2C device platform data 2015-08-28 14:06:28 +02:00
leds-lp8788.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-lp8860.c leds: lp8860: Constify reg_default tables 2015-08-28 14:06:04 +02:00
leds-lt3593.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-max8997.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-max77693.c leds: max77693: Fix module autoload for OF platform driver 2015-09-17 10:02:03 +02:00
leds-mc13783.c leds: leds-mc13783: Use of_get_child_by_name() instead of refcount hack 2015-01-14 10:40:20 -08:00
leds-menf21bmc.c leds: leds-menf21bmc.c: Use devm_led_class_register 2015-11-03 08:59:52 +01:00
leds-net48xx.c leds: leds-net48xx: Use devm_led_classdev_register 2015-11-03 08:59:54 +01:00
leds-netxbig.c leds: netxbig: set led_classdev max_brightness 2015-11-03 08:59:36 +01:00
leds-ns2.c leds: leds-ns2: Fix module autoload for OF platform driver 2015-09-17 10:02:05 +02:00
leds-ot200.c leds: leds-ot200: Use devm_led_classdev_register 2015-11-03 08:59:13 +01:00
leds-pca955x.c leds: pca955x: Correct I2C Functionality 2018-04-13 19:50:09 +02:00
leds-pca963x.c leds: Export OF module alias information in missing drivers 2015-08-28 14:06:30 +02:00
leds-pca9532.c
leds-powernv.c powerpc/powernv: add missing of_node_put 2015-11-03 09:00:00 +01:00
leds-pwm.c leds: call led_pwm_set() in leds-pwm to enforce default LED_OFF 2018-12-13 09:21:30 +01:00
leds-rb532.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-regulator.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds 2014-12-15 18:28:25 -08:00
leds-s3c24xx.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-sead3.c LED/MIPS: Move SEAD3 LED driver to where it belongs. 2015-11-03 08:59:20 +01:00
leds-ss4200.c
leds-sunfire.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-syscon.c leds: syscon: Correct check for syscon_node_to_regmap() errors 2015-08-28 14:06:25 +02:00
leds-tca6507.c leds: Export OF module alias information in missing drivers 2015-08-28 14:06:30 +02:00
leds-tlc591xx.c leds: tlc591xx: Remove redundant I2C_FUNC_SMBUS_BYTE_DATA functionality check 2015-08-28 14:06:14 +02:00
leds-versatile.c
leds-wm831x-status.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-wm8350.c leds: drop owner assignment from platform_drivers 2014-10-20 16:20:43 +02:00
leds-wrap.c leds: leds-wrap.c: Use devm_led_classdev_register 2015-11-03 08:59:58 +01:00
leds.h leds: core: Move LED core callbacks out of led-class.c 2015-11-03 08:59:22 +01:00
Makefile LED/MIPS: Move SEAD3 LED driver to where it belongs. 2015-11-03 08:59:20 +01:00