netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: Error in the hso driver
       [not found] <1548614320825.86428@ece.ufl.edu>
@ 2019-01-27 19:35 ` Greg KH
  2019-01-27 19:49   ` Yavuz, Tuba
  0 siblings, 1 reply; 5+ messages in thread
From: Greg KH @ 2019-01-27 19:35 UTC (permalink / raw)
  To: Yavuz, Tuba; +Cc: netdev, davem

On Sun, Jan 27, 2019 at 06:38:41PM +0000, Yavuz, Tuba wrote:
> Hello,
> 
> 
> On an error path inside the hso_create_net_device function of the hso driver (drivers/net/usb/hso), hso_free_net_device gets called. This causes a negative reference count in the net device if register_netdev has not been called yet as hso_free_net_device calls unregister_netdev regardless. I think the driver should distinguish these cases and call unregister_netdev only if register_netdev has been called.
> 
> 
> Detected on v4.14-rc2 but I believe the problem still exists in the newer versions.

Can you send a patch to solve this issue?  That's the best way to handle
it as you get the proper credit and we can understand exactly what you
are trying to show here.

thanks,

greg k-h

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

* Re: Error in the hso driver
  2019-01-27 19:35 ` Error in the hso driver Greg KH
@ 2019-01-27 19:49   ` Yavuz, Tuba
  2019-01-27 19:53     ` Greg KH
  2019-01-27 20:19     ` Andrew Lunn
  0 siblings, 2 replies; 5+ messages in thread
From: Yavuz, Tuba @ 2019-01-27 19:49 UTC (permalink / raw)
  To: Greg KH; +Cc: netdev, davem

Here is a proposed patch:

--- drivers/net/usb/hso.c.orig	2019-01-27 14:45:58.232683119 -0500
+++ drivers/net/usb/hso.c	2019-01-27 14:47:43.592683629 -0500
@@ -2377,7 +2377,7 @@ static void hso_free_net_device(struct h
 
 	remove_net_device(hso_net->parent);
 
-	if (hso_net->net)
+	if (hso_net->net && hso_net->net->reg_state == NETREG_REGISTERED)
 		unregister_netdev(hso_net->net);
 
 	/* start freeing */



Tuba Yavuz, Ph.D.
Assistant Professor
Electrical and Computer Engineering Department
University of Florida
Gainesville, FL 32611
Webpage: http://www.tuba.ece.ufl.edu/
Email: tuba@ece.ufl.edu
Phone: (352) 846 0202

________________________________________
From: Greg KH <greg@kroah.com>
Sent: Sunday, January 27, 2019 2:35 PM
To: Yavuz, Tuba
Cc: netdev@vger.kernel.org; davem@davemloft.net
Subject: Re: Error in the hso driver

On Sun, Jan 27, 2019 at 06:38:41PM +0000, Yavuz, Tuba wrote:
> Hello,
>
>
> On an error path inside the hso_create_net_device function of the hso driver (drivers/net/usb/hso), hso_free_net_device gets called. This causes a negative reference count in the net device if register_netdev has not been called yet as hso_free_net_device calls unregister_netdev regardless. I think the driver should distinguish these cases and call unregister_netdev only if register_netdev has been called.
>
>
> Detected on v4.14-rc2 but I believe the problem still exists in the newer versions.

Can you send a patch to solve this issue?  That's the best way to handle
it as you get the proper credit and we can understand exactly what you
are trying to show here.

thanks,

greg k-h

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

* Re: Error in the hso driver
  2019-01-27 19:49   ` Yavuz, Tuba
@ 2019-01-27 19:53     ` Greg KH
  2019-01-27 20:19     ` Andrew Lunn
  1 sibling, 0 replies; 5+ messages in thread
From: Greg KH @ 2019-01-27 19:53 UTC (permalink / raw)
  To: Yavuz, Tuba; +Cc: netdev, davem

On Sun, Jan 27, 2019 at 07:49:52PM +0000, Yavuz, Tuba wrote:
> Here is a proposed patch:
> 
> --- drivers/net/usb/hso.c.orig	2019-01-27 14:45:58.232683119 -0500
> +++ drivers/net/usb/hso.c	2019-01-27 14:47:43.592683629 -0500
> @@ -2377,7 +2377,7 @@ static void hso_free_net_device(struct h
>  
>  	remove_net_device(hso_net->parent);
>  
> -	if (hso_net->net)
> +	if (hso_net->net && hso_net->net->reg_state == NETREG_REGISTERED)
>  		unregister_netdev(hso_net->net);
>  
>  	/* start freeing */
> 
> 

Can you resend it in a format that it can be applied?
Documentation/SubmittingPatches should have all of the needed details.

thanks,

greg k-h

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

* Re: Error in the hso driver
  2019-01-27 19:49   ` Yavuz, Tuba
  2019-01-27 19:53     ` Greg KH
@ 2019-01-27 20:19     ` Andrew Lunn
  2019-01-27 20:30       ` Yavuz, Tuba
  1 sibling, 1 reply; 5+ messages in thread
From: Andrew Lunn @ 2019-01-27 20:19 UTC (permalink / raw)
  To: Yavuz, Tuba; +Cc: Greg KH, netdev, davem

On Sun, Jan 27, 2019 at 07:49:52PM +0000, Yavuz, Tuba wrote:
> Here is a proposed patch:
> 
> --- drivers/net/usb/hso.c.orig	2019-01-27 14:45:58.232683119 -0500
> +++ drivers/net/usb/hso.c	2019-01-27 14:47:43.592683629 -0500
> @@ -2377,7 +2377,7 @@ static void hso_free_net_device(struct h
>  
>  	remove_net_device(hso_net->parent);
>  
> -	if (hso_net->net)
> +	if (hso_net->net && hso_net->net->reg_state == NETREG_REGISTERED)
>  		unregister_netdev(hso_net->net);
>  
>  	/* start freeing */

Hi Tuba

Using the free function from the probe often has problems. It is
better to put the cleanup at the end of the probe, and use a
collection of goto's and labels.

	   Andrew

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

* Re: Error in the hso driver
  2019-01-27 20:19     ` Andrew Lunn
@ 2019-01-27 20:30       ` Yavuz, Tuba
  0 siblings, 0 replies; 5+ messages in thread
From: Yavuz, Tuba @ 2019-01-27 20:30 UTC (permalink / raw)
  To: Andrew Lunn; +Cc: Greg KH, netdev, davem

I agree and it would be much easier to track cleanup operations. I think this is happening because probe function calls hso_create_net_device, which performs the cleaning. The driver may need some revision to achieve cleanup inside the probe,

Best,

Tuba Yavuz, Ph.D.
Assistant Professor
Electrical and Computer Engineering Department
University of Florida
Gainesville, FL 32611
Webpage: http://www.tuba.ece.ufl.edu/
Email: tuba@ece.ufl.edu
Phone: (352) 846 0202

________________________________________
From: Andrew Lunn <andrew@lunn.ch>
Sent: Sunday, January 27, 2019 3:19 PM
To: Yavuz, Tuba
Cc: Greg KH; netdev@vger.kernel.org; davem@davemloft.net
Subject: Re: Error in the hso driver

On Sun, Jan 27, 2019 at 07:49:52PM +0000, Yavuz, Tuba wrote:
> Here is a proposed patch:
>
> --- drivers/net/usb/hso.c.orig        2019-01-27 14:45:58.232683119 -0500
> +++ drivers/net/usb/hso.c     2019-01-27 14:47:43.592683629 -0500
> @@ -2377,7 +2377,7 @@ static void hso_free_net_device(struct h
>
>       remove_net_device(hso_net->parent);
>
> -     if (hso_net->net)
> +     if (hso_net->net && hso_net->net->reg_state == NETREG_REGISTERED)
>               unregister_netdev(hso_net->net);
>
>       /* start freeing */

Hi Tuba

Using the free function from the probe often has problems. It is
better to put the cleanup at the end of the probe, and use a
collection of goto's and labels.

           Andrew

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

end of thread, other threads:[~2019-01-27 20:30 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <1548614320825.86428@ece.ufl.edu>
2019-01-27 19:35 ` Error in the hso driver Greg KH
2019-01-27 19:49   ` Yavuz, Tuba
2019-01-27 19:53     ` Greg KH
2019-01-27 20:19     ` Andrew Lunn
2019-01-27 20:30       ` Yavuz, Tuba

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).