aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390
diff options
context:
space:
mode:
authorWei Yongjun <yongjun_wei@trendmicro.com.cn>2012-09-24 00:24:25 -0400
committerDavid S. Miller <davem@davemloft.net>2012-09-24 15:45:17 -0400
commitf68bd07c41f93a4291d3605d5b5ac254340c439e (patch)
tree51f6c0294f6d52465827058413dd0e2aaf66e63e /drivers/s390
parent3c7874758743a857cadbb9eaf42825d75370dacd (diff)
qeth: fix possible memory leak in qeth_l3_add_[vipa|rxip]()
ipaddr has been allocated in function qeth_l3_add_vipa() but does not free before leaving from the error handling cases. The same problem also exists in function qeth_l3_add_rxip(). spatch with a semantic match is used to found this problem. (http://coccinelle.lip6.fr/) Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn> Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/s390')
-rw-r--r--drivers/s390/net/qeth_l3_main.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/s390/net/qeth_l3_main.c b/drivers/s390/net/qeth_l3_main.c
index c5f03fa70fba..4cd310cb5bdf 100644
--- a/drivers/s390/net/qeth_l3_main.c
+++ b/drivers/s390/net/qeth_l3_main.c
@@ -794,6 +794,7 @@ int qeth_l3_add_vipa(struct qeth_card *card, enum qeth_prot_versions proto,
794 rc = -EEXIST; 794 rc = -EEXIST;
795 spin_unlock_irqrestore(&card->ip_lock, flags); 795 spin_unlock_irqrestore(&card->ip_lock, flags);
796 if (rc) { 796 if (rc) {
797 kfree(ipaddr);
797 return rc; 798 return rc;
798 } 799 }
799 if (!qeth_l3_add_ip(card, ipaddr)) 800 if (!qeth_l3_add_ip(card, ipaddr))
@@ -858,6 +859,7 @@ int qeth_l3_add_rxip(struct qeth_card *card, enum qeth_prot_versions proto,
858 rc = -EEXIST; 859 rc = -EEXIST;
859 spin_unlock_irqrestore(&card->ip_lock, flags); 860 spin_unlock_irqrestore(&card->ip_lock, flags);
860 if (rc) { 861 if (rc) {
862 kfree(ipaddr);
861 return rc; 863 return rc;
862 } 864 }
863 if (!qeth_l3_add_ip(card, ipaddr)) 865 if (!qeth_l3_add_ip(card, ipaddr))