diff options
author | Cong Wang <xiyou.wangcong@gmail.com> | 2018-09-04 05:12:41 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-09-06 08:14:00 +0300 |
commit | 0a3b8b2b215f9e84b82ae97df71292ccfd92b1e7 (patch) | |
tree | 8dcd50c6f0a21d53352fc53dc828ebb8a180dc27 | |
parent | e65a9e480e91ddf9e15155454d370cead64689c8 (diff) | |
download | linux-0a3b8b2b215f9e84b82ae97df71292ccfd92b1e7.tar.xz |
tipc: orphan sock in tipc_release()
Before we unlock the sock in tipc_release(), we have to
detach sk->sk_socket from sk, otherwise a parallel
tipc_sk_fill_sock_diag() could stil read it after we
free this socket.
Fixes: c30b70deb5f4 ("tipc: implement socket diagnostics for AF_TIPC")
Reported-and-tested-by: syzbot+48804b87c16588ad491d@syzkaller.appspotmail.com
Cc: Jon Maloy <jon.maloy@ericsson.com>
Cc: Ying Xue <ying.xue@windriver.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Acked-by: Ying Xue <ying.xue@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/tipc/socket.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/tipc/socket.c b/net/tipc/socket.c index ab7a2a7178f7..a0ff8bffc96b 100644 --- a/net/tipc/socket.c +++ b/net/tipc/socket.c @@ -576,6 +576,7 @@ static int tipc_release(struct socket *sock) sk_stop_timer(sk, &sk->sk_timer); tipc_sk_remove(tsk); + sock_orphan(sk); /* Reject any messages that accumulated in backlog queue */ release_sock(sk); tipc_dest_list_purge(&tsk->cong_links); |