All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 6/9] staging: octeon: use free_netdev(netdev) instead of kfree()
@ 2010-09-26  9:58 ` Vasiliy Kulikov
  0 siblings, 0 replies; 8+ messages in thread
From: Vasiliy Kulikov @ 2010-09-26  9:58 UTC (permalink / raw)
  To: kernel-janitors
  Cc: Greg Kroah-Hartman, Ralf Baechle, David Daney, Andy Shevchenko,
	David S. Miller, devel, linux-kernel

It is not guaranteed that free_netdev() is macro.
Freeing netdev without free_netdev() leads to net, tx leaks.
I might lead to dereferencing freed pointer.

---
 drivers/staging/octeon/ethernet.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/ethernet.c
index fb568a9..a8f780e 100644
--- a/drivers/staging/octeon/ethernet.c
+++ b/drivers/staging/octeon/ethernet.c
@@ -670,7 +670,7 @@ static int __init cvm_oct_init_module(void)
 
 			if (register_netdev(dev) < 0) {
 				pr_err("Failed to register ethernet device for POW\n");
-				kfree(dev);
+				free_netdev(dev);
 			} else {
 				cvm_oct_device[CVMX_PIP_NUM_INPUT_PORTS] = dev;
 				pr_info("%s: POW send group %d, receive group %d\n",
@@ -756,12 +756,12 @@ static int __init cvm_oct_init_module(void)
 			}
 
 			if (!dev->netdev_ops) {
-				kfree(dev);
+				free_netdev(dev);
 			} else if (register_netdev(dev) < 0) {
 				pr_err("Failed to register ethernet device "
 					 "for interface %d, port %d\n",
 					 interface, priv->port);
-				kfree(dev);
+				free_netdev(dev);
 			} else {
 				cvm_oct_device[priv->port] = dev;
 				fau -@@ -815,7 +815,7 @@ static void __exit cvm_oct_cleanup_module(void)
 
 			cvm_oct_tx_shutdown_dev(dev);
 			unregister_netdev(dev);
-			kfree(dev);
+			free_netdev(dev);
 			cvm_oct_device[port] = NULL;
 		}
 	}
-- 
1.7.0.4


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

* [PATCH 6/9] staging: octeon: use free_netdev(netdev) instead of kfree()
@ 2010-09-26  9:58 ` Vasiliy Kulikov
  0 siblings, 0 replies; 8+ messages in thread
From: Vasiliy Kulikov @ 2010-09-26  9:58 UTC (permalink / raw)
  To: kernel-janitors
  Cc: Greg Kroah-Hartman, Ralf Baechle, David Daney, Andy Shevchenko,
	David S. Miller, devel, linux-kernel

It is not guaranteed that free_netdev() is macro.
Freeing netdev without free_netdev() leads to net, tx leaks.
I might lead to dereferencing freed pointer.

---
 drivers/staging/octeon/ethernet.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/ethernet.c
index fb568a9..a8f780e 100644
--- a/drivers/staging/octeon/ethernet.c
+++ b/drivers/staging/octeon/ethernet.c
@@ -670,7 +670,7 @@ static int __init cvm_oct_init_module(void)
 
 			if (register_netdev(dev) < 0) {
 				pr_err("Failed to register ethernet device for POW\n");
-				kfree(dev);
+				free_netdev(dev);
 			} else {
 				cvm_oct_device[CVMX_PIP_NUM_INPUT_PORTS] = dev;
 				pr_info("%s: POW send group %d, receive group %d\n",
@@ -756,12 +756,12 @@ static int __init cvm_oct_init_module(void)
 			}
 
 			if (!dev->netdev_ops) {
-				kfree(dev);
+				free_netdev(dev);
 			} else if (register_netdev(dev) < 0) {
 				pr_err("Failed to register ethernet device "
 					 "for interface %d, port %d\n",
 					 interface, priv->port);
-				kfree(dev);
+				free_netdev(dev);
 			} else {
 				cvm_oct_device[priv->port] = dev;
 				fau -=
@@ -815,7 +815,7 @@ static void __exit cvm_oct_cleanup_module(void)
 
 			cvm_oct_tx_shutdown_dev(dev);
 			unregister_netdev(dev);
-			kfree(dev);
+			free_netdev(dev);
 			cvm_oct_device[port] = NULL;
 		}
 	}
-- 
1.7.0.4


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

* Re: [PATCH 6/9] staging: octeon: use free_netdev(netdev) instead
  2010-09-26  9:58 ` Vasiliy Kulikov
@ 2010-09-27 18:08   ` David Daney
  -1 siblings, 0 replies; 8+ messages in thread
From: David Daney @ 2010-09-27 18:08 UTC (permalink / raw)
  To: Vasiliy Kulikov
  Cc: kernel-janitors, Greg Kroah-Hartman, Ralf Baechle,
	Andy Shevchenko, David S. Miller, devel, linux-kernel

On 09/26/2010 02:58 AM, Vasiliy Kulikov wrote:
> It is not guaranteed that free_netdev() is macro.
> Freeing netdev without free_netdev() leads to net, tx leaks.
> I might lead to dereferencing freed pointer.
>

There is no Signed-off-by header here.

Please resend the patch with the proper headers.

Other than that, it looks good to me.  You can add:

Acked-by: David Daney <ddaney@caviumnetworks.com>

Thanks.



> ---
>   drivers/staging/octeon/ethernet.c |    8 ++++----
>   1 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/ethernet.c
> index fb568a9..a8f780e 100644
> --- a/drivers/staging/octeon/ethernet.c
> +++ b/drivers/staging/octeon/ethernet.c
> @@ -670,7 +670,7 @@ static int __init cvm_oct_init_module(void)
>
>   			if (register_netdev(dev)<  0) {
>   				pr_err("Failed to register ethernet device for POW\n");
> -				kfree(dev);
> +				free_netdev(dev);
>   			} else {
>   				cvm_oct_device[CVMX_PIP_NUM_INPUT_PORTS] = dev;
>   				pr_info("%s: POW send group %d, receive group %d\n",
> @@ -756,12 +756,12 @@ static int __init cvm_oct_init_module(void)
>   			}
>
>   			if (!dev->netdev_ops) {
> -				kfree(dev);
> +				free_netdev(dev);
>   			} else if (register_netdev(dev)<  0) {
>   				pr_err("Failed to register ethernet device "
>   					 "for interface %d, port %d\n",
>   					 interface, priv->port);
> -				kfree(dev);
> +				free_netdev(dev);
>   			} else {
>   				cvm_oct_device[priv->port] = dev;
>   				fau -> @@ -815,7 +815,7 @@ static void __exit cvm_oct_cleanup_module(void)
>
>   			cvm_oct_tx_shutdown_dev(dev);
>   			unregister_netdev(dev);
> -			kfree(dev);
> +			free_netdev(dev);
>   			cvm_oct_device[port] = NULL;
>   		}
>   	}


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

* Re: [PATCH 6/9] staging: octeon: use free_netdev(netdev) instead of kfree()
@ 2010-09-27 18:08   ` David Daney
  0 siblings, 0 replies; 8+ messages in thread
From: David Daney @ 2010-09-27 18:08 UTC (permalink / raw)
  To: Vasiliy Kulikov
  Cc: kernel-janitors, Greg Kroah-Hartman, Ralf Baechle,
	Andy Shevchenko, David S. Miller, devel, linux-kernel

On 09/26/2010 02:58 AM, Vasiliy Kulikov wrote:
> It is not guaranteed that free_netdev() is macro.
> Freeing netdev without free_netdev() leads to net, tx leaks.
> I might lead to dereferencing freed pointer.
>

There is no Signed-off-by header here.

Please resend the patch with the proper headers.

Other than that, it looks good to me.  You can add:

Acked-by: David Daney <ddaney@caviumnetworks.com>

Thanks.



> ---
>   drivers/staging/octeon/ethernet.c |    8 ++++----
>   1 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/ethernet.c
> index fb568a9..a8f780e 100644
> --- a/drivers/staging/octeon/ethernet.c
> +++ b/drivers/staging/octeon/ethernet.c
> @@ -670,7 +670,7 @@ static int __init cvm_oct_init_module(void)
>
>   			if (register_netdev(dev)<  0) {
>   				pr_err("Failed to register ethernet device for POW\n");
> -				kfree(dev);
> +				free_netdev(dev);
>   			} else {
>   				cvm_oct_device[CVMX_PIP_NUM_INPUT_PORTS] = dev;
>   				pr_info("%s: POW send group %d, receive group %d\n",
> @@ -756,12 +756,12 @@ static int __init cvm_oct_init_module(void)
>   			}
>
>   			if (!dev->netdev_ops) {
> -				kfree(dev);
> +				free_netdev(dev);
>   			} else if (register_netdev(dev)<  0) {
>   				pr_err("Failed to register ethernet device "
>   					 "for interface %d, port %d\n",
>   					 interface, priv->port);
> -				kfree(dev);
> +				free_netdev(dev);
>   			} else {
>   				cvm_oct_device[priv->port] = dev;
>   				fau -=
> @@ -815,7 +815,7 @@ static void __exit cvm_oct_cleanup_module(void)
>
>   			cvm_oct_tx_shutdown_dev(dev);
>   			unregister_netdev(dev);
> -			kfree(dev);
> +			free_netdev(dev);
>   			cvm_oct_device[port] = NULL;
>   		}
>   	}


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

* [PATCH 6/9] staging: octeon: use free_netdev(netdev) instead of kfree()
@ 2010-09-28 17:08   ` Vasiliy Kulikov
  0 siblings, 0 replies; 8+ messages in thread
From: Vasiliy Kulikov @ 2010-09-28 17:08 UTC (permalink / raw)
  To: kernel-janitors
  Cc: Greg Kroah-Hartman, Ralf Baechle, David Daney, Andy Shevchenko,
	David S. Miller, devel, linux-kernel

It is not guaranteed that free_netdev() is macro.
Freeing netdev without free_netdev() leads to net, tx leaks.
I might lead to dereferencing freed pointer.


Signed-off-by: Vasiliy Kulikov <segooon@gmail.com>
---
 drivers/staging/octeon/ethernet.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/ethernet.c
index fb568a9..a8f780e 100644
--- a/drivers/staging/octeon/ethernet.c
+++ b/drivers/staging/octeon/ethernet.c
@@ -670,7 +670,7 @@ static int __init cvm_oct_init_module(void)
 
 			if (register_netdev(dev) < 0) {
 				pr_err("Failed to register ethernet device for POW\n");
-				kfree(dev);
+				free_netdev(dev);
 			} else {
 				cvm_oct_device[CVMX_PIP_NUM_INPUT_PORTS] = dev;
 				pr_info("%s: POW send group %d, receive group %d\n",
@@ -756,12 +756,12 @@ static int __init cvm_oct_init_module(void)
 			}
 
 			if (!dev->netdev_ops) {
-				kfree(dev);
+				free_netdev(dev);
 			} else if (register_netdev(dev) < 0) {
 				pr_err("Failed to register ethernet device "
 					 "for interface %d, port %d\n",
 					 interface, priv->port);
-				kfree(dev);
+				free_netdev(dev);
 			} else {
 				cvm_oct_device[priv->port] = dev;
 				fau -@@ -815,7 +815,7 @@ static void __exit cvm_oct_cleanup_module(void)
 
 			cvm_oct_tx_shutdown_dev(dev);
 			unregister_netdev(dev);
-			kfree(dev);
+			free_netdev(dev);
 			cvm_oct_device[port] = NULL;
 		}
 	}
-- 
1.7.0.4


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

* [PATCH 6/9] staging: octeon: use free_netdev(netdev) instead of kfree()
@ 2010-09-28 17:08   ` Vasiliy Kulikov
  0 siblings, 0 replies; 8+ messages in thread
From: Vasiliy Kulikov @ 2010-09-28 17:08 UTC (permalink / raw)
  To: kernel-janitors
  Cc: Greg Kroah-Hartman, Ralf Baechle, David Daney, Andy Shevchenko,
	David S. Miller, devel, linux-kernel

It is not guaranteed that free_netdev() is macro.
Freeing netdev without free_netdev() leads to net, tx leaks.
I might lead to dereferencing freed pointer.


Signed-off-by: Vasiliy Kulikov <segooon@gmail.com>
---
 drivers/staging/octeon/ethernet.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/ethernet.c
index fb568a9..a8f780e 100644
--- a/drivers/staging/octeon/ethernet.c
+++ b/drivers/staging/octeon/ethernet.c
@@ -670,7 +670,7 @@ static int __init cvm_oct_init_module(void)
 
 			if (register_netdev(dev) < 0) {
 				pr_err("Failed to register ethernet device for POW\n");
-				kfree(dev);
+				free_netdev(dev);
 			} else {
 				cvm_oct_device[CVMX_PIP_NUM_INPUT_PORTS] = dev;
 				pr_info("%s: POW send group %d, receive group %d\n",
@@ -756,12 +756,12 @@ static int __init cvm_oct_init_module(void)
 			}
 
 			if (!dev->netdev_ops) {
-				kfree(dev);
+				free_netdev(dev);
 			} else if (register_netdev(dev) < 0) {
 				pr_err("Failed to register ethernet device "
 					 "for interface %d, port %d\n",
 					 interface, priv->port);
-				kfree(dev);
+				free_netdev(dev);
 			} else {
 				cvm_oct_device[priv->port] = dev;
 				fau -=
@@ -815,7 +815,7 @@ static void __exit cvm_oct_cleanup_module(void)
 
 			cvm_oct_tx_shutdown_dev(dev);
 			unregister_netdev(dev);
-			kfree(dev);
+			free_netdev(dev);
 			cvm_oct_device[port] = NULL;
 		}
 	}
-- 
1.7.0.4


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

* Re: [PATCH 6/9] staging: octeon: use free_netdev(netdev) instead
  2010-09-28 17:08   ` Vasiliy Kulikov
@ 2010-09-28 17:13     ` David Daney
  -1 siblings, 0 replies; 8+ messages in thread
From: David Daney @ 2010-09-28 17:13 UTC (permalink / raw)
  To: Vasiliy Kulikov, Greg Kroah-Hartman
  Cc: kernel-janitors, Ralf Baechle, Andy Shevchenko, David S. Miller,
	devel, linux-kernel

On 09/28/2010 10:08 AM, Vasiliy Kulikov wrote:
> It is not guaranteed that free_netdev() is macro.
> Freeing netdev without free_netdev() leads to net, tx leaks.
> I might lead to dereferencing freed pointer.
>
>
> Signed-off-by: Vasiliy Kulikov<segooon@gmail.com>

Thanks, you can add:

Acked-by: David Daney <ddaney@caviumnetworks.com>


> ---
>   drivers/staging/octeon/ethernet.c |    8 ++++----
>   1 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/ethernet.c
> index fb568a9..a8f780e 100644
> --- a/drivers/staging/octeon/ethernet.c
> +++ b/drivers/staging/octeon/ethernet.c
> @@ -670,7 +670,7 @@ static int __init cvm_oct_init_module(void)
>
>   			if (register_netdev(dev)<  0) {
>   				pr_err("Failed to register ethernet device for POW\n");
> -				kfree(dev);
> +				free_netdev(dev);
>   			} else {
>   				cvm_oct_device[CVMX_PIP_NUM_INPUT_PORTS] = dev;
>   				pr_info("%s: POW send group %d, receive group %d\n",
> @@ -756,12 +756,12 @@ static int __init cvm_oct_init_module(void)
>   			}
>
>   			if (!dev->netdev_ops) {
> -				kfree(dev);
> +				free_netdev(dev);
>   			} else if (register_netdev(dev)<  0) {
>   				pr_err("Failed to register ethernet device "
>   					 "for interface %d, port %d\n",
>   					 interface, priv->port);
> -				kfree(dev);
> +				free_netdev(dev);
>   			} else {
>   				cvm_oct_device[priv->port] = dev;
>   				fau -> @@ -815,7 +815,7 @@ static void __exit cvm_oct_cleanup_module(void)
>
>   			cvm_oct_tx_shutdown_dev(dev);
>   			unregister_netdev(dev);
> -			kfree(dev);
> +			free_netdev(dev);
>   			cvm_oct_device[port] = NULL;
>   		}
>   	}


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

* Re: [PATCH 6/9] staging: octeon: use free_netdev(netdev) instead of kfree()
@ 2010-09-28 17:13     ` David Daney
  0 siblings, 0 replies; 8+ messages in thread
From: David Daney @ 2010-09-28 17:13 UTC (permalink / raw)
  To: Vasiliy Kulikov, Greg Kroah-Hartman
  Cc: kernel-janitors, Ralf Baechle, Andy Shevchenko, David S. Miller,
	devel, linux-kernel

On 09/28/2010 10:08 AM, Vasiliy Kulikov wrote:
> It is not guaranteed that free_netdev() is macro.
> Freeing netdev without free_netdev() leads to net, tx leaks.
> I might lead to dereferencing freed pointer.
>
>
> Signed-off-by: Vasiliy Kulikov<segooon@gmail.com>

Thanks, you can add:

Acked-by: David Daney <ddaney@caviumnetworks.com>


> ---
>   drivers/staging/octeon/ethernet.c |    8 ++++----
>   1 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/ethernet.c
> index fb568a9..a8f780e 100644
> --- a/drivers/staging/octeon/ethernet.c
> +++ b/drivers/staging/octeon/ethernet.c
> @@ -670,7 +670,7 @@ static int __init cvm_oct_init_module(void)
>
>   			if (register_netdev(dev)<  0) {
>   				pr_err("Failed to register ethernet device for POW\n");
> -				kfree(dev);
> +				free_netdev(dev);
>   			} else {
>   				cvm_oct_device[CVMX_PIP_NUM_INPUT_PORTS] = dev;
>   				pr_info("%s: POW send group %d, receive group %d\n",
> @@ -756,12 +756,12 @@ static int __init cvm_oct_init_module(void)
>   			}
>
>   			if (!dev->netdev_ops) {
> -				kfree(dev);
> +				free_netdev(dev);
>   			} else if (register_netdev(dev)<  0) {
>   				pr_err("Failed to register ethernet device "
>   					 "for interface %d, port %d\n",
>   					 interface, priv->port);
> -				kfree(dev);
> +				free_netdev(dev);
>   			} else {
>   				cvm_oct_device[priv->port] = dev;
>   				fau -=
> @@ -815,7 +815,7 @@ static void __exit cvm_oct_cleanup_module(void)
>
>   			cvm_oct_tx_shutdown_dev(dev);
>   			unregister_netdev(dev);
> -			kfree(dev);
> +			free_netdev(dev);
>   			cvm_oct_device[port] = NULL;
>   		}
>   	}


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

end of thread, other threads:[~2010-09-28 17:13 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-09-26  9:58 [PATCH 6/9] staging: octeon: use free_netdev(netdev) instead of kfree() Vasiliy Kulikov
2010-09-26  9:58 ` Vasiliy Kulikov
2010-09-27 18:08 ` [PATCH 6/9] staging: octeon: use free_netdev(netdev) instead David Daney
2010-09-27 18:08   ` [PATCH 6/9] staging: octeon: use free_netdev(netdev) instead of kfree() David Daney
2010-09-28 17:08 ` Vasiliy Kulikov
2010-09-28 17:08   ` Vasiliy Kulikov
2010-09-28 17:13   ` [PATCH 6/9] staging: octeon: use free_netdev(netdev) instead David Daney
2010-09-28 17:13     ` [PATCH 6/9] staging: octeon: use free_netdev(netdev) instead of kfree() David Daney

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.