Re: [PATCH AUTOSEL 4.19 040/123] bpf: allocate local storage buffers using GFP_ATOMIC

From: Naresh Kamboju
Date: Fri Dec 07 2018 - 01:55:24 EST


On Fri, 7 Dec 2018 at 12:10, Naresh Kamboju <naresh.kamboju@xxxxxxxxxx> wrote:
>
> On Wed, 5 Dec 2018 at 15:08, Sasha Levin <sashal@xxxxxxxxxx> wrote:
> >
> > From: Roman Gushchin <guroan@xxxxxxxxx>
> >
> > [ Upstream commit 569a933b03f3c48b392fe67c0086b3a6b9306b5a ]
> >
> > Naresh reported an issue with the non-atomic memory allocation of
> > cgroup local storage buffers:
> >
> > [ 73.047526] BUG: sleeping function called from invalid context at
> > /srv/oe/build/tmp-rpb-glibc/work-shared/intel-corei7-64/kernel-source/mm/slab.h:421
> > [ 73.060915] in_atomic(): 1, irqs_disabled(): 0, pid: 3157, name: test_cgroup_sto
> > [ 73.068342] INFO: lockdep is turned off.
> > [ 73.072293] CPU: 2 PID: 3157 Comm: test_cgroup_sto Not tainted
> > 4.20.0-rc2-next-20181113 #1
> > [ 73.080548] Hardware name: Supermicro SYS-5019S-ML/X11SSH-F, BIOS
> > 2.0b 07/27/2017
> > [ 73.088018] Call Trace:
> > [ 73.090463] dump_stack+0x70/0xa5
> > [ 73.093783] ___might_sleep+0x152/0x240
> > [ 73.097619] __might_sleep+0x4a/0x80
> > [ 73.101191] __kmalloc_node+0x1cf/0x2f0
> > [ 73.105031] ? cgroup_storage_update_elem+0x46/0x90
> > [ 73.109909] cgroup_storage_update_elem+0x46/0x90
> >
> > cgroup_storage_update_elem() (as well as other update map update
> > callbacks) is called with disabled preemption, so GFP_ATOMIC
> > allocation should be used: e.g. alloc_htab_elem() in hashtab.c.
> >
> > Reported-by: Naresh Kamboju <naresh.kamboju@xxxxxxxxxx>
> > Tested-by: Naresh Kamboju <naresh.kamboju@xxxxxxxxxx>
> > Signed-off-by: Roman Gushchin <guro@xxxxxx>
> > Cc: Alexei Starovoitov <ast@xxxxxxxxxx>
> > Cc: Daniel Borkmann <daniel@xxxxxxxxxxxxx>
> > Signed-off-by: Alexei Starovoitov <ast@xxxxxxxxxx>
> > Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>
>
> I have reported above issue on 4.20.0-rc2-next-20181113.
> Now this BUG re-occurring on 4.19.8-rc1 on x86_64 and arm64 devices.

This BUG: was seen on 4.19.1-rc1 also on x86_64 and arm64 devices.

- Naresh