summaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2015-11-02 07:50:07 -0800
committerDavid S. Miller <davem@davemloft.net>2015-11-02 22:46:09 -0500
commit8fa677d2706d325d71dab91bf6e6512c05214e37 (patch)
tree6c16f02d7e748cd313e91424e34f181d9c7bdf21 /include/net
parentec13ad1d705c9990d55ed8ab21946cef323d30c7 (diff)
downloadlinux-8fa677d2706d325d71dab91bf6e6512c05214e37.tar.gz
linux-8fa677d2706d325d71dab91bf6e6512c05214e37.tar.bz2
linux-8fa677d2706d325d71dab91bf6e6512c05214e37.zip
net: avoid NULL deref in inet_ctl_sock_destroy()
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>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/inet_common.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/include/net/inet_common.h b/include/net/inet_common.h
index 279f83591971..109e3ee9108c 100644
--- a/include/net/inet_common.h
+++ b/include/net/inet_common.h
@@ -41,7 +41,8 @@ int inet_recv_error(struct sock *sk, struct msghdr *msg, int len,
static inline void inet_ctl_sock_destroy(struct sock *sk)
{
- sock_release(sk->sk_socket);
+ if (sk)
+ sock_release(sk->sk_socket);
}
#endif