From 79d96c93610c108e734b9069115cc9e15ed8d929 Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Tue, 18 Jun 2013 22:23:38 +0000
Subject: linux-3.8: backport a leds-gpio.c crash fix (fixes #13721)

Signed-off-by: Felix Fietkau <nbd@openwrt.org>

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36968 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 .../040-backport_led_gpio_request_fix.patch        | 25 ++++++++++++++++++++++
 1 file changed, 25 insertions(+)
 create mode 100644 target/linux/generic/patches-3.8/040-backport_led_gpio_request_fix.patch

(limited to 'target/linux')

diff --git a/target/linux/generic/patches-3.8/040-backport_led_gpio_request_fix.patch b/target/linux/generic/patches-3.8/040-backport_led_gpio_request_fix.patch
new file mode 100644
index 0000000000..b00d813840
--- /dev/null
+++ b/target/linux/generic/patches-3.8/040-backport_led_gpio_request_fix.patch
@@ -0,0 +1,25 @@
+--- a/drivers/leds/leds-gpio.c
++++ b/drivers/leds/leds-gpio.c
+@@ -107,6 +107,10 @@ static int create_gpio_led(const struct 
+ 		return 0;
+ 	}
+ 
++	ret = devm_gpio_request(parent, template->gpio, template->name);
++	if (ret < 0)
++		return ret;
++
+ 	led_dat->cdev.name = template->name;
+ 	led_dat->cdev.default_trigger = template->default_trigger;
+ 	led_dat->gpio = template->gpio;
+@@ -126,10 +130,7 @@ static int create_gpio_led(const struct 
+ 	if (!template->retain_state_suspended)
+ 		led_dat->cdev.flags |= LED_CORE_SUSPENDRESUME;
+ 
+-	ret = devm_gpio_request_one(parent, template->gpio,
+-				    (led_dat->active_low ^ state) ?
+-				    GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW,
+-				    template->name);
++	ret = gpio_direction_output(led_dat->gpio, led_dat->active_low ^ state);
+ 	if (ret < 0)
+ 		return ret;
+ 
-- 
cgit v1.2.3