From 0d116bcb6a0d3d5a57f66c2378f5db7e114a0943 Mon Sep 17 00:00:00 2001 From: Chris Lew Date: Fri, 28 Sep 2018 12:13:36 -0700 Subject: [PATCH] net: qrtr: Detach socket from sock during release There is a race between releasing a socket and a sock structure. Skbs still in flight may hold references to the sock structure, preventing it from being freed when the socket is released. Detach the socket in the release call to prevent references to that sockets resources. Change-Id: I44ac553cf73b3a2148ce50d7552c39b08f5e0f91 Signed-off-by: Chris Lew --- net/qrtr/qrtr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/qrtr/qrtr.c b/net/qrtr/qrtr.c index 258c7a10ef0a..ef16b8ef9f1a 100644 --- a/net/qrtr/qrtr.c +++ b/net/qrtr/qrtr.c @@ -1252,7 +1252,7 @@ static int qrtr_release(struct socket *sock) if (!sock_flag(sk, SOCK_DEAD)) sk->sk_state_change(sk); - sock_set_flag(sk, SOCK_DEAD); + sock_orphan(sk); sock->sk = NULL; if (!sock_flag(sk, SOCK_ZAPPED))