From e8fc467b85dba3d823035d4a20878a3bc8b30250 Mon Sep 17 00:00:00 2001 From: Ming Lei Date: Mon, 13 Feb 2012 22:53:20 +0800 Subject: [PATCH] --- yaml --- r: 296905 b: refs/heads/master c: 864533ceb6db336dead389577c102a8b792a121a h: refs/heads/master i: 296903: 9caf46097f9405af4cb429e432af9bc7c3db79ce v: v3 --- [refs] | 2 +- trunk/drivers/gpio/gpiolib.c | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 22fc31d40c10..e505904818c5 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ff64abefb6680dfc2aca7ecaa5e695949e7335c9 +refs/heads/master: 864533ceb6db336dead389577c102a8b792a121a diff --git a/trunk/drivers/gpio/gpiolib.c b/trunk/drivers/gpio/gpiolib.c index 17fdf4b6af93..d77354068b90 100644 --- a/trunk/drivers/gpio/gpiolib.c +++ b/trunk/drivers/gpio/gpiolib.c @@ -873,6 +873,7 @@ void gpio_unexport(unsigned gpio) { struct gpio_desc *desc; int status = 0; + struct device *dev = NULL; if (!gpio_is_valid(gpio)) { status = -EINVAL; @@ -884,19 +885,20 @@ void gpio_unexport(unsigned gpio) desc = &gpio_desc[gpio]; if (test_bit(FLAG_EXPORT, &desc->flags)) { - struct device *dev = NULL; dev = class_find_device(&gpio_class, NULL, desc, match_export); if (dev) { gpio_setup_irq(desc, dev, 0); clear_bit(FLAG_EXPORT, &desc->flags); - put_device(dev); - device_unregister(dev); } else status = -ENODEV; } mutex_unlock(&sysfs_lock); + if (dev) { + device_unregister(dev); + put_device(dev); + } done: if (status) pr_debug("%s: gpio%d status %d\n", __func__, gpio, status);