lkml.org 
[lkml]   [2015]   [Apr]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 02/23] gpio: clean up gpiochip_remove
    Date
    Clean up gpiochip_remove somewhat and only output warning about removing
    chip with GPIOs requested once.

    Signed-off-by: Johan Hovold <johan@kernel.org>
    ---
    drivers/gpio/gpiolib.c | 14 +++++++++-----
    1 file changed, 9 insertions(+), 5 deletions(-)

    diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
    index 59eaa23767d8..5a5c208d31c7 100644
    --- a/drivers/gpio/gpiolib.c
    +++ b/drivers/gpio/gpiolib.c
    @@ -325,8 +325,10 @@ static void gpiochip_free_hogs(struct gpio_chip *chip);
    */
    void gpiochip_remove(struct gpio_chip *chip)
    {
    + struct gpio_desc *desc;
    unsigned long flags;
    unsigned id;
    + bool requested = false;

    gpiochip_unexport(chip);

    @@ -339,15 +341,17 @@ void gpiochip_remove(struct gpio_chip *chip)

    spin_lock_irqsave(&gpio_lock, flags);
    for (id = 0; id < chip->ngpio; id++) {
    - if (test_bit(FLAG_REQUESTED, &chip->desc[id].flags))
    - dev_crit(chip->dev, "REMOVING GPIOCHIP WITH GPIOS STILL REQUESTED\n");
    + desc = &chip->desc[id];
    + desc->chip = NULL;
    + if (test_bit(FLAG_REQUESTED, &desc->flags))
    + requested = true;
    }
    - for (id = 0; id < chip->ngpio; id++)
    - chip->desc[id].chip = NULL;
    -
    list_del(&chip->list);
    spin_unlock_irqrestore(&gpio_lock, flags);

    + if (requested)
    + dev_crit(chip->dev, "REMOVING GPIOCHIP WITH GPIOS STILL REQUESTED\n");
    +
    kfree(chip->desc);
    chip->desc = NULL;
    }
    --
    2.0.5


    \
     
     \ /
      Last update: 2015-04-21 18:01    [W:4.063 / U:0.600 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site