This is a note to let you know that I've just added the patch titled

    Input: gpio_keys - defer probing if GPIO probing is deferred

to the 3.7-stable tree which can be found at:
    
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     input-gpio_keys-defer-probing-if-gpio-probing-is-deferred.patch
and it can be found in the queue-3.7 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.


>From e324ce61ef483dd26d03502d35666ad48a2e1b33 Mon Sep 17 00:00:00 2001
From: Dmitry Torokhov <[email protected]>
Date: Mon, 24 Dec 2012 09:32:46 -0800
Subject: Input: gpio_keys - defer probing if GPIO probing is deferred

From: Dmitry Torokhov <[email protected]>

commit e324ce61ef483dd26d03502d35666ad48a2e1b33 upstream.

If of_get_gpio_flags() returns an error (as in case when GPIO probe is
deferred) the driver would attempt to claim invalid GPIO. It should
propagate the error code up the stack instead so that the probe either
fails or will be retried later (in case of -EPROBE_DEFER).

Reported-by: Gabor Juhos <[email protected]>
Signed-off-by: Dmitry Torokhov <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
 drivers/input/keyboard/gpio_keys.c |   13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

--- a/drivers/input/keyboard/gpio_keys.c
+++ b/drivers/input/keyboard/gpio_keys.c
@@ -587,6 +587,7 @@ gpio_keys_get_devtree_pdata(struct devic
 
        i = 0;
        for_each_child_of_node(node, pp) {
+               int gpio;
                enum of_gpio_flags flags;
 
                if (!of_find_property(pp, "gpios", NULL)) {
@@ -595,9 +596,19 @@ gpio_keys_get_devtree_pdata(struct devic
                        continue;
                }
 
+               gpio = of_get_gpio_flags(pp, 0, &flags);
+               if (gpio < 0) {
+                       error = gpio;
+                       if (error != -EPROBE_DEFER)
+                               dev_err(dev,
+                                       "Failed to get gpio flags, error: %d\n",
+                                       error);
+                       goto err_free_pdata;
+               }
+
                button = &pdata->buttons[i++];
 
-               button->gpio = of_get_gpio_flags(pp, 0, &flags);
+               button->gpio = gpio;
                button->active_low = flags & OF_GPIO_ACTIVE_LOW;
 
                if (of_property_read_u32(pp, "linux,code", &button->code)) {


Patches currently in stable-queue which might be from [email protected] 
are

queue-3.7/x86-8042-enable-a20-using-kbc-to-fix-s3-resume-on-some-msi-laptops.patch
queue-3.7/input-sentelic-only-report-position-of-first-finger-as-st-coordinates.patch
queue-3.7/input-gpio_keys-defer-probing-if-gpio-probing-is-deferred.patch
queue-3.7/input-gpio_keys_polled-defer-probing-if-gpio-probing-is-deferred.patch
queue-3.7/input-walkera0701-fix-crash-on-startup.patch
queue-3.7/input-wacom-fix-touch-support-for-bamboo-fun-cth-461.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to