Subject: Re: Asterisk deadlocks since Kernel 4.1

From: Stefan Priebe <[email-masked]>
Date: Sat, 5 Dec 2015 16:34:08 +0100

Hello Philipp,

Am 05.12.2015 um 15:19 schrieb Philipp Matthias Hahn:
> Hello Hannes,
>
> On Wed, Dec 02, 2015 at 12:40:32PM +0100, Hannes Frederic Sowa wrote:
>>> 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);
>
> Didn't help, test program still gets stuck; sorry :-(

Can you please try this patch on top of 4.1.13 (which helps me):
http://pastebin.com/raw.php?i=hiuq4bsW

Stefan

> Philipp