On Fri, 23 Jul 2010 06:58:07 +0200
Uwe Kleine-K__nig <[email protected]> wrote:

> Hello,
> 
> On Thu, Jul 22, 2010 at 02:05:58PM -0700, Gregory Bean wrote:
> > Make gpio_unexport generate success instead of an -EINVAL
> > if asked to unexport a line which is not exported, because
> > the only result of that condition is a pr_debug
> > which complains of what is really a harmless no-op:
> > when an unexported gpio is unexported again, nothing happens.
> > That's not a failure, just a trivial border case.
> > Since gpio_free calls gpio_unexport unconditionally
> > and exported gpio lines are uncommon, most calls to
> > gpio_free with debug flags enabled generate -EINVAL
> > warnings in the log, causing unnecessary stress.
> I noticed that a few days ago, too.  Just didn't come around to fix it
> myself.
>  
> > Signed-off-by: Gregory Bean <[email protected]>
> Acked-by: Uwe Kleine-K__nig <[email protected]>
> 

Jon got there first ;)



Subject: gpio: fix spurious printk when freeing a gpio


From: Jon Povey <[email protected]>

When freeing a gpio that has not been exported, gpio_unexport() prints a
debug message when it should just fall through silently.

Example spurious message:

        gpio_unexport: gpio0 status -22

Signed-off-by: Jon Povey <[email protected]>
Cc: David Brownell <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
---

 drivers/gpio/gpiolib.c |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff -puN drivers/gpio/gpiolib.c~gpio-fix-spurious-printk-when-freeing-a-gpio 
drivers/gpio/gpiolib.c
--- a/drivers/gpio/gpiolib.c~gpio-fix-spurious-printk-when-freeing-a-gpio
+++ a/drivers/gpio/gpiolib.c
@@ -893,10 +893,12 @@ EXPORT_SYMBOL_GPL(gpio_sysfs_set_active_
 void gpio_unexport(unsigned gpio)
 {
        struct gpio_desc        *desc;
-       int                     status = -EINVAL;
+       int                     status = 0;
 
-       if (!gpio_is_valid(gpio))
+       if (!gpio_is_valid(gpio)) {
+               status = -EINVAL;
                goto done;
+       }
 
        mutex_lock(&sysfs_lock);
 
@@ -911,7 +913,6 @@ void gpio_unexport(unsigned gpio)
                        clear_bit(FLAG_EXPORT, &desc->flags);
                        put_device(dev);
                        device_unregister(dev);
-                       status = 0;
                } else
                        status = -ENODEV;
        }
_

--
To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to