Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp5126911pxj; Wed, 9 Jun 2021 09:43:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxzXQwgVSFC5OYV7FLMTZCTot+xGJWB/0ohUSEtjyGN3MYIoP8ydoV7xc85Fapn0fokMkWO X-Received: by 2002:a17:907:7848:: with SMTP id lb8mr771230ejc.494.1623256993710; Wed, 09 Jun 2021 09:43:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623256993; cv=none; d=google.com; s=arc-20160816; b=pZg5PcxfeAtR9sFvAQNWxaZ6z0IlcGGCuVv7DaIWaeTGPYEE0+PBL//ZGj24tLnSOG MfJpHw2wVC5U7N1zZZhpzn+HrFq4j7irgdm1OKi+DDyFf65IgDt5AhCGkaT5xYhfH+UD g4vkwHbnU+yaegav/xlSY8nrWUVrQLbFSE5wXNdV08RMUad4kPxuRVscxL6X0VbU2buB 2fV4dd1ftCJuUO/8JK5mvDmIMALfMU3c5BI7VDDNhZ5Tgm6tPlcRaeoXEagiuASCKoL/ 5CW/3KTCm/VCMg97pAkU11UUu0GI8emQQ02QKkJbsGYyvwNF9lj7Pb23+vFYp40Mzd0/ +nlQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:sender:dkim-signature; bh=lLAFftWTRfU9UdVVIqPeG3pBuEuPsjeirhpadGfrMlU=; b=o2RJVD07UAWPRAcfhxlM5woUJjqo+LPDllAYiEy36XGqR+hWPO1CHrKkjx+zzmlo6V QBdq2KEB7FHXnGseC/o9/r8MpZIAVlT31eQwTSzBwx8OiI3j2C87xbWsemIbdAmvZJFw wwpmybSm0U8QRIyAjcJIY2rB5GFx3SwHgjzbLlGs7kf7UwzzVi9Jelt8vZCyuHgcSPgR PmYZ0oxZJuhhmN/CEHNRw/UPM//LTVMfBkF4q+/liVTpN/QVWFWZlzPFB/xJWYm1Vz7d MyvoKRaGcmF7wAjtcda58nVpvN4Sk5cSQnI3N/IVY5SUWxLBt2h5ei26BKpTq1MyCq/W K+cw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=hd3OxYzu; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y9si170356eds.105.2021.06.09.09.42.49; Wed, 09 Jun 2021 09:43:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=hd3OxYzu; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230358AbhFIQjV (ORCPT + 99 others); Wed, 9 Jun 2021 12:39:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39316 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229519AbhFIQjU (ORCPT ); Wed, 9 Jun 2021 12:39:20 -0400 Received: from mail-pg1-x52d.google.com (mail-pg1-x52d.google.com [IPv6:2607:f8b0:4864:20::52d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 806F2C061574; Wed, 9 Jun 2021 09:37:24 -0700 (PDT) Received: by mail-pg1-x52d.google.com with SMTP id l184so4401519pgd.8; Wed, 09 Jun 2021 09:37:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=lLAFftWTRfU9UdVVIqPeG3pBuEuPsjeirhpadGfrMlU=; b=hd3OxYzuCxjJshqISM1dEksV2/cS79/tq5n1KGKoEvYqhhObrPAqnqWKHxFKO4QqRh RMBfRjGOYnhtDCtxtGx8I+5qUyoJpVDcq2oted4KqRuBhi8RzuDPnv9DAFGj3wbewIcV /x5XzFs6rlUxUXgCt61wTPUdcBwzLMlvhJa7/wvDTYwAZcV3p4FAsCgYOTMsHiXFjV2v oxcAY5VBXzUoWltekZB49tTkznLeP3NhvFBuguka4zk4AEoGpCtS3EE8RpCv6JIZ0Bqy 4AankeT4cz8rOgYWsrwBKNxKVP/gf4vd/gGozLDf10aAZfjE4XvNKEDWyMErGSmKiEuc fKHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :mime-version:content-transfer-encoding; bh=lLAFftWTRfU9UdVVIqPeG3pBuEuPsjeirhpadGfrMlU=; b=i2FPsN5YfMXEfK4unUydEp+4wzxWoGOXpw5TEwq+FOGFf49K7znGe0ZurLNaLLJ15p FxJ7a4XgJnHL5DX8pycB1UQ4XvjUOAUJkAG/Dy1m7gIQqRQQrb7NxgNA8qK3/WVPu4ME ykzcECfR3xeH+V8b6TUdcM+qr9o2vrDsCVlhNv3U6nAMNXGDOW1FXGBeWWBLIFvSi3V8 V0kQ2HZt+Pv4ra53X8lqmfcJQLJwzpNcaNBFhVO+L2uLaixYCn9tqrKAdkncpCFx1sFr tkBphLqGMwoTcL8Dar7wlLr8SuCArqPlvn/QdGd4NgFdli9RzhylFhMs5TS/nknij7dA 5vBg== X-Gm-Message-State: AOAM532+YjU8r81EMlWzSIPidHoO08b8zTfFzpiR3yHU7gJmZQI5Sdyg 2y2EJpL5rP0/6+fHX6U4+Eo= X-Received: by 2002:a63:540d:: with SMTP id i13mr557601pgb.360.1623256644009; Wed, 09 Jun 2021 09:37:24 -0700 (PDT) Received: from bbox-1.mtv.corp.google.com ([2620:15c:211:201:f6bf:4fe:3a78:d973]) by smtp.gmail.com with ESMTPSA id j17sm127848pff.77.2021.06.09.09.37.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Jun 2021 09:37:23 -0700 (PDT) Sender: Minchan Kim From: Minchan Kim To: Andrew Morton Cc: Michal Hocko , linux-mm , LKML , Suren Baghdasaryan , John Dias , Paul Moore , selinux@vger.kernel.org, Minchan Kim Subject: [PATCH] selinux: use __GFP_NOWARN with GFP_NOWAIT Date: Wed, 9 Jun 2021 09:37:17 -0700 Message-Id: <20210609163717.2719253-1-minchan@kernel.org> X-Mailer: git-send-email 2.32.0.rc1.229.g3e70b5a671-goog MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In the field, we have seen lots of allocation failure from the call path below. 06-03 13:29:12.999 1010315 31557 31557 W Binder : 31542_2: page allocation failure: order:0, mode:0x800(GFP_NOWAIT), nodemask=(null),cpuset=background,mems_allowed=0 ... ... 06-03 13:29:12.999 1010315 31557 31557 W Call trace: 06-03 13:29:12.999 1010315 31557 31557 W : dump_backtrace.cfi_jt+0x0/0x8 06-03 13:29:12.999 1010315 31557 31557 W : dump_stack+0xc8/0x14c 06-03 13:29:12.999 1010315 31557 31557 W : warn_alloc+0x158/0x1c8 06-03 13:29:12.999 1010315 31557 31557 W : __alloc_pages_slowpath+0x9d8/0xb80 06-03 13:29:12.999 1010315 31557 31557 W : __alloc_pages_nodemask+0x1c4/0x430 06-03 13:29:12.999 1010315 31557 31557 W : allocate_slab+0xb4/0x390 06-03 13:29:12.999 1010315 31557 31557 W : ___slab_alloc+0x12c/0x3a4 06-03 13:29:12.999 1010315 31557 31557 W : kmem_cache_alloc+0x358/0x5e4 06-03 13:29:12.999 1010315 31557 31557 W : avc_alloc_node+0x30/0x184 06-03 13:29:12.999 1010315 31557 31557 W : avc_update_node+0x54/0x4f0 06-03 13:29:12.999 1010315 31557 31557 W : avc_has_extended_perms+0x1a4/0x460 06-03 13:29:12.999 1010315 31557 31557 W : selinux_file_ioctl+0x320/0x3d0 06-03 13:29:12.999 1010315 31557 31557 W : __arm64_sys_ioctl+0xec/0x1fc 06-03 13:29:12.999 1010315 31557 31557 W : el0_svc_common+0xc0/0x24c 06-03 13:29:12.999 1010315 31557 31557 W : el0_svc+0x28/0x88 06-03 13:29:12.999 1010315 31557 31557 W : el0_sync_handler+0x8c/0xf0 06-03 13:29:12.999 1010315 31557 31557 W : el0_sync+0x1a4/0x1c0 .. .. 06-03 13:29:12.999 1010315 31557 31557 W SLUB : Unable to allocate memory on node -1, gfp=0x900(GFP_NOWAIT|__GFP_ZERO) 06-03 13:29:12.999 1010315 31557 31557 W cache : avc_node, object size: 72, buffer size: 80, default order: 0, min order: 0 06-03 13:29:12.999 1010315 31557 31557 W node 0 : slabs: 57, objs: 2907, free: 0 06-03 13:29:12.999 1010161 10686 10686 W SLUB : Unable to allocate memory on node -1, gfp=0x900(GFP_NOWAIT|__GFP_ZERO) 06-03 13:29:12.999 1010161 10686 10686 W cache : avc_node, object size: 72, buffer size: 80, default order: 0, min order: 0 06-03 13:29:12.999 1010161 10686 10686 W node 0 : slabs: 57, objs: 2907, free: 0 06-03 13:29:12.999 1010161 10686 10686 W SLUB : Unable to allocate memory on node -1, gfp=0x900(GFP_NOWAIT|__GFP_ZERO) 06-03 13:29:12.999 1010161 10686 10686 W cache : avc_node, object size: 72, buffer size: 80, default order: 0, min order: 0 06-03 13:29:12.999 1010161 10686 10686 W node 0 : slabs: 57, objs: 2907, free: 0 06-03 13:29:12.999 1010161 10686 10686 W SLUB : Unable to allocate memory on node -1, gfp=0x900(GFP_NOWAIT|__GFP_ZERO) 06-03 13:29:12.999 1010161 10686 10686 W cache : avc_node, object size: 72, buffer size: 80, default order: 0, min order: 0 06-03 13:29:12.999 1010161 10686 10686 W node 0 : slabs: 57, objs: 2907, free: 0 06-03 13:29:13.000 1010161 10686 10686 W SLUB : Unable to allocate memory on node -1, gfp=0x900(GFP_NOWAIT|__GFP_ZERO) 06-03 13:29:13.000 1010161 10686 10686 W cache : avc_node, object size: 72, buffer size: 80, default order: 0, min order: 0 06-03 13:29:13.000 1010161 10686 10686 W node 0 : slabs: 57, objs: 2907, free: 0 06-03 13:29:13.000 1010161 10686 10686 W SLUB : Unable to allocate memory on node -1, gfp=0x900(GFP_NOWAIT|__GFP_ZERO) 06-03 13:29:13.000 1010161 10686 10686 W cache : avc_node, object size: 72, buffer size: 80, default order: 0, min order: 0 06-03 13:29:13.000 1010161 10686 10686 W node 0 : slabs: 57, objs: 2907, free: 0 06-03 13:29:13.000 1010161 10686 10686 W SLUB : Unable to allocate memory on node -1, gfp=0x900(GFP_NOWAIT|__GFP_ZERO) 06-03 13:29:13.000 1010161 10686 10686 W cache : avc_node, object size: 72, buffer size: 80, default order: 0, min order: 0 06-03 13:29:13.000 1010161 10686 10686 W node 0 : slabs: 57, objs: 2907, free: 0 06-03 13:29:13.000 10230 30892 30892 W SLUB : Unable to allocate memory on node -1, gfp=0x900(GFP_NOWAIT|__GFP_ZERO) 06-03 13:29:13.000 10230 30892 30892 W cache : avc_node, object size: 72, buffer size: 80, default order: 0, min order: 0 06-03 13:29:13.000 10230 30892 30892 W node 0 : slabs: 57, objs: 2907, free: 0 06-03 13:29:13.000 10230 30892 30892 W SLUB : Unable to allocate memory on node -1, gfp=0x900(GFP_NOWAIT|__GFP_ZERO) 06-03 13:29:13.000 10230 30892 30892 W cache : avc_node, object size: 72, buffer size: 80, default order: 0, min order: 0 Based on [1], selinux is tolerate for failure of memory allocation. Then, use __GFP_NOWARN together. [1] 476accbe2f6e, selinux: use GFP_NOWAIT in the AVC kmem_caches Signed-off-by: Minchan Kim --- security/selinux/avc.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/security/selinux/avc.c b/security/selinux/avc.c index c90f45587a0c..6417ed49661f 100644 --- a/security/selinux/avc.c +++ b/security/selinux/avc.c @@ -297,26 +297,27 @@ static struct avc_xperms_decision_node struct avc_xperms_decision_node *xpd_node; struct extended_perms_decision *xpd; - xpd_node = kmem_cache_zalloc(avc_xperms_decision_cachep, GFP_NOWAIT); + xpd_node = kmem_cache_zalloc(avc_xperms_decision_cachep, + GFP_NOWAIT | __GFP_NOWARN); if (!xpd_node) return NULL; xpd = &xpd_node->xpd; if (which & XPERMS_ALLOWED) { xpd->allowed = kmem_cache_zalloc(avc_xperms_data_cachep, - GFP_NOWAIT); + GFP_NOWAIT | __GFP_NOWARN); if (!xpd->allowed) goto error; } if (which & XPERMS_AUDITALLOW) { xpd->auditallow = kmem_cache_zalloc(avc_xperms_data_cachep, - GFP_NOWAIT); + GFP_NOWAIT | __GFP_NOWARN); if (!xpd->auditallow) goto error; } if (which & XPERMS_DONTAUDIT) { xpd->dontaudit = kmem_cache_zalloc(avc_xperms_data_cachep, - GFP_NOWAIT); + GFP_NOWAIT | __GFP_NOWARN); if (!xpd->dontaudit) goto error; } @@ -344,7 +345,7 @@ static struct avc_xperms_node *avc_xperms_alloc(void) { struct avc_xperms_node *xp_node; - xp_node = kmem_cache_zalloc(avc_xperms_cachep, GFP_NOWAIT); + xp_node = kmem_cache_zalloc(avc_xperms_cachep, GFP_NOWAIT | __GFP_NOWARN); if (!xp_node) return xp_node; INIT_LIST_HEAD(&xp_node->xpd_head); @@ -500,7 +501,7 @@ static struct avc_node *avc_alloc_node(struct selinux_avc *avc) { struct avc_node *node; - node = kmem_cache_zalloc(avc_node_cachep, GFP_NOWAIT); + node = kmem_cache_zalloc(avc_node_cachep, GFP_NOWAIT | __GFP_NOWARN); if (!node) goto out; -- 2.32.0.rc1.229.g3e70b5a671-goog