Re: IPv6 issue in next-20171102 - lockdep and BUG handling RA packet.
From: Eric Dumazet
Date: Mon Nov 06 2017 - 17:05:02 EST
On Mon, Nov 6, 2017 at 2:01 PM, Ido Schimmel <idosch@xxxxxxxxxx> wrote:
> On Mon, Nov 06, 2017 at 03:56:54PM -0500, valdis.kletnieks@xxxxxx wrote:
>> I've hit this 6 times now, across 3 boots:
>>
>> Nov 3 11:04:54 turing-police kernel: [ 547.814748] BUG: sleeping function called from invalid context at mm/slab.h:422
>>
>> Nov 3 20:24:11 turing-police kernel: [ 60.093793] BUG: sleeping function called from invalid context at mm/slab.h:422
>> Nov 4 20:20:54 turing-police kernel: [86264.366955] BUG: sleeping function called from invalid context at mm/slab.h:422
>> Nov 5 19:17:40 turing-police kernel: [172469.769179] BUG: sleeping function called from invalid context at mm/slab.h:422
>> Nov 6 06:07:37 turing-police kernel: [211467.239460] BUG: sleeping function called from invalid context at mm/slab.h:422
>>
>> Nov 6 14:12:43 turing-police kernel: [ 54.891848] BUG: sleeping function called from invalid context at mm/slab.h:422
>>
>> Something seems to be going astray while handling a RA packet.
>>
>> Kernel dirty due to hand-patching https://patchwork.kernel.org/patch/10003555/
>> (signed int:1 bitfield in sched.h causing tons of warnings)
>>
>> Unfortunately, the previous next- kernel I built was -20170927 (which worked OK).
>>
>> Googling for things in the traceback in the last month comes up empty, and only
>> thing in the git log for net/ipv6 that looks vaguely related:
>>
>> commit f3d9832e56c48e4ca50bab0457e21bcaade4536d
>> Author: David Ahern <dsahern@xxxxxxxxx>
>> Date: Wed Oct 18 09:56:52 2017 -0700
>>
>> ipv6: addrconf: cleanup locking in ipv6_add_addr
>
> Probably right...
>
> [...]
>
>> [ 54.891848] BUG: sleeping function called from invalid context at mm/slab.h:422
>> [ 54.891855] in_atomic(): 1, irqs_disabled(): 0, pid: 0, name: swapper/0
>> [ 54.891859] INFO: lockdep is turned off.
>> [ 54.891867] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G W OE 4.14.0-rc7-next-20171102-dirty #537
>> [ 54.891872] Hardware name: Dell Inc. Latitude E6530/07Y85M, BIOS A20 05/08/2017
>> [ 54.891877] Call Trace:
>> [ 54.891882] <IRQ>
>> [ 54.891894] dump_stack+0x7b/0xe4
>> [ 54.891907] ___might_sleep+0x1b0/0x300
>> [ 54.891921] kmem_cache_alloc_trace+0x2c7/0x500
>> [ 54.891931] ? cyc2ns_read_end+0x1e/0x30
>> [ 54.891944] ipv6_add_addr+0x15a/0xc30
>> [ 54.891977] ? ipv6_create_tempaddr+0x2ea/0x5d0
>> [ 54.891986] ipv6_create_tempaddr+0x2ea/0x5d0
>
> This function is called from softirq so we should call ipv6_add_addr()
> with 'can_block' set to 'false'.
>
> DavidA, it's already late here so you can probably fix this before I
> take a closer look tomorrow morning. :)
I have a patch, will send in a couple of minutes. Thanks.