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 <[email protected]>
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;
}
}
_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel