[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <5388CB1B.3090802@metafoo.de>
Date: Fri, 30 May 2014 20:16:59 +0200
From: Lars-Peter Clausen <lars@...afoo.de>
To: David Daney <ddaney.cavm@...il.com>
CC: abdoulaye berthe <berthe.ab@...il.com>,
Geert Uytterhoeven <geert@...ux-m68k.org>,
Linus Walleij <linus.walleij@...aro.org>,
Alexandre Courbot <gnurou@...il.com>, m@...s.ch,
"linux-gpio@...r.kernel.org" <linux-gpio@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"linux-arm-kernel@...ts.infradead.org"
<linux-arm-kernel@...ts.infradead.org>,
Linux MIPS Mailing List <linux-mips@...ux-mips.org>,
"linuxppc-dev@...ts.ozlabs.org" <linuxppc-dev@...ts.ozlabs.org>,
Linux-sh list <linux-sh@...r.kernel.org>,
linux-wireless <linux-wireless@...r.kernel.org>,
patches@...nsource.wolfsonmicro.com,
"linux-input@...r.kernel.org" <linux-input@...r.kernel.org>,
"linux-leds@...r.kernel.org" <linux-leds@...r.kernel.org>,
Linux Media Mailing List <linux-media@...r.kernel.org>,
linux-samsungsoc@...r.kernel.org, spear-devel@...t.st.com,
platform-driver-x86@...r.kernel.org,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>,
driverdevel <devel@...verdev.osuosl.org>
Subject: Re: [PATCH 2/2] gpio: gpiolib: set gpiochip_remove retval to void
On 05/30/2014 07:33 PM, David Daney wrote:
> On 05/30/2014 04:39 AM, Geert Uytterhoeven wrote:
>> On Fri, May 30, 2014 at 1:30 PM, abdoulaye berthe <berthe.ab@...il.com>
>> wrote:
>>> --- a/drivers/gpio/gpiolib.c
>>> +++ b/drivers/gpio/gpiolib.c
>>> @@ -1263,10 +1263,9 @@ static void gpiochip_irqchip_remove(struct
>>> gpio_chip *gpiochip);
>>> *
>>> * A gpio_chip with any GPIOs still requested may not be removed.
>>> */
>>> -int gpiochip_remove(struct gpio_chip *chip)
>>> +void gpiochip_remove(struct gpio_chip *chip)
>>> {
>>> unsigned long flags;
>>> - int status = 0;
>>> unsigned id;
>>>
>>> acpi_gpiochip_remove(chip);
>>> @@ -1278,24 +1277,15 @@ int gpiochip_remove(struct gpio_chip *chip)
>>> of_gpiochip_remove(chip);
>>>
>>> for (id = 0; id < chip->ngpio; id++) {
>>> - if (test_bit(FLAG_REQUESTED, &chip->desc[id].flags)) {
>>> - status = -EBUSY;
>>> - break;
>>> - }
>>> - }
>>> - if (status == 0) {
>>> - for (id = 0; id < chip->ngpio; id++)
>>> - chip->desc[id].chip = NULL;
>>> -
>>> - list_del(&chip->list);
>>> + if (test_bit(FLAG_REQUESTED, &chip->desc[id].flags))
>>> + panic("gpio: removing gpiochip with gpios still
>>> requested\n");
>>
>> panic?
>
> NACK to the patch for this reason. The strongest thing you should do here
> is WARN.
>
> That said, I am not sure why we need this whole patch set in the first place.
Well, what currently happens when you remove a device that is a provider of
a gpio_chip which is still in use, is that the kernel crashes. Probably with
a rather cryptic error message. So this patch doesn't really change the
behavior, but makes it more explicit what is actually wrong. And even if you
replace the panic() by a WARN() it will again just crash slightly later.
This is a design flaw in the GPIO subsystem that needs to be fixed.
- Lars
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists