Skip to contentSkip to conversation

net: ip, raw_diag -- Fix socket leaking for destroy request

PATCH In review Cyrill Gorcunov 2 participants 2 messages Nov 2, 2016

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/2 net: ip, raw_diag -- Fix socket leaking for destroy request

In raw_diag_destroy the helper raw_sock_get returns with sock_hold call, so we have to put it then.

CC David S. Miller <[email protected]>
CC Eric Dumazet <[email protected]>
CC David Ahern <[email protected]>
CC Andrey Vagin <[email protected]>
CC Stephen Hemminger <[email protected]>
---
 net/ipv4/raw_diag.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
net/ipv4/raw_diag.c +4 -1
Index: linux-ml.git/net/ipv4/raw_diag.c
===================================================================
@@ -205,11 +205,14 @@ static int raw_diag_destroy(struct sk_bu
 {
 	struct net *net = sock_net(in_skb->sk);
 	struct sock *sk;
+	int err;
 
 	sk = raw_sock_get(net, r);
 	if (IS_ERR(sk))
 		return PTR_ERR(sk);
-	return sock_diag_destroy(sk, ECONNABORTED);
+	err = sock_diag_destroy(sk, ECONNABORTED);
+	sock_put(sk);
+	return err;
 }
 #endif
 
Acked-by on v1 1/2
#1 lore raw
Quoted 9 lines · Cyrill Gorcunov

In raw_diag_destroy the helper raw_sock_get returns with sock_hold call, so we have to put it then.

CC David S. Miller <[email protected]>
CC Eric Dumazet <[email protected]>
CC David Ahern <[email protected]>
CC Andrey Vagin <[email protected]>
CC Stephen Hemminger <[email protected]>
Quoted 3 lines
---
 net/ipv4/raw_diag.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)