diff options
| author | Eric Dumazet <edumazet@google.com> | 2015-11-02 07:50:07 -0800 |
|---|---|---|
| committer | Luis Henriques <luis.henriques@canonical.com> | 2015-12-09 11:40:55 +0000 |
| commit | 299b6c906f0d39eb6ad0e91089c6c2000fc575fc (patch) | |
| tree | 434c26e694d404c67cfa177f2090f4d36d732b0b /include | |
| parent | 78be569977c1ef9946be590113407ef0ae4a39fc (diff) | |
net: avoid NULL deref in inet_ctl_sock_destroy()
commit 8fa677d2706d325d71dab91bf6e6512c05214e37 upstream.
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>
[ luis: backported to 3.16: adjusted context ]
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
Diffstat (limited to 'include')
| -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 fe7994c48b75..fd1da045dabc 100644 --- a/include/net/inet_common.h +++ b/include/net/inet_common.h @@ -40,7 +40,8 @@ int inet_ctl_sock_create(struct sock **sk, unsigned short family, static inline void inet_ctl_sock_destroy(struct sock *sk) { - sk_release_kernel(sk); + if (sk) + sk_release_kernel(sk); } #endif |
