linux-can.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] can: usb_8dev: unregister netdev before free()ing
@ 2013-06-18 12:57 Marc Kleine-Budde
  2013-06-18 18:23 ` Bernd Krumboeck
  0 siblings, 1 reply; 7+ messages in thread
From: Marc Kleine-Budde @ 2013-06-18 12:57 UTC (permalink / raw)
  To: linux-can; +Cc: Marc Kleine-Budde

The usb_8dev hardware has problems on some xhci USB hosts. The driver fails to
read the firmware revision in the probe function. This leads to the following
Oops:

    [ 3356.635912] kernel BUG at net/core/dev.c:5701!

The driver tries to free the netdev, which has already been registered, without
unregistering it.

This patch fixes the problem by unregistering the netdev in the error path.

Reported-by: <m.olbrich@pengutronix.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 drivers/net/can/usb/usb_8dev.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/net/can/usb/usb_8dev.c b/drivers/net/can/usb/usb_8dev.c
index 6e15ef0..cbd388e 100644
--- a/drivers/net/can/usb/usb_8dev.c
+++ b/drivers/net/can/usb/usb_8dev.c
@@ -977,7 +977,7 @@ static int usb_8dev_probe(struct usb_interface *intf,
 	err = usb_8dev_cmd_version(priv, &version);
 	if (err) {
 		netdev_err(netdev, "can't get firmware version\n");
-		goto cleanup_cmd_msg_buffer;
+		goto cleanup_unregister_candev;
 	} else {
 		netdev_info(netdev,
 			 "firmware: %d.%d, hardware: %d.%d\n",
@@ -989,6 +989,9 @@ static int usb_8dev_probe(struct usb_interface *intf,
 
 	return 0;
 
+cleanup_unregister_candev:
+	unregister_netdev(priv->netdev);
+
 cleanup_cmd_msg_buffer:
 	kfree(priv->cmd_msg_buffer);
 
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] can: usb_8dev: unregister netdev before free()ing
  2013-06-18 12:57 [PATCH] can: usb_8dev: unregister netdev before free()ing Marc Kleine-Budde
@ 2013-06-18 18:23 ` Bernd Krumboeck
  2013-06-18 18:34   ` Marc Kleine-Budde
  0 siblings, 1 reply; 7+ messages in thread
From: Bernd Krumboeck @ 2013-06-18 18:23 UTC (permalink / raw)
  To: Marc Kleine-Budde; +Cc: linux-can

Am 2013-06-18 14:57, schrieb Marc Kleine-Budde:
> The usb_8dev hardware has problems on some xhci USB hosts. The driver fails to
> read the firmware revision in the probe function. This leads to the following
> Oops:
>
>      [ 3356.635912] kernel BUG at net/core/dev.c:5701!
>
> The driver tries to free the netdev, which has already been registered, without
> unregistering it.
>
> This patch fixes the problem by unregistering the netdev in the error path.
>

Thank you for the patch!

I've applied it to my source tree:
https://github.com/krumboeck/usb2can


regards,
Bernd


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] can: usb_8dev: unregister netdev before free()ing
  2013-06-18 18:23 ` Bernd Krumboeck
@ 2013-06-18 18:34   ` Marc Kleine-Budde
  2013-06-18 20:20     ` Bernd Krumboeck
  0 siblings, 1 reply; 7+ messages in thread
From: Marc Kleine-Budde @ 2013-06-18 18:34 UTC (permalink / raw)
  To: Bernd Krumboeck; +Cc: linux-can

[-- Attachment #1: Type: text/plain, Size: 991 bytes --]

On 06/18/2013 08:23 PM, Bernd Krumboeck wrote:
> Am 2013-06-18 14:57, schrieb Marc Kleine-Budde:
>> The usb_8dev hardware has problems on some xhci USB hosts. The driver
>> fails to
>> read the firmware revision in the probe function. This leads to the
>> following
>> Oops:
>>
>>      [ 3356.635912] kernel BUG at net/core/dev.c:5701!
>>
>> The driver tries to free the netdev, which has already been
>> registered, without
>> unregistering it.
>>
>> This patch fixes the problem by unregistering the netdev in the error
>> path.
>>
> 
> Thank you for the patch!
> 
> I've applied it to my source tree:
> https://github.com/krumboeck/usb2can

Can I have you Acked-by or Reviewed-by?

Marc
-- 
Pengutronix e.K.                  | Marc Kleine-Budde           |
Industrial Linux Solutions        | Phone: +49-231-2826-924     |
Vertretung West/Dortmund          | Fax:   +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686  | http://www.pengutronix.de   |


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 259 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] can: usb_8dev: unregister netdev before free()ing
  2013-06-18 18:34   ` Marc Kleine-Budde
@ 2013-06-18 20:20     ` Bernd Krumboeck
  2013-06-18 20:21       ` Marc Kleine-Budde
  0 siblings, 1 reply; 7+ messages in thread
From: Bernd Krumboeck @ 2013-06-18 20:20 UTC (permalink / raw)
  To: Marc Kleine-Budde; +Cc: linux-can

Am 2013-06-18 20:34, schrieb Marc Kleine-Budde:
> On 06/18/2013 08:23 PM, Bernd Krumboeck wrote:
>> Am 2013-06-18 14:57, schrieb Marc Kleine-Budde:
>>> The usb_8dev hardware has problems on some xhci USB hosts. The driver
>>> fails to
>>> read the firmware revision in the probe function. This leads to the
>>> following
>>> Oops:
>>>
>>>       [ 3356.635912] kernel BUG at net/core/dev.c:5701!
>>>
>>> The driver tries to free the netdev, which has already been
>>> registered, without
>>> unregistering it.
>>>
>>> This patch fixes the problem by unregistering the netdev in the error
>>> path.
>>>
>>
>> Thank you for the patch!
>>
>> I've applied it to my source tree:
>> https://github.com/krumboeck/usb2can
>
> Can I have you Acked-by or Reviewed-by?
>
> Marc
>

Yes, of course.

Please add "Reviewed-by: Bernd Krumboeck <krumboeck@universalnet.at>".


regards,
Bernd

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] can: usb_8dev: unregister netdev before free()ing
  2013-06-18 20:20     ` Bernd Krumboeck
@ 2013-06-18 20:21       ` Marc Kleine-Budde
  0 siblings, 0 replies; 7+ messages in thread
From: Marc Kleine-Budde @ 2013-06-18 20:21 UTC (permalink / raw)
  To: Bernd Krumboeck; +Cc: linux-can

[-- Attachment #1: Type: text/plain, Size: 843 bytes --]

On 06/18/2013 10:20 PM, Bernd Krumboeck wrote:
>>>> The driver tries to free the netdev, which has already been
>>>> registered, without
>>>> unregistering it.
>>>>
>>>> This patch fixes the problem by unregistering the netdev in the error
>>>> path.
>>>>
>>>
>>> Thank you for the patch!
>>>
>>> I've applied it to my source tree:
>>> https://github.com/krumboeck/usb2can
>>
>> Can I have you Acked-by or Reviewed-by?
>>
>> Marc
>>
> 
> Yes, of course.
> 
> Please add "Reviewed-by: Bernd Krumboeck <krumboeck@universalnet.at>".

Tnx,
Marc

-- 
Pengutronix e.K.                  | Marc Kleine-Budde           |
Industrial Linux Solutions        | Phone: +49-231-2826-924     |
Vertretung West/Dortmund          | Fax:   +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686  | http://www.pengutronix.de   |


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 259 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH] can: usb_8dev: unregister netdev before free()ing
  2013-06-19  7:02 pull-request: can 2013-06-19 Marc Kleine-Budde
@ 2013-06-19  7:02 ` Marc Kleine-Budde
  2013-06-19 16:29   ` Oliver Hartkopp
  0 siblings, 1 reply; 7+ messages in thread
From: Marc Kleine-Budde @ 2013-06-19  7:02 UTC (permalink / raw)
  To: netdev; +Cc: linux-can, davem, Marc Kleine-Budde

The usb_8dev hardware has problems on some xhci USB hosts. The driver fails to
read the firmware revision in the probe function. This leads to the following
Oops:

    [ 3356.635912] kernel BUG at net/core/dev.c:5701!

The driver tries to free the netdev, which has already been registered, without
unregistering it.

This patch fixes the problem by unregistering the netdev in the error path.

Reported-by: Michael Olbrich <m.olbrich@pengutronix.de>
Reviewed-by: Bernd Krumboeck <krumboeck@universalnet.at>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 drivers/net/can/usb/usb_8dev.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/net/can/usb/usb_8dev.c b/drivers/net/can/usb/usb_8dev.c
index 6e15ef0..cbd388e 100644
--- a/drivers/net/can/usb/usb_8dev.c
+++ b/drivers/net/can/usb/usb_8dev.c
@@ -977,7 +977,7 @@ static int usb_8dev_probe(struct usb_interface *intf,
 	err = usb_8dev_cmd_version(priv, &version);
 	if (err) {
 		netdev_err(netdev, "can't get firmware version\n");
-		goto cleanup_cmd_msg_buffer;
+		goto cleanup_unregister_candev;
 	} else {
 		netdev_info(netdev,
 			 "firmware: %d.%d, hardware: %d.%d\n",
@@ -989,6 +989,9 @@ static int usb_8dev_probe(struct usb_interface *intf,
 
 	return 0;
 
+cleanup_unregister_candev:
+	unregister_netdev(priv->netdev);
+
 cleanup_cmd_msg_buffer:
 	kfree(priv->cmd_msg_buffer);
 
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] can: usb_8dev: unregister netdev before free()ing
  2013-06-19  7:02 ` [PATCH] can: usb_8dev: unregister netdev before free()ing Marc Kleine-Budde
@ 2013-06-19 16:29   ` Oliver Hartkopp
  0 siblings, 0 replies; 7+ messages in thread
From: Oliver Hartkopp @ 2013-06-19 16:29 UTC (permalink / raw)
  To: Marc Kleine-Budde; +Cc: netdev, linux-can, davem, stable, Bernd Krumböck

Hello Marc,

the usb_8dev driver was introduced in Linux 3.9 and therefore this reasonable
patch should be queued up for linux-3.9.y stable too.

Regards,
Oliver


On 19.06.2013 09:02, Marc Kleine-Budde wrote:
> The usb_8dev hardware has problems on some xhci USB hosts. The driver fails to
> read the firmware revision in the probe function. This leads to the following
> Oops:
> 
>     [ 3356.635912] kernel BUG at net/core/dev.c:5701!
> 
> The driver tries to free the netdev, which has already been registered, without
> unregistering it.
> 
> This patch fixes the problem by unregistering the netdev in the error path.
> 
> Reported-by: Michael Olbrich <m.olbrich@pengutronix.de>
> Reviewed-by: Bernd Krumboeck <krumboeck@universalnet.at>
> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
> ---
>  drivers/net/can/usb/usb_8dev.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/can/usb/usb_8dev.c b/drivers/net/can/usb/usb_8dev.c
> index 6e15ef0..cbd388e 100644
> --- a/drivers/net/can/usb/usb_8dev.c
> +++ b/drivers/net/can/usb/usb_8dev.c
> @@ -977,7 +977,7 @@ static int usb_8dev_probe(struct usb_interface *intf,
>  	err = usb_8dev_cmd_version(priv, &version);
>  	if (err) {
>  		netdev_err(netdev, "can't get firmware version\n");
> -		goto cleanup_cmd_msg_buffer;
> +		goto cleanup_unregister_candev;
>  	} else {
>  		netdev_info(netdev,
>  			 "firmware: %d.%d, hardware: %d.%d\n",
> @@ -989,6 +989,9 @@ static int usb_8dev_probe(struct usb_interface *intf,
>  
>  	return 0;
>  
> +cleanup_unregister_candev:
> +	unregister_netdev(priv->netdev);
> +
>  cleanup_cmd_msg_buffer:
>  	kfree(priv->cmd_msg_buffer);
>  
> 


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2013-06-19 16:29 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-06-18 12:57 [PATCH] can: usb_8dev: unregister netdev before free()ing Marc Kleine-Budde
2013-06-18 18:23 ` Bernd Krumboeck
2013-06-18 18:34   ` Marc Kleine-Budde
2013-06-18 20:20     ` Bernd Krumboeck
2013-06-18 20:21       ` Marc Kleine-Budde
  -- strict thread matches above, loose matches on Subject: below --
2013-06-19  7:02 pull-request: can 2013-06-19 Marc Kleine-Budde
2013-06-19  7:02 ` [PATCH] can: usb_8dev: unregister netdev before free()ing Marc Kleine-Budde
2013-06-19 16:29   ` Oliver Hartkopp

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).