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 48BD6C76196 for ; Tue, 28 Mar 2023 11:55:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AEDA66B0072; Tue, 28 Mar 2023 07:55:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A9D866B0074; Tue, 28 Mar 2023 07:55:54 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 93CF96B0075; Tue, 28 Mar 2023 07:55:54 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 815AE6B0072 for ; Tue, 28 Mar 2023 07:55:54 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 4B682ABCCA for ; Tue, 28 Mar 2023 11:55:54 +0000 (UTC) X-FDA: 80618153028.28.A530241 Received: from mail-yb1-f172.google.com (mail-yb1-f172.google.com [209.85.219.172]) by imf25.hostedemail.com (Postfix) with ESMTP id 8D8CAA0009 for ; Tue, 28 Mar 2023 11:55:52 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=KcnVfpk4; spf=pass (imf25.hostedemail.com: domain of elver@google.com designates 209.85.219.172 as permitted sender) smtp.mailfrom=elver@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1680004552; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=0RDSxhLBnZBh5cghIRz0nx4zak4on0GX/pcez2mBW0M=; b=dei+A/jYOuchRu3Bz2t+1+Tu7FORdN9hJvo+EJWUUNnpjDEaswqRx7VDcypUSmeGq5duPI rbVvrGMLkYpTqIRSW93cg5z6MqknkqJpsHduvGQc7kn5eIHIxhS8FL+WGJiXbwFepJBd+R Vsb4uQYd3DGaiW1BGDERDiiLz/9druI= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=KcnVfpk4; spf=pass (imf25.hostedemail.com: domain of elver@google.com designates 209.85.219.172 as permitted sender) smtp.mailfrom=elver@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1680004552; a=rsa-sha256; cv=none; b=sfbfUK85vEQ60XVeRjBxRok2EKf2LDH4EoBJIqyauK6+v7Z+vLeOPRK7PB4Mho016AVWil /LMQtwvhZK/meYjSGERk12nJMYuhJTsiQ9d8v8PfgL6QOJ+zb9zRPXdm1cGZhdLFIIoMr7 L3Sc1iMMdTBbctsjGavNbKHOxsD2dVA= Received: by mail-yb1-f172.google.com with SMTP id j7so14661473ybg.4 for ; Tue, 28 Mar 2023 04:55:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; t=1680004551; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=0RDSxhLBnZBh5cghIRz0nx4zak4on0GX/pcez2mBW0M=; b=KcnVfpk4uE9LTauMzRtmeaGv6EDTWomuW68Wt1R9t7TDQjJJyonzJoEHnhyZSbPwAZ mSsz4GpBx20cdYqKrs5WoZn2ZtLvtc9M0CnlgIcvoVcxz9q1cRMZGucn4B8bjjaGpCl1 E6ixYfQfPrXX2FT8YKrvzE5TwSEuNoXNU0zSkE4cAKu2yJfGFhzGc7bYFgmJ93wYEyjv BdoeXns3puLazFBRiLe24+o7SJpThwWkXoRihACe4JdId9OBVRwThIoeyr4K2UUEQgjT TxaEvLyFChd3GKxyB75W4x36OcPpTTkW3OwE2wiAm0GCgpbeKh/i5jOXdIoug4F3iSlK LULw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680004551; h=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=0RDSxhLBnZBh5cghIRz0nx4zak4on0GX/pcez2mBW0M=; b=e89W/FlS1OpGi514wuhtcEircOzv/EY0StfXIRZaVof4iw9mbWpu6cS0k0tLhudp9w +fTlrPfb50vIJAxzfRsf/aZSdVpuq/RSewrNWgZv6WyA43r5PZp5wbP2Afc3pbJwNVCF 5LqUHwa8+ujMf/L7mzS/L5p+1MBtvIravLanpzNn+yukFb/ffJjG07DR+yQYS0czIe1C 27YAnDqoPrvnHRWZCDFOjRj0XwIV+dETwNwMUEqrDHR0sEcv44gNiGOFZoGG7zDTr1DA sZC/E0cEbCLcC5D0lVfV1x8/Ua4WPB0OdKyZGMX98VCem4em8pBJBobWnta6/WrZ78Xv IxqQ== X-Gm-Message-State: AAQBX9c87CcQs263LJ9R8o7Uc+pRxL+pxJFaEe2dJR6L6p7wobMvoNbM gj0uB85BT7RqpJok2nzEbfiUZX2XzySHDhxFqq43NA== X-Google-Smtp-Source: AKy350bpMF0iG9vvFnl6UfhgS9CZaqsCywXajuAsuWTFvpxABXm0eM8yTmha9tF1+A5JipBch1pj3eVw5kpyS6QjboI= X-Received: by 2002:a25:add7:0:b0:871:fad3:b2ab with SMTP id d23-20020a25add7000000b00871fad3b2abmr13285046ybe.65.1680004551546; Tue, 28 Mar 2023 04:55:51 -0700 (PDT) MIME-Version: 1.0 References: <20230328095807.7014-1-songmuchun@bytedance.com> <20230328095807.7014-2-songmuchun@bytedance.com> In-Reply-To: <20230328095807.7014-2-songmuchun@bytedance.com> From: Marco Elver Date: Tue, 28 Mar 2023 13:55:14 +0200 Message-ID: Subject: Re: [PATCH 1/6] mm: kfence: simplify kfence pool initialization To: Muchun Song Cc: glider@google.com, dvyukov@google.com, akpm@linux-foundation.org, jannh@google.com, sjpark@amazon.de, muchun.song@linux.dev, kasan-dev@googlegroups.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 8D8CAA0009 X-Stat-Signature: gebu5x7fopnx5wqbdojbzzfxnfm69n78 X-Rspam-User: X-HE-Tag: 1680004552-743560 X-HE-Meta: U2FsdGVkX18n1oc/x1zWsoPKsU5bZq4aHdY0FKUGipli5RljRzK6ZiVynfVRXxwczp7h4iXczNNItH8GsBn7LonbdOQ9cDzlBiZ0BR+nistrgtE3LIgjMScspGyR/ktAABkeJVK/uqcEjPN+BB6m/0YGnjjBpTdvqEsGxYvmPkLFbhMXfmJyeB95NoRwycyjZfHAbsgCGjycKaS96jfV7t7MUtZDxkdRJVDU2J3LaqqI8r7f9i3ujrVGXG5kwWM9tqCpBRR21GW3B+uikpo60rTbLRmxcWXwLLZHpmrDjsJTsIH3HX3AmcZ2C1JIOwIob2LHW4wNnofxlpCHwJR+pnXUKuXJXeKwnn20t0XO9OoywYAJD21Rsi5Io0Zh6ChmGg9pAI7FMlmhOK8NM30hQvpOSbRUAcpPefH1RV+mNo7IijzXvm1m7tGz9QNLi9RhVQeATaFmZocpKgxx6Q+fLIgqvovzdI69THashLGAWMVjGDj3espnAXxwsoM4+0vAKR5djqiNeqW58HyWLTTjumnsx1c9PS6lOygkwF9IJYnXNEqe1QA8zOsnwwJBRFrgDA58m9gn1mB7V9V16Sn2xDVdKVT1D+9gTAlZvlJKhCNGXpTRGBWic3PjlSLjZByJvzW+PL2WwJoO9Cp/udF9r09jDr01w8+E142zbiCfSJtZ/I5+AxxsfU6EEBlT3TE4H47ssvoH9NbLU8BM2aOkArtzaUUcIKGJ45zUjLt51rfqCyKmM/0v82f/wOVpM3SpVopTM+TJz4AgDP8q/h9NbQNVMt/H5K8wTeVqX6jcru5IKaQfX+9YiuYI6jtuiaZo0ibjW/DxetE494+JP+SD01WWO7SyYgOg/4BHOj1nM1p/fMznT0h3lN10djBV4wJ3A1UOgBqbsmv0gR4cBEXbHR7xUiS428hKAoPqu4tiMNzHFvkpF3cd2yWQTUdIqLQIrVbIFjQf9iXu/AcLGYd Jk4Ar9QJ jhv4/YDjm15428x1MSt++qjso5Siw/DDEKGEMKw5mYMx1BD3FKRoEB2EQ2+sDMOedxNCXlbrpkBn3OybXq12AAB4m+bieQppGhoP5RFiyjcxNvPkOO2c5U1Xe7Y2MAanuUpFr93lc1KA0ngwEr5uXmHWabto0INmCLLxPkPn3umyFUicHzVR+R/xNr0O8vBUlJ35dSj5pUn8P3c94bdK1WUmjsf84rsbsSQn4/vC45mME25FuQhPA+sk+RnalhowsV2JpJEKWRcQf3n+u3aofSgh3GS9MPOXgw+7aLOBU7+2s7twtJrVI6DCRjVv6oo/7M2kKo2usl7b2Q5A= 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: On Tue, 28 Mar 2023 at 11:58, Muchun Song wrote: > > There are three similar loops to initialize kfence pool, we could merge > all of them into one loop to simplify the code and make code more > efficient. > > Signed-off-by: Muchun Song Reviewed-by: Marco Elver > --- > mm/kfence/core.c | 47 ++++++----------------------------------------- > 1 file changed, 6 insertions(+), 41 deletions(-) > > diff --git a/mm/kfence/core.c b/mm/kfence/core.c > index 7d01a2c76e80..de62a84d4830 100644 > --- a/mm/kfence/core.c > +++ b/mm/kfence/core.c > @@ -539,35 +539,10 @@ static void rcu_guarded_free(struct rcu_head *h) > static unsigned long kfence_init_pool(void) > { > unsigned long addr = (unsigned long)__kfence_pool; > - struct page *pages; > int i; > > if (!arch_kfence_init_pool()) > return addr; > - > - pages = virt_to_page(__kfence_pool); > - > - /* > - * Set up object pages: they must have PG_slab set, to avoid freeing > - * these as real pages. > - * > - * We also want to avoid inserting kfence_free() in the kfree() > - * fast-path in SLUB, and therefore need to ensure kfree() correctly > - * enters __slab_free() slow-path. > - */ > - for (i = 0; i < KFENCE_POOL_SIZE / PAGE_SIZE; i++) { > - struct slab *slab = page_slab(nth_page(pages, i)); > - > - if (!i || (i % 2)) > - continue; > - > - __folio_set_slab(slab_folio(slab)); > -#ifdef CONFIG_MEMCG > - slab->memcg_data = (unsigned long)&kfence_metadata[i / 2 - 1].objcg | > - MEMCG_DATA_OBJCGS; > -#endif > - } > - > /* > * Protect the first 2 pages. The first page is mostly unnecessary, and > * merely serves as an extended guard page. However, adding one > @@ -581,8 +556,9 @@ static unsigned long kfence_init_pool(void) > addr += PAGE_SIZE; > } > > - for (i = 0; i < CONFIG_KFENCE_NUM_OBJECTS; i++) { > + for (i = 0; i < CONFIG_KFENCE_NUM_OBJECTS; i++, addr += 2 * PAGE_SIZE) { > struct kfence_metadata *meta = &kfence_metadata[i]; > + struct slab *slab = page_slab(virt_to_page(addr)); > > /* Initialize metadata. */ > INIT_LIST_HEAD(&meta->list); > @@ -593,26 +569,15 @@ static unsigned long kfence_init_pool(void) > > /* Protect the right redzone. */ > if (unlikely(!kfence_protect(addr + PAGE_SIZE))) > - 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(nth_page(pages, i)); > + return addr; > > - if (!i || (i % 2)) > - continue; > + __folio_set_slab(slab_folio(slab)); > #ifdef CONFIG_MEMCG > - slab->memcg_data = 0; > + slab->memcg_data = (unsigned long)&meta->objcg | MEMCG_DATA_OBJCGS; > #endif > - __folio_clear_slab(slab_folio(slab)); > } > > - return addr; > + return 0; > } > > static bool __init kfence_init_pool_early(void) > -- > 2.11.0 >