diff options
author | Eric Dumazet <edumazet@google.com> | 2015-10-02 16:54:31 -0700 |
---|---|---|
committer | Sasha Levin <sasha.levin@oracle.com> | 2015-12-03 10:17:20 -0500 |
commit | b2567c1c3e78d35dab01ac1f3f8331d42d3df062 (patch) | |
tree | ce982d3562a68a6fac88bce58f4407985fcd33b0 | |
parent | b3e72d9e9b537883e140a9814778fa0b86df0330 (diff) | |
download | lwn-b2567c1c3e78d35dab01ac1f3f8331d42d3df062.tar.gz lwn-b2567c1c3e78d35dab01ac1f3f8331d42d3df062.zip |
net: avoid NULL deref in inet_ctl_sock_destroy()
[ Upstream commit 8fa677d2706d325d71dab91bf6e6512c05214e37 ]
Under low memory conditions, tcp_sk_init() and icmp_sk_init()
can both iterate on all possible cpus and call inet_ctl_sock_destroy(),
with eventual NULL pointer.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Dmitry Vyukov <dvyukov@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
-rw-r--r-- | include/net/inet_common.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/include/net/inet_common.h b/include/net/inet_common.h index b2828a06a5a6..a7d812d05fba 100644 --- a/include/net/inet_common.h +++ b/include/net/inet_common.h @@ -42,7 +42,8 @@ int inet_recv_error(struct sock *sk, struct msghdr *msg, int len, static inline void inet_ctl_sock_destroy(struct sock *sk) { - sk_release_kernel(sk); + if (sk) + sk_release_kernel(sk); } #endif |