Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp6995378imu; Wed, 14 Nov 2018 10:01:52 -0800 (PST) X-Google-Smtp-Source: AJdET5e+h/g/tUxQfzMexsi7MBa71+/hb0FRrc0We610DTDoMGQVxtVIuFoCsO4Ou4hmuWYMmcmP X-Received: by 2002:a62:11c7:: with SMTP id 68mr2945177pfr.21.1542218512559; Wed, 14 Nov 2018 10:01:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542218512; cv=none; d=google.com; s=arc-20160816; b=xXFa9zCMpHEPFMfs8MZdPlWusfr3w4PWE/YHnj4+MxQQZU0XhLrAtwBYJD0LImklhi rHZ2KLTwOXMbq8a2h1bEfAkM2Sh5FM23nGmDatrO3ldw8ZCooNcQdqzNhS68hJATEm26 K81gsna7YDu7GsnWRXOxp6sgEYyE5dbOjCpUtrv3zLUPMByOhqoXOhHKLf4qplkkb5Vi 0EqFj3XiXDa0qsadKScE+Mm+HdtiKCWQ2SAjhzYJq/vjn6GjdSDyIGh8yG4eO6ZzOoKn kvkROn4oMjC5CMpF/sXhqzmT4H+hbxvhxwNwRVfCkT28I9jLm4SCgyyk3zdabEmXbdiz 7MPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature; bh=QzUGctcKkN3Yox3+qg/RJuYjGh7fVIBul+U6Le4fp3A=; b=rINlGEj18ABa4u2dBxXx74ueoV7H3lVBNmgGI50ZeatCL4OD/GPYtTA7R1CzH8cdkB GQcqgV4ddxbj/0JzYLQz8Aywpaz0YT0uuIWKG6YLsZzr8WK0gK4m0ZBlGOiXXFhu1eUL 99J+TcENBAOCrOcPXXgl3v9Vf/1u/LlQEb735Oy0adpFXFHhucbEeWjf5G8Y9HeELwTD l+KjdVEh/lwnlgbVS5Oi0nExBYep7T1S7BA+7ASHl41igsdWI2ylJgzSbD+zcgNJxozW egv2ru9T0ejt83qJHr1LKUrDnrOjtODTs6p98wc+YFRBzOnjXsiMoEt/9QvqHzB5VeqR vDTw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=j996MWPE; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z23-v6si25703468plo.265.2018.11.14.10.01.12; Wed, 14 Nov 2018 10:01:52 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=j996MWPE; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731448AbeKOEFB (ORCPT + 99 others); Wed, 14 Nov 2018 23:05:01 -0500 Received: from mail-io1-f66.google.com ([209.85.166.66]:41400 "EHLO mail-io1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727576AbeKOEFB (ORCPT ); Wed, 14 Nov 2018 23:05:01 -0500 Received: by mail-io1-f66.google.com with SMTP id s22so504657ioc.8; Wed, 14 Nov 2018 10:00:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=QzUGctcKkN3Yox3+qg/RJuYjGh7fVIBul+U6Le4fp3A=; b=j996MWPEOXArZ5BvQBnoOmhuW7C1W35FrPh4kU53JE6sTL48tFRVw33vvr7PJ/CbnU WC7aCbjqj90smMg5P59M89yCCf/dqqw4veDluvSKgs4vIoDWafKaYa1AsLgwMApTI4+L YU6iwFrYcPscUCbSz5wB4IWzksD0yZeZ9Uq2qAp9mru63msikgA5XcHQBBSoLnZaOTTr vQVE0jP0U6t3Q7mMI4LVYToQa7KOl2gZB7A5dglIgdHobrU/0QYEKxbP8L/KAQRX0ht9 QlFDCFUYfOX+LFnDGN2pJ7HmAiDfFf2llGfqQNUy/yfldqw3+4JkQXHaGiTPzf/1M+Ve 7ROA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=QzUGctcKkN3Yox3+qg/RJuYjGh7fVIBul+U6Le4fp3A=; b=hx9JpMBvpt36HNpFyPXhjzj8j7GkGulqn6ZPe3QlAHIXSejtSnLGtzlZ3Bu7z32umP t0IqT6k0YU5V7vgxtNKZ1b3qkICp7f49nDpKtgyrwVoRHKMU1HHOGz8ZgdzXe/Uh+hVc Mthbe0W3j4TiSCdUZHgOASWHGqzEBB0IW1hzWxawYtNU6OI/ZVR/7GkjyiyGB8myg4d7 lTPltX6HnLSKAH+5e8eoXSkBrIzdF4bvMf8rCM7fBQWNYdu4o2h3DLrPAg7Zexlw28GH mnbHEHKN9z1fTCd5JWQ9DosFvvf0tc5lHLr0s/OAh1LzKEP1DoztKTkQvH53FGgM0TXu qHTQ== X-Gm-Message-State: AGRZ1gIcBQYcCw4xQIhKAyLv0vmrDI5dtMAX/3mpTlUyJfhqK1oFMlpU FhdftoO1ieof6OrwUo3KLYM64wExmDM= X-Received: by 2002:a6b:6f18:: with SMTP id k24mr1621306ioc.236.1542218447677; Wed, 14 Nov 2018 10:00:47 -0800 (PST) Received: from castle.tfbnw.net ([2620:10d:c090:180::1:6f7f]) by smtp.gmail.com with ESMTPSA id y5sm1125453itb.42.2018.11.14.10.00.46 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 14 Nov 2018 10:00:46 -0800 (PST) From: Roman Gushchin X-Google-Original-From: Roman Gushchin To: netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@fb.com, Roman Gushchin , Alexei Starovoitov , Daniel Borkmann Subject: [PATCH bpf] bpf: allocate local storage buffers using GFP_ATOMIC Date: Wed, 14 Nov 2018 10:00:34 -0800 Message-Id: <20181114180034.25558-1-guro@fb.com> X-Mailer: git-send-email 2.17.2 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 Tested-by: Naresh Kamboju Signed-off-by: Roman Gushchin Cc: Alexei Starovoitov Cc: Daniel Borkmann --- kernel/bpf/local_storage.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/bpf/local_storage.c b/kernel/bpf/local_storage.c index c97a8f968638..bed9d48a7ae9 100644 --- a/kernel/bpf/local_storage.c +++ b/kernel/bpf/local_storage.c @@ -139,7 +139,8 @@ static int cgroup_storage_update_elem(struct bpf_map *map, void *_key, return -ENOENT; new = kmalloc_node(sizeof(struct bpf_storage_buffer) + - map->value_size, __GFP_ZERO | GFP_USER, + map->value_size, + __GFP_ZERO | GFP_ATOMIC | __GFP_NOWARN, map->numa_node); if (!new) return -ENOMEM; -- 2.17.2