Subject: Re: Asterisk deadlocks since Kernel 4.1

From: Hannes Frederic Sowa <[email-masked]>
Date: Wed, 02 Dec 2015 12:40:32 +0100

Hello Stefan,

Stefan Priebe - Profihost AG <[email-masked]> writes:

> here are the results.
>
> It works with 4.1.
> It works with 4.2.
> It does not work with 4.1.13.
>
> git bisect tells me it stopped working after those two commits were applied:
>
> commit d48623677191e0f035d7afd344f92cf880b01f8e
> Author: Herbert Xu <[email-masked]>
> Date:   Tue Sep 22 11:38:56 2015 +0800
>
>     netlink: Replace rhash_portid with bound
>
> commit 4e27762417669cb459971635be550eb7b5598286
> Author: Herbert Xu <[email-masked]>
> Date:   Fri Sep 18 19:16:50 2015 +0800
>
>     netlink: Fix autobind race condition that leads to zero port ID

Cool, thanks a lot. Does this patch make a difference?

diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
index 59651af..278e94c 100644
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
@@ -1137,7 +1137,7 @@ static int netlink_insert(struct sock *sk, u32 portid)
 
 	/* We need to ensure that the socket is hashed and visible. */
 	smp_wmb();
-	nlk_sk(sk)->bound = portid;
+	nlk_sk(sk)->bound = true;
 
 err:
 	release_sock(sk);