From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Dumazet Subject: [PATCH net] bpf: add schedule points to map alloc/free Date: Tue, 12 Dec 2017 14:22:39 -0800 Message-ID: <1513117359.25033.56.camel@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Cc: netdev To: Alexei Starovoitov , Daniel Borkmann Return-path: Received: from mail-io0-f194.google.com ([209.85.223.194]:44912 "EHLO mail-io0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752320AbdLLWWm (ORCPT ); Tue, 12 Dec 2017 17:22:42 -0500 Received: by mail-io0-f194.google.com with SMTP id w127so710579iow.11 for ; Tue, 12 Dec 2017 14:22:42 -0800 (PST) Sender: netdev-owner@vger.kernel.org List-ID: From: Eric Dumazet While using large percpu maps, htab_map_alloc() can hold cpu for hundreds of ms. This patch adds cond_resched() calls to percpu alloc/free call sites, all running in process context. Signed-off-by: Eric Dumazet ---  kernel/bpf/hashtab.c |    2 ++  1 file changed, 2 insertions(+) diff --git a/kernel/bpf/hashtab.c b/kernel/bpf/hashtab.c index e469e05c8e83bc3256378644e3f3c26555651261..3905d4bc5b80d74f0b8f9e2e8f8526a0115ce239 100644 --- a/kernel/bpf/hashtab.c +++ b/kernel/bpf/hashtab.c @@ -114,6 +114,7 @@ static void htab_free_elems(struct bpf_htab *htab) pptr = htab_elem_get_ptr(get_htab_elem(htab, i), htab->map.key_size); free_percpu(pptr); + cond_resched(); } free_elems: bpf_map_area_free(htab->elems); @@ -159,6 +160,7 @@ static int prealloc_init(struct bpf_htab *htab) goto free_elems; htab_elem_set_ptr(get_htab_elem(htab, i), htab->map.key_size, pptr); + cond_resched(); } skip_percpu_elems: