diff options
author | Eric Dumazet <edumazet@google.com> | 2015-11-02 07:50:07 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-11-02 22:46:09 -0500 |
commit | 8fa677d2706d325d71dab91bf6e6512c05214e37 (patch) | |
tree | 6c16f02d7e748cd313e91424e34f181d9c7bdf21 /include/net | |
parent | ec13ad1d705c9990d55ed8ab21946cef323d30c7 (diff) | |
download | linux-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.h | 3 |
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 |