This is a note to let you know that I've just added the patch titled bpf: add schedule points in percpu arrays management to the 4.9-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: bpf-add-schedule-points-in-percpu-arrays-management.patch and it can be found in the queue-4.9 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From foo@baz Fri Mar 9 14:20:51 PST 2018 From: Daniel Borkmann <daniel@xxxxxxxxxxxxx> Date: Thu, 8 Mar 2018 16:17:36 +0100 Subject: bpf: add schedule points in percpu arrays management To: gregkh@xxxxxxxxxxxxxxxxxxx Cc: ast@xxxxxxxxxx, daniel@xxxxxxxxxxxxx, stable@xxxxxxxxxxxxxxx, Eric Dumazet <edumazet@xxxxxxxxxx> Message-ID: <2f5704af2bdf05e8eae92917e2aeaec49d5477c9.1520521792.git.daniel@xxxxxxxxxxxxx> From: Eric Dumazet <edumazet@xxxxxxxxxx> [ upstream commit 32fff239de37ef226d5b66329dd133f64d63b22d ] syszbot managed to trigger RCU detected stalls in bpf_array_free_percpu() It takes time to allocate a huge percpu map, but even more time to free it. Since we run in process context, use cond_resched() to yield cpu if needed. Fixes: a10423b87a7e ("bpf: introduce BPF_MAP_TYPE_PERCPU_ARRAY map") Signed-off-by: Eric Dumazet <edumazet@xxxxxxxxxx> Reported-by: syzbot <syzkaller@xxxxxxxxxxxxxxxx> Signed-off-by: Daniel Borkmann <daniel@xxxxxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- kernel/bpf/arraymap.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) --- a/kernel/bpf/arraymap.c +++ b/kernel/bpf/arraymap.c @@ -20,8 +20,10 @@ static void bpf_array_free_percpu(struct { int i; - for (i = 0; i < array->map.max_entries; i++) + for (i = 0; i < array->map.max_entries; i++) { free_percpu(array->pptrs[i]); + cond_resched(); + } } static int bpf_array_alloc_percpu(struct bpf_array *array) @@ -37,6 +39,7 @@ static int bpf_array_alloc_percpu(struct return -ENOMEM; } array->pptrs[i] = ptr; + cond_resched(); } return 0; Patches currently in stable-queue which might be from daniel@xxxxxxxxxxxxx are queue-4.9/bpf-fix-mlock-precharge-on-arraymaps.patch queue-4.9/bpf-x64-implement-retpoline-for-tail-call.patch queue-4.9/bpf-arm64-fix-out-of-bounds-access-in-tail-call.patch queue-4.9/bpf-fix-wrong-exposure-of-map_flags-into-fdinfo-for-lpm.patch queue-4.9/bpf-ppc64-fix-out-of-bounds-access-in-tail-call.patch queue-4.9/bpf-add-schedule-points-in-percpu-arrays-management.patch