Thread (4 messages) 4 messages, 4 authors, 2015-02-05

RE: [PATCH] NetCP: Deletion of unnecessary checks before two function calls

flat view

From: Kwok, WingMan <hidden>
Date: 2015-02-05 15:51:06
Also in: kernel-janitors, lkml

Dan,

Thanks.  We'll look into it and send a patch soon.

Regards,
WingMan
-----Original Message-----
From: Dan Carpenter [mailto:dan.carpenter@oracle.com]
Sent: Thursday, February 05, 2015 7:02 AM
To: Kwok, WingMan
Cc: SF Markus Elfring; Karicheri, Muralidharan; Kwok, WingMan;
netdev@vger.kernel.org; LKML; kernel-janitors@vger.kernel.org; Julia Lawall
Subject: Re: [PATCH] NetCP: Deletion of unnecessary checks before two
function calls

Hi Wingman,

There are some bugs in this error handling.

On Tue, Feb 03, 2015 at 08:22:23PM +0100, SF Markus Elfring wrote:
quoted
diff --git a/drivers/net/ethernet/ti/netcp_ethss.c
b/drivers/net/ethernet/ti/netcp_ethss.c
quoted
index fa1041a..cbd6dde 100644
--- a/drivers/net/ethernet/ti/netcp_ethss.c
+++ b/drivers/net/ethernet/ti/netcp_ethss.c
@@ -2010,12 +2010,10 @@ static int gbe_probe(struct netcp_device
*netcp_device, struct device *dev,
quoted
 quit:
 	if (gbe_dev->hw_stats)
 		devm_kfree(dev, gbe_dev->hw_stats);
-	if (gbe_dev->ale)
-		cpsw_ale_destroy(gbe_dev->ale);
+	cpsw_ale_destroy(gbe_dev->ale);
 	if (gbe_dev->ss_regs)
 		devm_iounmap(dev, gbe_dev->ss_regs);
-	if (interfaces)
-		of_node_put(interfaces);
+	of_node_put(interfaces);
                    ^^^^^^^^^^
"interfaces" is sometimes unintialized in this code.  I don't know why
GCC doesn't catch this...  :(

This is a "one rrr bug", which is caused because you just have one error
label "quit" which handles all the error handling.  Please read my
Google+ comment on error handling.

https://plus.google.com/106378716002406849458/posts/dnanfhQ4mHQ
quoted
 	devm_kfree(dev, gbe_dev);
        ^^^^^^^^^^^^^^^^^^^^^^^^
This is not the right way to use the devm_ interface.  These things are
freed automatically on error or when we are done with them.  This driver
is double freeing pretty much everything.  Grep for devm_kfree() and
fix everything.

I don't know why kbuild didn't catch this...

regards
dan carpenter
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help