Re: [PATCH 6/9] staging: octeon: use free_netdev(netdev) instead of kfree()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxx>

Thanks, you can add:

Acked-by: David Daney <ddaney@xxxxxxxxxxxxxxxxxx>


---
  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;
  		}
  	}

_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel


[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux