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

From: David Daney
Date: Mon Sep 27 2010 - 14:24:04 EST


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

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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/