summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2013-06-18 22:23:38 +0000
committerFelix Fietkau <nbd@openwrt.org>2013-06-18 22:23:38 +0000
commit2a5e1910d5f769fefb2047d480c9c774954ae27c (patch)
treec32995660078c58ccafa9454db8fad5565eba0fb
parentbfab82392ab267d46de9bee914345c1a1008a6fc (diff)
downloadmtk-20170518-2a5e1910d5f769fefb2047d480c9c774954ae27c.zip
mtk-20170518-2a5e1910d5f769fefb2047d480c9c774954ae27c.tar.gz
mtk-20170518-2a5e1910d5f769fefb2047d480c9c774954ae27c.tar.bz2
linux-3.8: backport a leds-gpio.c crash fix (fixes #13721)
Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 36968
-rw-r--r--target/linux/generic/patches-3.8/040-backport_led_gpio_request_fix.patch25
1 files changed, 25 insertions, 0 deletions
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 0000000..b00d813
--- /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;
+