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 D3B59C7EE26 for ; Mon, 22 May 2023 08:03:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 303EF6B0075; Mon, 22 May 2023 04:03:33 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 28C94900003; Mon, 22 May 2023 04:03:33 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 12EDC900002; Mon, 22 May 2023 04:03:33 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 003136B0075 for ; Mon, 22 May 2023 04:03:32 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id A5D4B1A0CC1 for ; Mon, 22 May 2023 08:03:32 +0000 (UTC) X-FDA: 80817151464.24.8C9D76D Received: from mail-ua1-f52.google.com (mail-ua1-f52.google.com [209.85.222.52]) by imf12.hostedemail.com (Postfix) with ESMTP id C7BEE40008 for ; Mon, 22 May 2023 08:03:30 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=QK9rPLNa; spf=pass (imf12.hostedemail.com: domain of 42.hyeyoo@gmail.com designates 209.85.222.52 as permitted sender) smtp.mailfrom=42.hyeyoo@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=1684742610; 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=5/deT6NIs/fCmfBK6TadeTF6djYRsWDmBLQzhkm7Whg=; b=XjLPWllp+SsGwG4+juEW+Az9jMdm58M8xBeDQ8pI/o6LLBO8kCCwK7xRa7/+AZa2c7x/bl kxlW/bthUqdtxOQg1hHGjDpYylXjJ5CEyC/WhfJaN/c9fvjcq6+KugtQKUKtMbLUaP9WoM vnJx26NoaI/0iKTb9tD6q2MR6FvLtXk= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=QK9rPLNa; spf=pass (imf12.hostedemail.com: domain of 42.hyeyoo@gmail.com designates 209.85.222.52 as permitted sender) smtp.mailfrom=42.hyeyoo@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684742610; a=rsa-sha256; cv=none; b=5AfnXxklwyZTHv0R+MEgmxppmrvKefbPKjaInMOO5SPcL/LnHB8qp53iU/kcNJoUfrsEQX vD81cuj87PJUuIE1P7mDmL6rfSKdS+bs947Mc+fXD/7af8TXIa27YSFmOJdvVZEUp6dtxl 52NEFHnY2yYi/JpG7FMaWk/L9tIBltU= Received: by mail-ua1-f52.google.com with SMTP id a1e0cc1a2514c-783eef15004so1831099241.3 for ; Mon, 22 May 2023 01:03:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1684742610; x=1687334610; 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=5/deT6NIs/fCmfBK6TadeTF6djYRsWDmBLQzhkm7Whg=; b=QK9rPLNa5YQIm4BrTN9G+Gp8sOyYcF3EKdXnKr8/9/PSYQ1vi0/0Uj4L/BmJbTc2we qJs3SIOqu758OmnrJ2FEhJ4p1EVRlm2S9uxj/13VWFOw7RzBrlGoMWDWap2oBM20esBP hZZywbt/uGTOo36/73mWU5yQCHlThzL7ebf0DmvA3dlBHdoqp9q1tO0k5T9U4/GH14R1 i5xQkpFtI0s54mLkHCRIpQnKsT8DxWJyP2Krgo6lhJtdRNcxYH1LgFDgr79CVKxVx1eH jGYeIUAxIqXGi33JfzyBKulQ3Neom1TyrxEnKs0zyUdhp/vLUDXpNIrRPmBEicdh2VP7 syrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684742610; x=1687334610; 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=5/deT6NIs/fCmfBK6TadeTF6djYRsWDmBLQzhkm7Whg=; b=QxDP0rLztC9nkWEteV+M2aI7jyX0d/NKv4PN7KtN16DijCzgHSjv1qIlh8f0c3fAxR n7jIG1WWcSLseEK5NRr27HRJtJF1ICCJmVJebQdmT6JRJjpBktMGhvva1tUruxZlIGVa Bpf9y+K7WfDdWvSufBlqmSfCkg120rVHPrwO9mlmaSQEkvlWjn3YCjMEAJxqG6wH2Shb OHGe0ZE7pSp1I/lXCCJ5UVuFj4dG9NKqn6tcc4u+R/7YqYJKRJuy36oxNx5D3IsX47v3 /DwfCnnzDlSdBFS1UfvN4CWufSQyAm2VCeEuk6ph2OCSiRCan7nri+WtrXKVJM4zwNy7 AD2g== X-Gm-Message-State: AC+VfDzPDTiB2Hjwn9uu/iiT+T41aADF3Ku+cUDXrqC9wUZUthViIC7o rSv31308hypkISVI5ABKFVZuEjJjNOSe3dS6pUU= X-Google-Smtp-Source: ACHHUZ5RIyVZS4Zu5Pamc3MV66jkvYcnWuWIb5VA1JscKU7+8/Afy7hzNiltpdL4e7QJgffQP8PpI2kr86z8ouEF1ps= X-Received: by 2002:a67:fe17:0:b0:439:e3f:9d6 with SMTP id l23-20020a67fe17000000b004390e3f09d6mr2336475vsr.17.1684742609589; Mon, 22 May 2023 01:03:29 -0700 (PDT) MIME-Version: 1.0 References: <20230508075507.1720950-1-gongruiqi1@huawei.com> <5f5a858a-7017-5424-0fa0-db3b79e5d95e@huawei.com> <19707cc6-fa5e-9835-f709-bc8568e4c9cd@huawei.com> In-Reply-To: <19707cc6-fa5e-9835-f709-bc8568e4c9cd@huawei.com> From: Hyeonggon Yoo <42.hyeyoo@gmail.com> Date: Mon, 22 May 2023 17:03:37 +0900 Message-ID: Subject: Re: [PATCH RFC v2] Randomized slab caches for kmalloc() To: Gong Ruiqi Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, Alexander Lobakin , kasan-dev@googlegroups.com, Wang Weiyang , Xiu Jianfeng , Vlastimil Babka , Christoph Lameter , David Rientjes , Roman Gushchin , Joonsoo Kim , Andrew Morton , Pekka Enberg , Kees Cook , Paul Moore , James Morris , "Serge E. Hallyn" , "Gustavo A. R. Silva" , "GONG, Ruiqi" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: C7BEE40008 X-Rspam-User: X-Stat-Signature: mic36w6b5qjr5j9djgoazrxqgijkgcoa X-Rspamd-Server: rspam01 X-HE-Tag: 1684742610-911929 X-HE-Meta: U2FsdGVkX1/USsFnap12HCPGrf1iMKnQKhpRjN/qg4VJI4EbIjxTssPJLzzuQ3WPaRO0kzlM336HyvYQNg9bF+XgIq1KTVRjiYMixUjF1rO7Asc8+JsgfSC3QMWwp4v1RZ9S2rddi3VwuhtXZt2XkUPvuj/ckX22g/bTNpLGIoqnVzJ5KmXs2Zvvb8rQtRH07nty+G2ZrOojAEL4Di2NI3OyTh4N94WhgIRbHOM8srlu19WANZHu7r7GxLxSdoabYQmHBiefys+kc0ZLUZEsqIiAd3aYaKfEUt8kBWdbCrlbNjZhSq6wlg5xSlzaisWPLjwCC7fCyQ8eZqRbXREAef2iF8+HGP6sUOiUieH1JjrmEHl0xNqhcAFE3gdOCaDbX38L7kyAXCIKF2dX9TH2jwjwJlmf7lW0hXDPAJi0gcvolO04hHbdZ3mj/SP+Kxk9q6KSbT6G1KXMOoObCRGXKf9RNKyVyJgewhc5eDJ7FAHDgrS+HVcx7w0gdo4hqR75QQjelLHRUKvhSVH8lK8Oi52Y/lfpmpUOSHs7YU4gZtM4KteXdOUzZ4SL9mHuO7+0UZGlAbqoA+JCh4/6GuO79m18C3HGX9HCd4hATCe/5z7YEzFBlylJB05Dm6AWrFTHakqVmBlVBCTHSi+qHpu4QEQJg61yc12QTYfIiSeICCS3nyMvej6O45XoyDqNxvAhJ4utDCm48p5LO4uoXEfHmL7mwLBKSC1JR2oBuliTUm0+/iES1Q2J2g/g4Eirw/Md0Kx9S56n6W/3sgE9cKfPRStuVWTfOEQi/jb+6KuzK3UDEGhmg1A8WaTYfH7VjGCK+OY4v1SAN/qZnLmBu2ct6pE54lyUSGEQSTIWdM8BjU3jOG/Im5zEUE3N7iEhuwJFGCVs97Q0W9hpPYQgM4pKO5TDNQS0PtbaHdMv5qC7xqGuTXWRxjjljfTEuX+4EWqL+euBdWJtVc0mQNEPSTj fpMtc4Tq 9+/6+3sXb8vbRREF3ofci/w+2Gic5lHCaT7KQi9IArHVdxPlQvbmCsyWHz5PnpwQy0ko7bSuqecypLQs77t/khyBXrcY8iEa4cbQAanifzR5KtB/Gcw+POaF1Yy1zPMUtPdNfBj6XzW01hcScdaDmHOTZ8Ve9H6yr24s50g1ewml3HlPP9TCeJdUrykO7hvH4swD1OPUSHNq7NFOzSQ6yVE8uhy9kuKeqC4V2mRk3cNURYMnezTnGfETPhgiXLHsT8L3/nNqEfpExDhvIORYjyKcLcOUu2MGKyIz5C1qphzai1oAM9cv2QxeWxHD5LMol1ZrKLLtn4txvmi6ZloUCRRvZ8tQIAuURFEXbZqiD/bJx0yrHKt4k1FsjRVm9WH3deXXguTSSpiiWw6zefjb31JWDSw== 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 Mon, May 22, 2023 at 4:35=E2=80=AFPM Gong Ruiqi = wrote: > On 2023/05/17 6:35, Hyeonggon Yoo wrote: [...] > >>>> +#ifdef CONFIG_RANDOM_KMALLOC_CACHES > >>>> +# define SLAB_RANDOMSLAB ((slab_flags_t __force)0x01000000U) > >>>> +#else > >>>> +# define SLAB_RANDOMSLAB 0 > >>>> +#endif > > > > There is already the SLAB_KMALLOC flag that indicates if a cache is a > > kmalloc cache. I think that would be enough for preventing merging > > kmalloc caches? > > After digging into the code of slab merging (e.g. slab_unmergeable(), > find_mergeable(), SLAB_NEVER_MERGE, SLAB_MERGE_SAME etc), I haven't > found an existing mechanism that prevents normal kmalloc caches with > SLAB_KMALLOC from being merged with other slab caches. Maybe I missed > something? > > While SLAB_RANDOMSLAB, unlike SLAB_KMALLOC, is added into > SLAB_NEVER_MERGE, which explicitly indicates the no-merge policy. I mean, why not make slab_unmergable()/find_mergeable() not to merge kmallo= c caches when CONFIG_RANDOM_KMALLOC_CACHES is enabled, instead of a new flag? Something like this: diff --git a/mm/slab_common.c b/mm/slab_common.c index 607249785c07..13ac08e3e6a0 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -140,6 +140,9 @@ int slab_unmergeable(struct kmem_cache *s) if (slab_nomerge || (s->flags & SLAB_NEVER_MERGE)) return 1; + if (IS_ENALBED(CONFIG_RANDOM_KMALLOC_CACHES) && (flags & SLAB_KMALLOC)) + return 1; + if (s->ctor) return 1; @@ -176,6 +179,9 @@ struct kmem_cache *find_mergeable(unsigned int size, unsigned int align, if (flags & SLAB_NEVER_MERGE) return NULL; + if (IS_ENALBED(CONFIG_RANDOM_KMALLOC_CACHES) && (flags & SLAB_KMALLOC)) + return NULL; + list_for_each_entry_reverse(s, &slab_caches, list) { if (slab_unmergeable(s)) continue;