[mISDN PATCH v2 12/19] Fix skb leak in error cases

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Karsten Keil
Date: Friday, May 22, 2009 - 2:04 pm

If the channel receive function returns an error the skb must be freed.

Signed-off-by: Karsten Keil <keil@b1-systems.de>
---
 drivers/isdn/mISDN/socket.c |   22 ++++++++++++----------
 1 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/drivers/isdn/mISDN/socket.c b/drivers/isdn/mISDN/socket.c
index 530f689..2a2c30a 100644
--- a/drivers/isdn/mISDN/socket.c
+++ b/drivers/isdn/mISDN/socket.c
@@ -209,7 +209,7 @@ mISDN_sock_sendmsg(struct kiocb *iocb, struct socket *sock,
 
 	if (memcpy_fromiovec(skb_put(skb, len), msg->msg_iov, len)) {
 		err = -EFAULT;
-		goto drop;
+		goto done;
 	}
 
 	memcpy(mISDN_HEAD_P(skb), skb->data, MISDN_HEADER_LEN);
@@ -230,19 +230,21 @@ mISDN_sock_sendmsg(struct kiocb *iocb, struct socket *sock,
 		     __func__, mISDN_HEAD_ID(skb));
 
 	err = -ENODEV;
-	if (!_pms(sk)->ch.peer ||
-	    (err = _pms(sk)->ch.recv(_pms(sk)->ch.peer, skb)))
-		goto drop;
-
-	err = len;
+	if (!_pms(sk)->ch.peer)
+		goto done;
+	err = _pms(sk)->ch.recv(_pms(sk)->ch.peer, skb);
+	if (err)
+		goto done;
+	else {
+		skb = NULL;
+		err = len;
+	}
 
 done:
+	if (skb)
+		kfree_skb(skb);
 	release_sock(sk);
 	return err;
-
-drop:
-	kfree_skb(skb);
-	goto done;
 }
 
 static int
-- 
1.6.0.2

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[mISDN PATCH v2 00/19] mISDN patchset for next, Karsten Keil, (Fri May 22, 1:42 pm)
[mISDN PATCH v2 07/19] Fix DTMF locking bug issue, Karsten Keil, (Fri May 22, 2:04 pm)
[mISDN PATCH v2 06/19] Added layer-1-hold feature, Karsten Keil, (Fri May 22, 2:04 pm)
[mISDN PATCH v2 09/19] Fix TEI and SAPI handling, Karsten Keil, (Fri May 22, 2:04 pm)
[mISDN PATCH v2 12/19] Fix skb leak in error cases, Karsten Keil, (Fri May 22, 2:04 pm)
[mISDN PATCH v2 15/19] Add PCI ID for Junghanns 8S card, Karsten Keil, (Fri May 22, 2:04 pm)
[mISDN PATCH v2 17/19] Cleanup debug messages, Karsten Keil, (Fri May 22, 2:04 pm)
Re: [mISDN PATCH v2 00/19] mISDN patchset for next, David Miller, (Mon May 25, 12:53 am)