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 14165C6FD1D for ; Tue, 21 Mar 2023 04:14:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1BA6E6B0075; Tue, 21 Mar 2023 00:14:19 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 16B676B0078; Tue, 21 Mar 2023 00:14:19 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 032106B007B; Tue, 21 Mar 2023 00:14:18 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id E48C36B0075 for ; Tue, 21 Mar 2023 00:14:18 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id AAA0F410E9 for ; Tue, 21 Mar 2023 04:14:18 +0000 (UTC) X-FDA: 80591588196.17.F5FEABC Received: from mail-pg1-f180.google.com (mail-pg1-f180.google.com [209.85.215.180]) by imf29.hostedemail.com (Postfix) with ESMTP id DDD82120013 for ; Tue, 21 Mar 2023 04:14:15 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=Vz4Mi71I; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf29.hostedemail.com: domain of zhangpeng.00@bytedance.com designates 209.85.215.180 as permitted sender) smtp.mailfrom=zhangpeng.00@bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1679372056; 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=9ghHN1vnHe3Q9LXpob6M+hS+NoZYTu49dwl+0ycHuL0=; b=bp4VBEWnYuewxjm5Lq9XfQwrEUOcdjY8cHQB8v8C7ulmNBOtV9gXTGE4MdfHN71+l+I2E/ lVRCgzytd4LPQkftGgzicwpLhGiyFvlejnTm2k34YKKG7BPFA9uCRoaXM5MJYMd4/VW/Hu 4nJ9kq2qYwLb3BdeSefEjYCAiDif+i0= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=Vz4Mi71I; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf29.hostedemail.com: domain of zhangpeng.00@bytedance.com designates 209.85.215.180 as permitted sender) smtp.mailfrom=zhangpeng.00@bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1679372056; a=rsa-sha256; cv=none; b=30ifIHSlN6T4/ob9Nzurjbs0wbY6hmLcX5tva+W8BgMACWNLxdJkjYep9sE3TYEkwPGyNv L72sNoVt4aqpozJiC+63fE9CmQeqgH2ElqISlm0vaRvwoYyVtk/LnS9RNxsoiaYrvbNOW4 b9upvj1oPXb5StlLHdUrgGaau+yRkqQ= Received: by mail-pg1-f180.google.com with SMTP id z18so7849565pgj.13 for ; Mon, 20 Mar 2023 21:14:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1679372054; h=content-transfer-encoding:in-reply-to:from:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=9ghHN1vnHe3Q9LXpob6M+hS+NoZYTu49dwl+0ycHuL0=; b=Vz4Mi71IS1jUt5Zhvv0Dc+xaMYo4P8xGzFl5kfyrCt/eRYimjDTOhrzD3cQ1x1o9Hn 6/cxXFCC5/XM1C8y1pWrmXI+0M5YjPPu1vfRTTmULDr2GJBKn6Mr6J6GflYMBytxXmeA EHafLzYTjnYNVd9N1oC+8bZyfOnxgNR8uwK+FGiy6PXCdRJccnSRUgNq8w7Z+9pO8bQQ QEnZfJuygmjMu1TEPXOAiGDv3wBBpQWVpwFGIj+NcExyWaJ1I2We+Id88spZX1fSO6OO OLogew8Q1HKsg+Pp4rlLbmyhzw4DvruJzwNtHQkjUfojvyiUqZOJfJIf8GH9M6Ibp3/y 3Q7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679372054; h=content-transfer-encoding:in-reply-to:from:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=9ghHN1vnHe3Q9LXpob6M+hS+NoZYTu49dwl+0ycHuL0=; b=7odpSCmjE9v1SpNpSZ5WJWFHMOn1C6xKMQ50lhFh2wGMM+AFt532OU0mNJl9Kwhbk3 NTOgmCdzsHWszahhZkx2ZzncE38Kr71TChycvrV1g0CWumiBBk1ysrPccnywsbD8oEBZ T518XuFFg60mTf6ChVO/vdCXmOY6slsEwXt66AMOoMMrD1kK1boh8n4pNd5xt9KTklvc 8RofIMfGd3gphpLU0FObhlODa8Q8oW0hPfLG5o0TCvp5ljB7l+RoeNpSlhi1hKORRx6z Q2G6YBRmn75jKMhIdpDI9i7fYmbv3goF23/XdOAaE29EppiRUZQljoX7eOH5PqV5MeHw HLDg== X-Gm-Message-State: AO0yUKXQYkgIlVE9d/k5avYQi99vmEypED+/v4UIkWx70WvlAtTyNVE+ sfa2BY4kX1ZfcJBq2YLO+SHN6A== X-Google-Smtp-Source: AK7set+88TsZpxLEl3e1Iab18TCKxNejBApLddSLDzEAgh6qy+6yS20Ox7GwvSIeuZJ/GDQ5OLnbtA== X-Received: by 2002:a62:6304:0:b0:627:a283:5a04 with SMTP id x4-20020a626304000000b00627a2835a04mr823381pfb.27.1679372054389; Mon, 20 Mar 2023 21:14:14 -0700 (PDT) Received: from ?IPV6:fdbd:ff1:ce00:1c2a:1cd4:8b91:108f:bf15? ([2404:9dc0:cd01::1a]) by smtp.gmail.com with ESMTPSA id 23-20020aa79117000000b005a8173829d5sm5135483pfh.66.2023.03.20.21.14.10 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 20 Mar 2023 21:14:14 -0700 (PDT) Message-ID: <974ef73e-ab4f-7b24-d070-c981654e8c22@bytedance.com> Date: Tue, 21 Mar 2023 12:14:08 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [PATCH] mm: kfence: fix PG_slab and memcg_data clearing To: Muchun Song , glider@google.com, elver@google.com, dvyukov@google.com, akpm@linux-foundation.org, sjpark@amazon.de, jannh@google.com, muchun.song@linux.dev, roman.gushchin@linux.dev Cc: kasan-dev@googlegroups.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org References: <20230320030059.20189-1-songmuchun@bytedance.com> From: Peng Zhang In-Reply-To: <20230320030059.20189-1-songmuchun@bytedance.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: DDD82120013 X-Rspamd-Server: rspam09 X-Rspam-User: X-Stat-Signature: pfkfk9d33q5ji9pfgwst3rzkua1unwqi X-HE-Tag: 1679372055-266779 X-HE-Meta: U2FsdGVkX1/dvS3quSrxZZubwnxzxzAhgbdp1GhW2nhbJIsA1LsP0FZ+az0P17Fk7c3OmXO8KIqzNBinYTTjZZdV47Dq0zhTOVQWndK06fYsUa0awNXZlri10lP2aLt79BFm/NOzPRG3xoi/ATDz9b3aJkEAgd0PcaceVPgw0ZzuBBe9qPAf53RKBfb5jZP09a9uvuDlSLpVGxYlLNRUrGuYGNnKxaJvEHezRs/m+YdLIOUu1MhqnKNlGSxRfOGrK33HynKTIBcNBuRk2xa/JXjbUjJcKXTco0ifYR8GEj0tVfW9a+Au40wRbXxZDZenXQfVlW6htqmOWofHYgWhNbXqcmGJ3v+UaKFSv4PfgER7RvIngS2TRLjUJzri3euIVmFzJpuFd9tyCDI8pQ8FFlmA/WeQqYWfGVfoT7wpblw8HlDuy+Qwu81XOqzRimSbr9gLkkhL+E7BTnoOpxoViVpX5z6ntT72wL9JkG7MuXPAtCxbH8q8UtVUVSZP78cpDc0bff2tUt94dKWR9JYb6TCYc/hOGUC/JRPzKauZknK/nt5nKPS7kb7YqtyEofIX7z7So/1JW56QEnrWCRwIGHG+Lz+M+/4IpPfxSrCn7WITUukiuX9CZvJauD7hAnWRBvzbkTD1ELEoBpy3W3N2VlVPyDdgfdGeCMXNeBUwA0NzmESRooJQSkvdPItCeSvVnDh6G4PaBcZ2hCa3mkTvEo+DSlKdl2qXc0FuJpk7D1jDKNw9wpoz7PnzK/NiuT/9PF89HVN3VtNTpCBQguKtDR4XVobFMPQECpqbY9RZaIusvlCAhOLxX1LLfubE2/clPK1geBpIw4+5a2LTRYe89ilnTYCqWS/nk9d2NG2hCUAXNBFQrKWtrcVvdE3Bl5z8Gm+ght42lk9RE7kcYhE2Lzhck0YNr2c1ptrDuv1B1kozFYuEcOsqvVZqMkhFDhiD3xVsECbXakosFIE743i n+j+2Wf2 /ZPGqwyqz2TD3xHPEFyuNTpGPQI3IAPjdfsN/OKGWQdjiu48yPyNBN8JGFbd7EPRaHVWvzz8ULkqkTVHJ7iCEK7r/7I3KyF+wgoiimoOWX8OdePPB61rK0yMqdLuJMWvZED776VqCNb5O5+srnnI4vfOfXXp5hC/O17/wRdM1R/9cO2PptO7zpoL5bNDH79o8Ivn4EkJl/SCTIOrD6b6bSpX0LelfS6+26muge6T3SnC8nmOfGFRyynsLYJOEDD36dbVX0XtCWVKDw9ykot56FhAZF4/pg1hJqB6/VN+WgZQLj2xqgfqp51QqwvnLBQ0mk/GtOuEYcHKDE1S5gl7s877KVrhn/f/ZQgEfHw9MWDVJg62cD/l8V/RlUr9tyfPK9qgMRD/BQl7izmsGMa07w8R+7CZgvMjS3EyEbOc8GU630yVUYHLrfIgvXKriXM/wylvZslexUtVu8eilgF4XQ6NfJwWAQnEzYejIt9urfBFmyRpMQvHvMh3+agDwoAd3h4AIPQniXldqVGlCVIiiD3mBKvUEwgrveG+J X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: 在 2023/3/20 11:00, Muchun Song 写道: > It does not reset PG_slab and memcg_data when KFENCE fails to initialize > kfence pool at runtime. It is reporting a "Bad page state" message when > kfence pool is freed to buddy. The checking of whether it is a compound > head page seems unnecessary sicne we already guarantee this when allocating > kfence pool, removing the check to simplify the code. > > Fixes: 0ce20dd84089 ("mm: add Kernel Electric-Fence infrastructure") > Fixes: 8f0b36497303 ("mm: kfence: fix objcgs vector allocation") > Signed-off-by: Muchun Song > --- > mm/kfence/core.c | 30 +++++++++++++++--------------- > 1 file changed, 15 insertions(+), 15 deletions(-) > > diff --git a/mm/kfence/core.c b/mm/kfence/core.c > index 79c94ee55f97..d66092dd187c 100644 > --- a/mm/kfence/core.c > +++ b/mm/kfence/core.c > @@ -561,10 +561,6 @@ static unsigned long kfence_init_pool(void) > if (!i || (i % 2)) > continue; > > - /* Verify we do not have a compound head page. */ > - if (WARN_ON(compound_head(&pages[i]) != &pages[i])) > - return addr; > - > __folio_set_slab(slab_folio(slab)); > #ifdef CONFIG_MEMCG > slab->memcg_data = (unsigned long)&kfence_metadata[i / 2 - 1].objcg | > @@ -597,12 +593,26 @@ static unsigned long kfence_init_pool(void) > > /* Protect the right redzone. */ > if (unlikely(!kfence_protect(addr + PAGE_SIZE))) > - return addr; > + goto reset_slab; > > addr += 2 * PAGE_SIZE; > } > > return 0; > + > +reset_slab: > + for (i = 0; i < KFENCE_POOL_SIZE / PAGE_SIZE; i++) { > + struct slab *slab = page_slab(&pages[i]); > + > + if (!i || (i % 2)) > + continue; > +#ifdef CONFIG_MEMCG > + slab->memcg_data = 0; > +#endif > + __folio_clear_slab(slab_folio(slab)); > + } Can this loop be simplified to this? for (i = 2; i < KFENCE_POOL_SIZE / PAGE_SIZE; i+=2) { struct slab *slab = page_slab(&pages[i]); #ifdef CONFIG_MEMCG slab->memcg_data = 0; #endif __folio_clear_slab(slab_folio(slab)); } > + > + return addr; > } > > static bool __init kfence_init_pool_early(void) > @@ -632,16 +642,6 @@ static bool __init kfence_init_pool_early(void) > * fails for the first page, and therefore expect addr==__kfence_pool in > * most failure cases. > */ > - for (char *p = (char *)addr; p < __kfence_pool + KFENCE_POOL_SIZE; p += PAGE_SIZE) { > - struct slab *slab = virt_to_slab(p); > - > - if (!slab) > - continue; > -#ifdef CONFIG_MEMCG > - slab->memcg_data = 0; > -#endif > - __folio_clear_slab(slab_folio(slab)); > - } > memblock_free_late(__pa(addr), KFENCE_POOL_SIZE - (addr - (unsigned long)__kfence_pool)); > __kfence_pool = NULL; > return false;