All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: Lars-Peter Clausen <lars@metafoo.de>
Cc: Linux MIPS Mailing List <linux-mips@linux-mips.org>,
	David Daney <ddaney.cavm@gmail.com>,
	Linux-sh list <linux-sh@vger.kernel.org>,
	Linus Walleij <linus.walleij@linaro.org>,
	platform-driver-x86@vger.kernel.org,
	"linux-leds@vger.kernel.org" <linux-leds@vger.kernel.org>,
	driverdevel <devel@driverdev.osuosl.org>,
	Alexandre Courbot <gnurou@gmail.com>,
	patches@opensource.wolfsonmicro.com,
	linux-samsungsoc@vger.kernel.org,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	"linux-input@vger.kernel.org" <linux-input@vger.kernel.org>,
	Linux Media Mailing List <linux-media@vger.kernel.org>,
	spear-devel@list.st.com,
	"linux-gpio@vger.kernel.org" <linux-gpio@vger.kernel.org>,
	m@bues.ch,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	linux-wireless <linux-wireless@vger.kernel.org>,
	linux-kernel@vger.kernel.o
Subject: Re: [PATCH 2/2] gpio: gpiolib: set gpiochip_remove retval to void
Date: Sat, 31 May 2014 15:19:14 +0300	[thread overview]
Message-ID: <20140531121914.GM15585@mwanda> (raw)
In-Reply-To: <5389864B.4000107@metafoo.de>

On Sat, May 31, 2014 at 09:35:39AM +0200, Lars-Peter Clausen wrote:
> On 05/31/2014 01:29 AM, Greg KH wrote:
> >On Fri, May 30, 2014 at 08:16:59PM +0200, Lars-Peter Clausen wrote:
> >>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@gmail.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.
> >
> >Then fix the GPIO code properly, don't add a new panic() to the kernel.
> 
> Until somebody comes up with a patch that fixes this for good I
> think that patch is still an improvement over the current situation.
> Rather than keeping the kernel running in a inconsistent state,
> which might cause all kinds of undefined behavior and which will
> lead to a crash eventually, we might as well just crash the kernel
> at the cause of the inconsistent state. This will make it obvious
> why it crashed (compared to a random stacktrace) and will also
> prevent the kernel from running in a undefined state.
> 

Really, adding a panic here is not ok.  With a WARN() then you have
time to save the dmesg to a file.

This CC list is way too huge.  We're all wondering how often this stuff
crashes anyway?  Have you tried to fix the bug instead of just calling
panic()?  Is there a bugzilla entry or something?  Is there a thread on
the list?

Just add a WARN() and fix the bug then cleanup the error handling.

regards,
dan carpenter

WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: Lars-Peter Clausen <lars@metafoo.de>
Cc: Greg KH <greg@kroah.com>,
	Linux MIPS Mailing List <linux-mips@linux-mips.org>,
	David Daney <ddaney.cavm@gmail.com>,
	Linux-sh list <linux-sh@vger.kernel.org>,
	Linus Walleij <linus.walleij@linaro.org>,
	platform-driver-x86@vger.kernel.org,
	"linux-leds@vger.kernel.org" <linux-leds@vger.kernel.org>,
	driverdevel <devel@driverdev.osuosl.org>,
	Alexandre Courbot <gnurou@gmail.com>,
	patches@opensource.wolfsonmicro.com,
	linux-samsungsoc@vger.kernel.org,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	"linux-input@vger.kernel.org" <linux-input@vger.kernel.org>,
	abdoulaye berthe <berthe.ab@gmail.com>,
	spear-devel@list.st.com,
	"linux-gpio@vger.kernel.org" <linux-gpio@vger.kernel.org>,
	m@bues.ch,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	linux-wireless <linux-wireless@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Linux Media Mailing List <linux-media@vger.kernel.org>,
	"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>
Subject: Re: [PATCH 2/2] gpio: gpiolib: set gpiochip_remove retval to void
Date: Sat, 31 May 2014 15:19:14 +0300	[thread overview]
Message-ID: <20140531121914.GM15585@mwanda> (raw)
In-Reply-To: <5389864B.4000107@metafoo.de>

On Sat, May 31, 2014 at 09:35:39AM +0200, Lars-Peter Clausen wrote:
> On 05/31/2014 01:29 AM, Greg KH wrote:
> >On Fri, May 30, 2014 at 08:16:59PM +0200, Lars-Peter Clausen wrote:
> >>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@gmail.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.
> >
> >Then fix the GPIO code properly, don't add a new panic() to the kernel.
> 
> Until somebody comes up with a patch that fixes this for good I
> think that patch is still an improvement over the current situation.
> Rather than keeping the kernel running in a inconsistent state,
> which might cause all kinds of undefined behavior and which will
> lead to a crash eventually, we might as well just crash the kernel
> at the cause of the inconsistent state. This will make it obvious
> why it crashed (compared to a random stacktrace) and will also
> prevent the kernel from running in a undefined state.
> 

Really, adding a panic here is not ok.  With a WARN() then you have
time to save the dmesg to a file.

This CC list is way too huge.  We're all wondering how often this stuff
crashes anyway?  Have you tried to fix the bug instead of just calling
panic()?  Is there a bugzilla entry or something?  Is there a thread on
the list?

Just add a WARN() and fix the bug then cleanup the error handling.

regards,
dan carpenter

WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: Lars-Peter Clausen <lars@metafoo.de>
Cc: Greg KH <greg@kroah.com>,
	Linux MIPS Mailing List <linux-mips@linux-mips.org>,
	David Daney <ddaney.cavm@gmail.com>,
	Linux-sh list <linux-sh@vger.kernel.org>,
	Linus Walleij <linus.walleij@linaro.org>,
	platform-driver-x86@vger.kernel.org,
	"linux-leds@vger.kernel.org" <linux-leds@vger.kernel.org>,
	driverdevel <devel@driverdev.osuosl.org>,
	Alexandre Courbot <gnurou@gmail.com>,
	patches@opensource.wolfsonmicro.com,
	linux-samsungsoc@vger.kernel.org,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	"linux-input@vger.kernel.org" <linux-input@vger.kernel.org>,
	abdoulaye berthe <berthe.ab@gmail.com>,
	spear-devel@list.st.com,
	"linux-gpio@vger.kernel.org" <linux-gpio@vger.kernel.org>,
	m@bues.ch,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	linux-wireless <linux-wireless@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Linux Media Mailing List <linux-media@vger.kernel.org>,
	"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>
Subject: Re: [PATCH 2/2] gpio: gpiolib: set gpiochip_remove retval to void
Date: Sat, 31 May 2014 15:19:14 +0300	[thread overview]
Message-ID: <20140531121914.GM15585@mwanda> (raw)
Message-ID: <20140531121914.Av32d2A9AcdlON3xg6goQ7zr2XipP48ve8WfjfNyaaU@z> (raw)
In-Reply-To: <5389864B.4000107@metafoo.de>

On Sat, May 31, 2014 at 09:35:39AM +0200, Lars-Peter Clausen wrote:
> On 05/31/2014 01:29 AM, Greg KH wrote:
> >On Fri, May 30, 2014 at 08:16:59PM +0200, Lars-Peter Clausen wrote:
> >>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@gmail.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.
> >
> >Then fix the GPIO code properly, don't add a new panic() to the kernel.
> 
> Until somebody comes up with a patch that fixes this for good I
> think that patch is still an improvement over the current situation.
> Rather than keeping the kernel running in a inconsistent state,
> which might cause all kinds of undefined behavior and which will
> lead to a crash eventually, we might as well just crash the kernel
> at the cause of the inconsistent state. This will make it obvious
> why it crashed (compared to a random stacktrace) and will also
> prevent the kernel from running in a undefined state.
> 

Really, adding a panic here is not ok.  With a WARN() then you have
time to save the dmesg to a file.

This CC list is way too huge.  We're all wondering how often this stuff
crashes anyway?  Have you tried to fix the bug instead of just calling
panic()?  Is there a bugzilla entry or something?  Is there a thread on
the list?

Just add a WARN() and fix the bug then cleanup the error handling.

regards,
dan carpenter

WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: Lars-Peter Clausen <lars@metafoo.de>
Cc: Linux MIPS Mailing List <linux-mips@linux-mips.org>,
	David Daney <ddaney.cavm@gmail.com>,
	Linux-sh list <linux-sh@vger.kernel.org>,
	Greg KH <greg@kroah.com>,
	Linus Walleij <linus.walleij@linaro.org>,
	platform-driver-x86@vger.kernel.org,
	"linux-leds@vger.kernel.org" <linux-leds@vger.kernel.org>,
	driverdevel <devel@driverdev.osuosl.org>,
	Alexandre Courbot <gnurou@gmail.com>,
	patches@opensource.wolfsonmicro.com,
	linux-samsungsoc@vger.kernel.org,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	"linux-input@vger.kernel.org" <linux-input@vger.kernel.org>,
	Linux Media Mailing List <linux-media@vger.kernel.org>,
	spear-devel@list.st.com,
	"linux-gpio@vger.kernel.org" <linux-gpio@vger.kernel.org>,
	m@bues.ch,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	linux-wireless <linux-wireless@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	abdoulaye berthe <berthe.ab@gmail.com>,
	"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>
Subject: Re: [PATCH 2/2] gpio: gpiolib: set gpiochip_remove retval to void
Date: Sat, 31 May 2014 15:19:14 +0300	[thread overview]
Message-ID: <20140531121914.GM15585@mwanda> (raw)
In-Reply-To: <5389864B.4000107@metafoo.de>

On Sat, May 31, 2014 at 09:35:39AM +0200, Lars-Peter Clausen wrote:
> On 05/31/2014 01:29 AM, Greg KH wrote:
> >On Fri, May 30, 2014 at 08:16:59PM +0200, Lars-Peter Clausen wrote:
> >>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@gmail.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.
> >
> >Then fix the GPIO code properly, don't add a new panic() to the kernel.
> 
> Until somebody comes up with a patch that fixes this for good I
> think that patch is still an improvement over the current situation.
> Rather than keeping the kernel running in a inconsistent state,
> which might cause all kinds of undefined behavior and which will
> lead to a crash eventually, we might as well just crash the kernel
> at the cause of the inconsistent state. This will make it obvious
> why it crashed (compared to a random stacktrace) and will also
> prevent the kernel from running in a undefined state.
> 

Really, adding a panic here is not ok.  With a WARN() then you have
time to save the dmesg to a file.

This CC list is way too huge.  We're all wondering how often this stuff
crashes anyway?  Have you tried to fix the bug instead of just calling
panic()?  Is there a bugzilla entry or something?  Is there a thread on
the list?

Just add a WARN() and fix the bug then cleanup the error handling.

regards,
dan carpenter

WARNING: multiple messages have this Message-ID (diff)
From: dan.carpenter@oracle.com (Dan Carpenter)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/2] gpio: gpiolib: set gpiochip_remove retval to void
Date: Sat, 31 May 2014 15:19:14 +0300	[thread overview]
Message-ID: <20140531121914.GM15585@mwanda> (raw)
In-Reply-To: <5389864B.4000107@metafoo.de>

On Sat, May 31, 2014 at 09:35:39AM +0200, Lars-Peter Clausen wrote:
> On 05/31/2014 01:29 AM, Greg KH wrote:
> >On Fri, May 30, 2014 at 08:16:59PM +0200, Lars-Peter Clausen wrote:
> >>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@gmail.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.
> >
> >Then fix the GPIO code properly, don't add a new panic() to the kernel.
> 
> Until somebody comes up with a patch that fixes this for good I
> think that patch is still an improvement over the current situation.
> Rather than keeping the kernel running in a inconsistent state,
> which might cause all kinds of undefined behavior and which will
> lead to a crash eventually, we might as well just crash the kernel
> at the cause of the inconsistent state. This will make it obvious
> why it crashed (compared to a random stacktrace) and will also
> prevent the kernel from running in a undefined state.
> 

Really, adding a panic here is not ok.  With a WARN() then you have
time to save the dmesg to a file.

This CC list is way too huge.  We're all wondering how often this stuff
crashes anyway?  Have you tried to fix the bug instead of just calling
panic()?  Is there a bugzilla entry or something?  Is there a thread on
the list?

Just add a WARN() and fix the bug then cleanup the error handling.

regards,
dan carpenter

  reply	other threads:[~2014-05-31 12:19 UTC|newest]

Thread overview: 128+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-29 21:54 [PATCH] gpio: removes all usage of gpiochip_remove retval abdoulaye berthe
2014-05-29 21:54 ` abdoulaye berthe
2014-05-29 21:54 ` abdoulaye berthe
2014-05-29 22:14 ` David Daney
2014-05-29 22:14   ` David Daney
2014-05-29 22:14   ` David Daney
2014-05-29 22:14   ` David Daney
2014-05-29 23:16   ` abdoulaye berthe
2014-05-29 23:16     ` abdoulaye berthe
2014-05-29 23:40     ` Stephen Rothwell
2014-05-29 23:40       ` Stephen Rothwell
2014-05-29 23:40       ` Stephen Rothwell
2014-05-29 23:40       ` Stephen Rothwell
2014-05-30 11:30       ` [PATCH 1/2] " abdoulaye berthe
2014-05-30 11:30         ` abdoulaye berthe
2014-05-30 11:30         ` abdoulaye berthe
2014-05-30 11:30         ` [PATCH 2/2] gpio: gpiolib: set gpiochip_remove retval to void abdoulaye berthe
2014-05-30 11:30           ` abdoulaye berthe
2014-05-30 11:30           ` abdoulaye berthe
2014-05-30 11:39           ` Geert Uytterhoeven
2014-05-30 11:39             ` Geert Uytterhoeven
2014-05-30 11:39             ` Geert Uytterhoeven
2014-05-30 11:39             ` Geert Uytterhoeven
2014-05-30 11:39             ` Geert Uytterhoeven
2014-05-30 11:39             ` Geert Uytterhoeven
2014-05-30 11:39             ` Geert Uytterhoeven
2014-05-30 15:48             ` Ralf Baechle
2014-05-30 15:48               ` Ralf Baechle
2014-05-30 15:48               ` Ralf Baechle
2014-05-30 15:48               ` Ralf Baechle
2014-05-30 15:48               ` Ralf Baechle
2014-05-30 15:48               ` Ralf Baechle
2014-05-30 15:48               ` Ralf Baechle
2014-05-30 17:33             ` David Daney
2014-05-30 17:33               ` David Daney
2014-05-30 17:33               ` David Daney
2014-05-30 17:33               ` David Daney
2014-05-30 17:33               ` David Daney
2014-05-30 17:33               ` David Daney
2014-05-30 18:16               ` Lars-Peter Clausen
2014-05-30 18:16                 ` Lars-Peter Clausen
2014-05-30 18:16                 ` Lars-Peter Clausen
2014-05-30 18:16                 ` Lars-Peter Clausen
2014-05-30 18:16                 ` Lars-Peter Clausen
2014-05-30 18:16                 ` Lars-Peter Clausen
2014-05-30 23:29                 ` Greg KH
2014-05-30 23:29                   ` Greg KH
2014-05-30 23:29                   ` Greg KH
2014-05-30 23:29                   ` Greg KH
2014-05-30 23:29                   ` Greg KH
2014-05-30 23:29                   ` Greg KH
2014-05-31  7:35                   ` Lars-Peter Clausen
2014-05-31  7:35                     ` Lars-Peter Clausen
2014-05-31  7:35                     ` Lars-Peter Clausen
2014-05-31  7:35                     ` Lars-Peter Clausen
2014-05-31  7:35                     ` Lars-Peter Clausen
2014-05-31  7:35                     ` Lars-Peter Clausen
2014-05-31 12:19                     ` Dan Carpenter [this message]
2014-05-31 12:19                       ` Dan Carpenter
2014-05-31 12:19                       ` Dan Carpenter
2014-05-31 12:19                       ` Dan Carpenter
2014-05-31 12:19                       ` Dan Carpenter
2014-06-08 23:18                 ` Ben Dooks
2014-06-08 23:18                   ` Ben Dooks
2014-06-08 23:18                   ` Ben Dooks
2014-06-08 23:18                   ` Ben Dooks
2014-06-08 23:18                   ` Ben Dooks
2014-06-08 23:18                   ` Ben Dooks
2014-06-09 11:29                   ` Lars-Peter Clausen
2014-06-09 11:29                     ` Lars-Peter Clausen
2014-06-09 11:29                     ` Lars-Peter Clausen
2014-06-09 11:29                     ` Lars-Peter Clausen
2014-06-09 11:29                     ` Lars-Peter Clausen
2014-06-09 13:15                     ` Andrzej Hajda
2014-06-09 13:15                       ` Andrzej Hajda
2014-06-09 13:15                       ` Andrzej Hajda
2014-06-09 13:15                       ` Andrzej Hajda
2014-06-09 13:15                       ` Andrzej Hajda
2014-06-09 13:43                       ` David Laight
2014-06-09 13:43                         ` David Laight
2014-06-09 13:43                         ` David Laight
2014-06-09 13:43                         ` David Laight
2014-06-10  6:57                         ` Andrzej Hajda
2014-06-10  6:57                           ` Andrzej Hajda
2014-06-10  6:57                           ` Andrzej Hajda
2014-06-10  6:57                           ` Andrzej Hajda
2014-06-10  6:57                           ` Andrzej Hajda
2014-05-30 11:37       ` [PATCH 1/2] gpio: removes all usage of gpiochip_remove retval abdoulaye berthe
2014-05-30 11:37         ` [PATCH 2/2] gpio: gpiolib: set gpiochip_remove retval to void abdoulaye berthe
2014-05-30 15:59         ` [PATCH 1/2] gpio: removes all usage of gpiochip_remove retval Alexandre Courbot
2014-06-04 18:22           ` [PATCH 0/2] gpiochip remove abdoulaye berthe
2014-06-04 18:22             ` [PATCH 1/2] gpio: removes all usage of gpiochip_remove retval abdoulaye berthe
2014-07-04 22:35               ` Linus Walleij
2014-07-05 16:28                 ` [PATCH 2/2] gpio: gpiolib: set gpiochip_remove retval to void abdoulaye berthe
2014-07-05 20:28                 ` [PATCH] gpio: removes all usage of gpiochip_remove retval abdoulaye berthe
2014-07-09  7:45                   ` Linus Walleij
2014-07-12 20:30                     ` [PATCH 0/3] remove all usage of gpio_remove retval abdoulaye berthe
2014-07-12 20:30                       ` [PATCH 1/1] gpio: remove all usage of gpio_remove retval in driver/gpio abdoulaye berthe
2014-07-12 20:30                       ` [PATCH 2/2] pinctrl: remove all usage of gpio_remove ret val in driver/pinctl abdoulaye berthe
2014-07-22 14:34                         ` Linus Walleij
2014-07-12 20:30                       ` [PATCH 3/3] driver:gpio remove all usage of gpio_remove retval in driver abdoulaye berthe
2014-07-22 15:08                         ` Linus Walleij
2014-07-22 15:08                           ` Linus Walleij
2014-07-22 15:08                           ` Linus Walleij
2014-07-22 15:11                           ` Mark Brown
2014-07-22 15:11                             ` Mark Brown
2014-07-24  8:29                             ` Linus Walleij
2014-07-24  8:29                               ` Linus Walleij
2014-07-22 15:17                           ` Michael Büsch
2014-07-22 15:17                             ` Michael Büsch
2014-07-22 16:01                           ` Lee Jones
2014-07-22 16:01                             ` Lee Jones
2014-07-22 17:51                           ` Dmitry Torokhov
2014-07-22 17:51                             ` Dmitry Torokhov
2014-07-22 19:17                           ` Mauro Carvalho Chehab
2014-07-22 19:17                             ` Mauro Carvalho Chehab
2014-07-29 11:30                           ` Tomi Valkeinen
2014-07-29 11:30                             ` Tomi Valkeinen
2014-07-29 11:30                             ` Tomi Valkeinen
2014-06-04 18:22             ` [PATCH 2/2] gpio: gpiolib: set gpiochip_remove retval to void abdoulaye berthe
2014-06-08 12:12               ` Alexandre Courbot
2014-06-09 21:22                 ` abdoulaye berthe
2014-07-04 22:55                 ` Linus Walleij
2014-06-04 18:35             ` [PATCH 0/2] gpiochip remove abdoulaye berthe
2014-05-29 23:25 ` [PATCH] gpio: removes all usage of gpiochip_remove retval Greg KH
2014-05-29 23:25   ` Greg KH
2014-05-29 23:25   ` Greg KH
2014-05-29 23:25   ` Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140531121914.GM15585@mwanda \
    --to=dan.carpenter@oracle.com \
    --cc=ddaney.cavm@gmail.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=geert@linux-m68k.org \
    --cc=gnurou@gmail.com \
    --cc=lars@metafoo.de \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.o \
    --cc=linux-leds@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-mips@linux-mips.org \
    --cc=linux-samsungsoc@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=m@bues.ch \
    --cc=netdev@vger.kernel.org \
    --cc=patches@opensource.wolfsonmicro.com \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=spear-devel@list.st.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.