net: defer call to cgroup_sk_alloc()
authorEric Dumazet <edumazet@google.com>
Mon, 9 Oct 2017 04:44:52 +0000 (21:44 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 10 Oct 2017 03:55:01 +0000 (20:55 -0700)
commitfbb1fb4ad415cb31ce944f65a5ca700aaf73a227
treea7b1d3fddab2353229b73daaa103904ce539414d
parent9f1c2674b328a69ab5a9b5a1c52405795ee4163f
net: defer call to cgroup_sk_alloc()

sk_clone_lock() might run while TCP/DCCP listener already vanished.

In order to prevent use after free, it is better to defer cgroup_sk_alloc()
to the point we know both parent and child exist, and from process context.

Fixes: e994b2f0fb92 ("tcp: do not lock listener to process SYN packets")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Tejun Heo <tj@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
kernel/cgroup/cgroup.c
net/core/sock.c
net/ipv4/inet_connection_sock.c