diff options
author | Eric Dumazet <edumazet@google.com> | 2015-11-02 07:50:07 -0800 |
---|---|---|
committer | Willy Tarreau <w@1wt.eu> | 2015-12-06 00:49:19 +0100 |
commit | e3478e8ce2b45f38be09d82689af2afed509fcb8 (patch) | |
tree | 6637d9575baa8950cc371f58bd5dfc1b9b2b6557 | |
parent | ad86f1236b86dc375ad7439bfd4faeac59d80fbf (diff) |
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: Ben Hutchings <ben@decadent.org.uk>
(cherry picked from commit f79c83d6c41930362bc66fc71489e92975a2facf)
Signed-off-by: Willy Tarreau <w@1wt.eu>
-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 18c773286b91..1fb67ab46ad0 100644 --- a/include/net/inet_common.h +++ b/include/net/inet_common.h @@ -47,7 +47,8 @@ extern int inet_ctl_sock_create(struct sock **sk, static inline void inet_ctl_sock_destroy(struct sock *sk) { - sk_release_kernel(sk); + if (sk) + sk_release_kernel(sk); } #endif |