summaryrefslogtreecommitdiffstats
path: root/drivers/leds/leds-gpio.c
diff options
context:
space:
mode:
authorDmitry Eremin-Solenikov <dbaryshkov@gmail.com>2009-11-16 01:48:32 +0300
committerRichard Purdie <rpurdie@linux.intel.com>2009-11-16 11:50:42 +0000
commit0b4634fce1f3f7028421630260d54093276db490 (patch)
tree0925911860ea11673590846fffa55c1cd2d43fd7 /drivers/leds/leds-gpio.c
parent716bdf1874647196ac16dd2a1ad359d88844795a (diff)
downloadop-kernel-dev-0b4634fce1f3f7028421630260d54093276db490.zip
op-kernel-dev-0b4634fce1f3f7028421630260d54093276db490.tar.gz
leds-gpio: fix possible crash on OF device unbinding
If there are leds present in the OF tree, but the GPIOs for (some) of them are unavailable, led_data doesn't get populated with correct devices. Then, on device unbinding, one can crash the kernel. Workaround this by setting led->gpio to invalid value early. Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'drivers/leds/leds-gpio.c')
-rw-r--r--drivers/leds/leds-gpio.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c
index 7467980..e5225d2 100644
--- a/drivers/leds/leds-gpio.c
+++ b/drivers/leds/leds-gpio.c
@@ -78,6 +78,8 @@ static int __devinit create_gpio_led(const struct gpio_led *template,
{
int ret, state;
+ led_dat->gpio = -1;
+
/* skip leds that aren't available */
if (!gpio_is_valid(template->gpio)) {
printk(KERN_INFO "Skipping unavailable LED gpio %d (%s)\n",
OpenPOWER on IntegriCloud