From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 88E68C6FD18 for ; Tue, 28 Mar 2023 14:59:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 125836B0072; Tue, 28 Mar 2023 10:59:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0D5A76B0074; Tue, 28 Mar 2023 10:59:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EE09D6B0075; Tue, 28 Mar 2023 10:59:31 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id DAB786B0072 for ; Tue, 28 Mar 2023 10:59:31 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 80DC2A0310 for ; Tue, 28 Mar 2023 14:59:31 +0000 (UTC) X-FDA: 80618615742.05.5B20DC3 Received: from mail-qt1-f178.google.com (mail-qt1-f178.google.com [209.85.160.178]) by imf08.hostedemail.com (Postfix) with ESMTP id 9E75A16000C for ; Tue, 28 Mar 2023 14:59:29 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=ahLkV5MC; spf=pass (imf08.hostedemail.com: domain of laoar.shao@gmail.com designates 209.85.160.178 as permitted sender) smtp.mailfrom=laoar.shao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1680015569; a=rsa-sha256; cv=none; b=Chx7rkTOmxv33bKG1ZXeTp9p137LdwfrwfYGyj2mZdbnBPdaC0vwG/IThQOb6Bw3NPLgLp z42tkEFabo8MZ9+8JpdPDJFGqEbu7TqCoFQ4b255G33ZkiRNoeL3zvjwy9URujIceIB42G A2O7OyJHLP99eMDQlNEUkfglepMpp8U= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=ahLkV5MC; spf=pass (imf08.hostedemail.com: domain of laoar.shao@gmail.com designates 209.85.160.178 as permitted sender) smtp.mailfrom=laoar.shao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1680015569; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=gHnaccwzn19dadalkQOhR1Jp8Zx3LucnViI5cQVWpwA=; b=wcEo3SejpeCV0wCLJSBTt0+yd//j3r07OinwbG5a5TgKIbH6JPUbK+eCjwp4p6RbyKo2jw f1mmu8HxhiaivxvIeUAzWoQcnkeU9s5TRYfoa7rBWBFe0kAxlwaC8BIT54YCWH9TpKC7C2 VxIFAXKahxGtAcM20HwCxLfpLB61gnk= Received: by mail-qt1-f178.google.com with SMTP id h16so5340402qtn.7 for ; Tue, 28 Mar 2023 07:59:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680015568; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=gHnaccwzn19dadalkQOhR1Jp8Zx3LucnViI5cQVWpwA=; b=ahLkV5MCg3JkAK+Ig+4GzWG/+/OutIuCtGo22G0Na1A72CMWJcgw1tq15MoFpzB1yw 8R2epj24Cl5E13XgZOJu8bH/RgzmqP8q7BsV43ARV+qXBr6zMcC7nrzytZLxlP8XPrIq RoZjYPHPtcQOWCcqKsykMigfKcC3WvCDNUw1J4yt5wquG/4fJnwUd6ooK0Ps4o8JQvzT nYrS1fp5bstpw3v3mbp96ociZVNYFrWOgiVbF0YXMaTRlnM2S4ygeMlMIgxLUSxuIswa Rk4HzgQfr+GcT2/J8Z49nAuGGUy10NMP3NOYWCmsI6syQ3mtNMQ/6Iirl8xEzab2Rk8X zr9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680015568; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gHnaccwzn19dadalkQOhR1Jp8Zx3LucnViI5cQVWpwA=; b=lQyEKsFjG//YsiZ82LLuqKWIHYTowiEkjJk401u7s2hFUOxxlbk8fVw8LF8r3Ef0qk t8WnsOSTmOmz8MgVOwdyWHKdebaH+7wYArtyAcrK397rf0RgmciiDml7/kr22q4m6wSS k7lTaVbAnCIWpTLd/FLX/4berWDZ6DUKfyFuYb8+1xsVKgVt0BLQWBW9VS+4WCGgAloV XKH8yKP1/phHKx+x9NJWwBnsoQ919p+rBkBdwRCgXwsOclSl11/zpaxlWktQhk0IPaS+ 8zRH+Ah6QDyuc7dwLeM+2r4dDt737ewlQYnaw6MiZ5N7D2MtgA2CDFhub3vOW++dGanQ wz2g== X-Gm-Message-State: AO0yUKWTindu214/NrO7Tkxi+dcjNhoFDe7lQkq5/Q/E6hZk7CWShLu/ NKrMtDaeXyjYXeA/swJPtsDv12hyoysVWd09YOk= X-Google-Smtp-Source: AK7set+uNV2d055DK2vEQelsbBuyGfHaIWBUxgzGFuKdBWOhZ7SdC1HlVjGUEeaxT0mCKSzqk6V7qEjjOe4e8XdT2x8= X-Received: by 2002:a05:622a:1a8e:b0:3de:bafb:82b0 with SMTP id s14-20020a05622a1a8e00b003debafb82b0mr5912153qtc.6.1680015568674; Tue, 28 Mar 2023 07:59:28 -0700 (PDT) MIME-Version: 1.0 References: <20230328115053.13539-1-laoar.shao@gmail.com> In-Reply-To: From: Yafang Shao Date: Tue, 28 Mar 2023 22:58:51 +0800 Message-ID: Subject: Re: [PATCH] mm: vmalloc: Avoid warn_alloc noise caused by fatal signal To: Lorenzo Stoakes Cc: akpm@linux-foundation.org, urezki@gmail.com, hch@infradead.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Queue-Id: 9E75A16000C X-Rspamd-Server: rspam01 X-Stat-Signature: 3u33cwkophcjfgtejyufz65ydzf3ag1f X-HE-Tag: 1680015569-750877 X-HE-Meta: U2FsdGVkX19WSTLd7nl/obdmYY977hcRob1bdBbN3FJUkU5JVsVOdvoMJCYiaogo5qZ7JTBiKwnWFrGDTVNA++Fk9RR2lb357yCW9E9deV/GgBp5fItSatgpj8GAtlNfbb5ldh2Sd2FRnZ6hBcOjqN9P2wyN3wKZDC80B1v/2VVRFFtte9V/1iIyG4TXb9Vicnlc/G9xqNYMZyVZKfi/LUtYrIRy2NjcspJLi2QY7phMxv7Z7ddHFLkS3xMNMDt1nWu7dTs30yaf3kbRY8Ic7nSII+TxPJmv7p4z8QCmlfHHQQyB2qA7G/dL+cjcNXHwBRQeyVi4nKegfK8TQGUmnmWWpEdSKqPCFvuEeaC6DNmCl6vc2TNjv4AuIGCXXcSoIRh5RSRpBRlnlevmbzGHgQ+TtVMvFSPLULcvz+02zfDnujD0Ip6jkyEKGh5Zv7oyzeYfpSvATmWmHws6hr8ODTsiZLz73iwQUHTGmXF5iEkG1jnaEy4DDimMB8Tfdv26yUZl94NdVnwYDGWzbPZKjlkG9iG2+Wlb5SKoMwMq881KrMnHpIbS/X59IPSCopv2cUZZqKujOs7wzrticy8nQdELwI1rHDke6x4GMmLOnUbI3k/pT02eEs255x23qbH8oYtFoyRSYMRnjlyEFZGP//PUkbVXbP+efyJBBCbzNwpBD0pTZ0e+501hlQtZH8W5zY3XO0IB/MpwyQqt66qEYi5lpcL8VUsVlxoatJMhFDH24r7HMFJo0MfVDEKLOfoeX44OIQMq7oQieVmNGGGZFv5+n7BXqcPtT6Dnxo08Unw2FqgWw1nFdtL+qJk2pMj+wfeOgdQA4nnYVnxmI4TOiut5BNqVdWkKlcny9Vz6rF5G1zy+EUyaU82/56skPCVPVZqoCqGqFuw9LJ3ELiJB5Cxbt0BzgN7WFqFy99MOzHy9VKx5zNFBBwGZ/1wtCloWVBjkYgyK6soOfOZL5UH Ni/n1tRk CCPuKonEWn/1FE+PPHdM06RPVzrEqlT/sQM8Fxb/crKYSlFp0TB8a80Yf6DmLV7jRq9F5oL43Aa+c0+pGLRoqLg9FhKnH4Prb0mCIA2+jCDIhbYxo/OYpm+oMc4UzoD6B8+mhrrr2Qu4fS/t0p36Xo+LzfEkVHxxVylys5Jud8dCsqKBWDWRjqfaGUcLC1gM+6wBMARD7hRJmpKCDl+j5LLJqvlqh+h56PLNnpRkIteNNifr2lIE2J/jdivSGXNzNl+ITjPzfpZshIuuYw2MFNw21wDp6kfzZ7OO/7PnN4VogkCeaWt5lWDgVwq3+pvjRrmZ0oushrZjJsPRwVQ7Z+xOrX+0PTWdUNfxAZ+i15Nz3OzcejafC8ATC0+ttWdtlUU54UWn6GTBzdYu5FdiQ4bq7F6+wqCWL/2XewJqmNFmqIx9gw+dmlXFudDKMRoOBZkTy28oR0YVv7bfgZWl5Kz3pjg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Tue, Mar 28, 2023 at 8:52=E2=80=AFPM Lorenzo Stoakes wrote: > > On Tue, Mar 28, 2023 at 11:50:53AM +0000, Yafang Shao wrote: > > There're some suspicious warn_alloc on my test serer, for example, > > > > [13366.518837] warn_alloc: 81 callbacks suppressed > > [13366.518841] test_verifier: vmalloc error: size 4096, page order 0, f= ailed to allocate pages, mode:0x500dc2(GFP_HIGHUSER|__GFP_ZERO|__GFP_ACCOUN= T), nodemask=3D(null),cpuset=3D/,mems_allowed=3D0-1 > > [13366.522240] CPU: 30 PID: 722463 Comm: test_verifier Kdump: loaded Ta= inted: G W O 6.2.0+ #638 > > [13366.524216] Call Trace: > > [13366.524702] > > [13366.525148] dump_stack_lvl+0x6c/0x80 > > [13366.525712] dump_stack+0x10/0x20 > > [13366.526239] warn_alloc+0x119/0x190 > > [13366.526783] ? alloc_pages_bulk_array_mempolicy+0x9e/0x2a0 > > [13366.527470] __vmalloc_area_node+0x546/0x5b0 > > [13366.528066] __vmalloc_node_range+0xc2/0x210 > > [13366.528660] __vmalloc_node+0x42/0x50 > > [13366.529186] ? bpf_prog_realloc+0x53/0xc0 > > [13366.529743] __vmalloc+0x1e/0x30 > > [13366.530235] bpf_prog_realloc+0x53/0xc0 > > [13366.530771] bpf_patch_insn_single+0x80/0x1b0 > > [13366.531351] bpf_jit_blind_constants+0xe9/0x1c0 > > [13366.531932] ? __free_pages+0xee/0x100 > > [13366.532457] ? free_large_kmalloc+0x58/0xb0 > > [13366.533002] bpf_int_jit_compile+0x8c/0x5e0 > > [13366.533546] bpf_prog_select_runtime+0xb4/0x100 > > [13366.534108] bpf_prog_load+0x6b1/0xa50 > > [13366.534610] ? perf_event_task_tick+0x96/0xb0 > > [13366.535151] ? security_capable+0x3a/0x60 > > [13366.535663] __sys_bpf+0xb38/0x2190 > > [13366.536120] ? kvm_clock_get_cycles+0x9/0x10 > > [13366.536643] __x64_sys_bpf+0x1c/0x30 > > [13366.537094] do_syscall_64+0x38/0x90 > > [13366.537554] entry_SYSCALL_64_after_hwframe+0x72/0xdc > > [13366.538107] RIP: 0033:0x7f78310f8e29 > > [13366.538561] Code: 01 00 48 81 c4 80 00 00 00 e9 f1 fe ff ff 0f 1f 00= 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05= <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 17 e0 2c 00 f7 d8 64 89 01 48 > > [13366.540286] RSP: 002b:00007ffe2a61fff8 EFLAGS: 00000206 ORIG_RAX: 00= 00000000000141 > > [13366.541031] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f7= 8310f8e29 > > [13366.541749] RDX: 0000000000000080 RSI: 00007ffe2a6200b0 RDI: 0000000= 000000005 > > [13366.542470] RBP: 00007ffe2a620010 R08: 00007ffe2a6202a0 R09: 00007ff= e2a6200b0 > > [13366.543183] R10: 00000000000f423e R11: 0000000000000206 R12: 0000000= 000407800 > > [13366.543900] R13: 00007ffe2a620540 R14: 0000000000000000 R15: 0000000= 000000000 > > [13366.544623] > > [13366.545260] Mem-Info: > > [13366.546121] active_anon:81319 inactive_anon:20733 isolated_anon:0 > > active_file:69450 inactive_file:5624 isolated_file:0 > > unevictable:0 dirty:10 writeback:0 > > slab_reclaimable:69649 slab_unreclaimable:48930 > > mapped:27400 shmem:12868 pagetables:4929 > > sec_pagetables:0 bounce:0 > > kernel_misc_reclaimable:0 > > free:15870308 free_pcp:142935 free_cma:0 > > [13366.551886] Node 0 active_anon:224836kB inactive_anon:33528kB active= _file:175692kB inactive_file:13752kB unevictable:0kB isolated(anon):0kB iso= lated(file):0kB mapped:59248kB dirty:32kB writeback:0kB shmem:18252kB shmem= _thp: 0kB shmem_pmdmapped: 0kB anon_thp: 0kB writeback_tmp:0kB kernel_stack= :4616kB pagetables:10664kB sec_pagetables:0kB all_unreclaimable? no > > [13366.555184] Node 1 active_anon:100440kB inactive_anon:49404kB active= _file:102108kB inactive_file:8744kB unevictable:0kB isolated(anon):0kB isol= ated(file):0kB mapped:50352kB dirty:8kB writeback:0kB shmem:33220kB shmem_t= hp: 0kB shmem_pmdmapped: 0kB anon_thp: 0kB writeback_tmp:0kB kernel_stack:3= 896kB pagetables:9052kB sec_pagetables:0kB all_unreclaimable? no > > [13366.558262] Node 0 DMA free:15360kB boost:0kB min:304kB low:380kB hi= gh:456kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_f= ile:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:15992kB = managed:15360kB mlocked:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:= 0kB > > [13366.560821] lowmem_reserve[]: 0 2735 31873 31873 31873 > > [13366.561981] Node 0 DMA32 free:2790904kB boost:0kB min:56028kB low:70= 032kB high:84036kB reserved_highatomic:0KB active_anon:1936kB inactive_anon= :20kB active_file:396kB inactive_file:344kB unevictable:0kB writepending:0k= B present:3129200kB managed:2801520kB mlocked:0kB bounce:0kB free_pcp:5188k= B local_pcp:0kB free_cma:0kB > > [13366.565148] lowmem_reserve[]: 0 0 29137 29137 29137 > > [13366.566168] Node 0 Normal free:28533824kB boost:0kB min:596740kB low= :745924kB high:895108kB reserved_highatomic:28672KB active_anon:222900kB in= active_anon:33508kB active_file:175296kB inactive_file:13408kB unevictable:= 0kB writepending:32kB present:30408704kB managed:29837172kB mlocked:0kB bou= nce:0kB free_pcp:295724kB local_pcp:0kB free_cma:0kB > > [13366.569485] lowmem_reserve[]: 0 0 0 0 0 > > [13366.570416] Node 1 Normal free:32141144kB boost:0kB min:660504kB low= :825628kB high:990752kB reserved_highatomic:69632KB active_anon:100440kB in= active_anon:49404kB active_file:102108kB inactive_file:8744kB unevictable:0= kB writepending:8kB present:33554432kB managed:33025372kB mlocked:0kB bounc= e:0kB free_pcp:270880kB local_pcp:46860kB free_cma:0kB > > [13366.573403] lowmem_reserve[]: 0 0 0 0 0 > > [13366.574015] Node 0 DMA: 0*4kB 0*8kB 0*16kB 0*32kB 0*64kB 0*128kB 0*2= 56kB 0*512kB 1*1024kB (U) 1*2048kB (M) 3*4096kB (M) =3D 15360kB > > [13366.575474] Node 0 DMA32: 782*4kB (UME) 756*8kB (UME) 736*16kB (UME)= 745*32kB (UME) 694*64kB (UME) 653*128kB (UME) 595*256kB (UME) 552*512kB (U= ME) 454*1024kB (UME) 347*2048kB (UME) 246*4096kB (UME) =3D 2790904kB > > [13366.577442] Node 0 Normal: 33856*4kB (UMEH) 51815*8kB (UMEH) 42418*1= 6kB (UMEH) 36272*32kB (UMEH) 22195*64kB (UMEH) 10296*128kB (UMEH) 7238*256k= B (UMEH) 5638*512kB (UEH) 5337*1024kB (UMEH) 3506*2048kB (UMEH) 1470*4096kB= (UME) =3D 28533784kB > > [13366.580460] Node 1 Normal: 15776*4kB (UMEH) 37485*8kB (UMEH) 29509*1= 6kB (UMEH) 21420*32kB (UMEH) 14818*64kB (UMEH) 13051*128kB (UMEH) 9918*256k= B (UMEH) 7374*512kB (UMEH) 5397*1024kB (UMEH) 3887*2048kB (UMEH) 2002*4096k= B (UME) =3D 32141240kB > > [13366.583027] Node 0 hugepages_total=3D0 hugepages_free=3D0 hugepages_= surp=3D0 hugepages_size=3D1048576kB > > [13366.584380] Node 0 hugepages_total=3D0 hugepages_free=3D0 hugepages_= surp=3D0 hugepages_size=3D2048kB > > [13366.585702] Node 1 hugepages_total=3D0 hugepages_free=3D0 hugepages_= surp=3D0 hugepages_size=3D1048576kB > > [13366.587042] Node 1 hugepages_total=3D0 hugepages_free=3D0 hugepages_= surp=3D0 hugepages_size=3D2048kB > > [13366.588372] 87386 total pagecache pages > > [13366.589266] 0 pages in swap cache > > [13366.590327] Free swap =3D 0kB > > [13366.591227] Total swap =3D 0kB > > [13366.592142] 16777082 pages RAM > > [13366.593057] 0 pages HighMem/MovableOnly > > [13366.594037] 357226 pages reserved > > [13366.594979] 0 pages hwpoisoned > > > > This failure really confuse me as there're still lots of available > > pages. Finally I figured out it was caused by a fatal signal. When a > > process is allocating memory via vm_area_alloc_pages(), it will break > > directly even if it hasn't allocated the requested pages when it > > receives a fatal signal. In that case, we shouldn't show this warn_allo= c, > > as it is useless. We only need to show this warning when there're reall= y > > no enough pages. > > > > Signed-off-by: Yafang Shao > > --- > > mm/vmalloc.c | 7 ++++--- > > 1 file changed, 4 insertions(+), 3 deletions(-) > > > > diff --git a/mm/vmalloc.c b/mm/vmalloc.c > > index ef910bf..7cba712 100644 > > --- a/mm/vmalloc.c > > +++ b/mm/vmalloc.c > > @@ -3024,9 +3024,10 @@ static void *__vmalloc_area_node(struct vm_struc= t *area, gfp_t gfp_mask, > > * allocation request, free them via vfree() if any. > > */ > > if (area->nr_pages !=3D nr_small_pages) { > > - warn_alloc(gfp_mask, NULL, > > - "vmalloc error: size %lu, page order %u, failed t= o allocate pages", > > - area->nr_pages * PAGE_SIZE, page_order); > > + if (!fatal_signal_pending(current)) > > + warn_alloc(gfp_mask, NULL, > > + "vmalloc error: size %lu, page order %u, = failed to allocate pages", > > + area->nr_pages * PAGE_SIZE, page_order); > > goto fail; > > } > > > > This does align with vm_area_alloc_pages() breaking out of a loop due to = a > fatal signal and this would essentially be the other side of it, and this > is another means by which this can fail (+ thus otherwise provide an > inaccurate error mesage) so I think this is definitely needed, though I'd > like a comment like e.g.:- > > /* vm_area_alloc_pages() can also fail due to a fatal signal */ > Will add it in the next version. Thanks for your review. > Other than this nit:- > > Reviewed-by: Lorenzo Stoakes > > > -- > > 1.8.3.1 > > > > --=20 Regards Yafang