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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4AB79C433F5 for ; Wed, 17 Nov 2021 07:01:13 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id C088061BE6 for ; Wed, 17 Nov 2021 07:01:12 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org C088061BE6 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvack.org Received: by kanga.kvack.org (Postfix) id 17F386B0072; Wed, 17 Nov 2021 02:01:02 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 131506B0073; Wed, 17 Nov 2021 02:01:02 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F38CA6B0074; Wed, 17 Nov 2021 02:01:01 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0186.hostedemail.com [216.40.44.186]) by kanga.kvack.org (Postfix) with ESMTP id E49D56B0072 for ; Wed, 17 Nov 2021 02:01:01 -0500 (EST) Received: from smtpin07.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id D08C2183C8A8A for ; Wed, 17 Nov 2021 07:00:50 +0000 (UTC) X-FDA: 78817524660.07.228A657 Received: from mail-ot1-f53.google.com (mail-ot1-f53.google.com [209.85.210.53]) by imf02.hostedemail.com (Postfix) with ESMTP id E6CB17001719 for ; Wed, 17 Nov 2021 07:00:49 +0000 (UTC) Received: by mail-ot1-f53.google.com with SMTP id w6-20020a9d77c6000000b0055e804fa524so3048471otl.3 for ; Tue, 16 Nov 2021 23:00:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=lEisxbhjrG/o/qS2p+yaqlf5bGUGf6XJ32LJqE9ByoA=; b=cFw719NBx2qhI+mm4NVs8+n5v4u8PD3l3q7wrIQ0C+cY/JBfCWvPeUlZhHZKOzmdUA vY58jHroXOWh/Ecuux3Mv7IKSC+eyA2M+prvy6X3xdgJUu3WobqmtnXerNd50r6vHnb7 TdsmGHm6REjCK1nu5r38kW6m2b2Rw0ke624nuEuq1CxNO6kPIqRjhS7CvVsK/i7yFqQH eYPTC+686XdxlHI4gU0jPqPwajnRiDl1xvyr0HG7PeM/gbPmKGYzXwMVKOndDN9fFbaS ATZTyqrGjh/c9NeHJJU8ead/GazwiPRBR5WcUhH2LeHXN2T8vXda+B8e7Evqh0Z7TI3p 6EPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=lEisxbhjrG/o/qS2p+yaqlf5bGUGf6XJ32LJqE9ByoA=; b=jWrcXrqSDfm/17O6Is7PYAH3ky/soc1PfuDYCDajVI2ieuYRn973cl8+OrSLOFb+VO qqw6eX8lkvY+9vsLOlwlm4xWb2vnLSyF/Ha6dLK3NZBOMLFVYimDJW+AWXMbfka5NemU uLJK+ck27h875DJOIvwVe7DpIMxahEKWlSTe5KEc0hZcOyjspyUsfDNjCy+WYQpgYjws SbrRQLuFOHWb173PdmJEZP+hTWh3cpIZMbnF9K64kgtaIms22+ehZjhP1gyRI6I9XG3G l/q07d8kx2VYo6MDBfm8g9DTjR27ILykOqRAvDws11gDubBPC82BByoilzR9sOnnCVjv 3a2Q== X-Gm-Message-State: AOAM531ovs5jCKQ/Deo3Iij6b0YFst/f+ZXmsVGd7+w1ZPkbOPh4KpK7 fRm2pfmy4d5G5mVkj28lm2AOb5HfWoOIVsO4OegUSw== X-Google-Smtp-Source: ABdhPJzqGboiYZ3ca2y848nVG5gRTz5uA+nwpgGC8lP+WQskRgOmzpUALsFD/O0BkEQ+Y9QEs+h0rrK8hFIZWzJv8e0= X-Received: by 2002:a9d:77d1:: with SMTP id w17mr11402677otl.329.1637132445500; Tue, 16 Nov 2021 23:00:45 -0800 (PST) MIME-Version: 1.0 References: <20211116001628.24216-1-vbabka@suse.cz> <20211116001628.24216-26-vbabka@suse.cz> In-Reply-To: <20211116001628.24216-26-vbabka@suse.cz> From: Marco Elver Date: Wed, 17 Nov 2021 08:00:00 +0100 Message-ID: Subject: Re: [RFC PATCH 25/32] mm/kfence: Convert kfence_guarded_alloc() to struct slab To: Vlastimil Babka Cc: Matthew Wilcox , linux-mm@kvack.org, Christoph Lameter , David Rientjes , Joonsoo Kim , Pekka Enberg , Alexander Potapenko , Dmitry Vyukov , kasan-dev@googlegroups.com Content-Type: text/plain; charset="UTF-8" X-Stat-Signature: gwx66e3hygrz4gzf4oogk345f6pcjgrw Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=cFw719NB; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf02.hostedemail.com: domain of elver@google.com designates 209.85.210.53 as permitted sender) smtp.mailfrom=elver@google.com X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: E6CB17001719 X-HE-Tag: 1637132449-88379 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, 16 Nov 2021 at 01:16, Vlastimil Babka wrote: > The function sets some fields that are being moved from struct page to struct > slab so it needs to be converted. > > Signed-off-by: Vlastimil Babka > Cc: Alexander Potapenko > Cc: Marco Elver > Cc: Dmitry Vyukov > Cc: It looks sane. I ran kfence_test with both slab and slub, and all passes: Tested-by: Marco Elver But should there be other major changes, we should re-test. Thanks, -- Marco > --- > mm/kfence/core.c | 12 ++++++------ > mm/kfence/kfence_test.c | 6 +++--- > 2 files changed, 9 insertions(+), 9 deletions(-) > > diff --git a/mm/kfence/core.c b/mm/kfence/core.c > index 09945784df9e..4eb60cf5ff8b 100644 > --- a/mm/kfence/core.c > +++ b/mm/kfence/core.c > @@ -360,7 +360,7 @@ static void *kfence_guarded_alloc(struct kmem_cache *cache, size_t size, gfp_t g > { > struct kfence_metadata *meta = NULL; > unsigned long flags; > - struct page *page; > + struct slab *slab; > void *addr; > > /* Try to obtain a free object. */ > @@ -424,13 +424,13 @@ static void *kfence_guarded_alloc(struct kmem_cache *cache, size_t size, gfp_t g > > alloc_covered_add(alloc_stack_hash, 1); > > - /* Set required struct page fields. */ > - page = virt_to_page(meta->addr); > - page->slab_cache = cache; > + /* Set required slab fields. */ > + slab = virt_to_slab((void *)meta->addr); > + slab->slab_cache = cache; > if (IS_ENABLED(CONFIG_SLUB)) > - page->objects = 1; > + slab->objects = 1; > if (IS_ENABLED(CONFIG_SLAB)) > - page->s_mem = addr; > + slab->s_mem = addr; > > /* Memory initialization. */ > for_each_canary(meta, set_canary_byte); > diff --git a/mm/kfence/kfence_test.c b/mm/kfence/kfence_test.c > index f7276711d7b9..a22b1af85577 100644 > --- a/mm/kfence/kfence_test.c > +++ b/mm/kfence/kfence_test.c > @@ -282,7 +282,7 @@ static void *test_alloc(struct kunit *test, size_t size, gfp_t gfp, enum allocat > alloc = kmalloc(size, gfp); > > if (is_kfence_address(alloc)) { > - struct page *page = virt_to_head_page(alloc); > + struct slab *slab = virt_to_slab(alloc); > struct kmem_cache *s = test_cache ?: > kmalloc_caches[kmalloc_type(GFP_KERNEL)][__kmalloc_index(size, false)]; > > @@ -291,8 +291,8 @@ static void *test_alloc(struct kunit *test, size_t size, gfp_t gfp, enum allocat > * even for KFENCE objects; these are required so that > * memcg accounting works correctly. > */ > - KUNIT_EXPECT_EQ(test, obj_to_index(s, page_slab(page), alloc), 0U); > - KUNIT_EXPECT_EQ(test, objs_per_slab(s, page_slab(page)), 1); > + KUNIT_EXPECT_EQ(test, obj_to_index(s, slab, alloc), 0U); > + KUNIT_EXPECT_EQ(test, objs_per_slab(s, slab), 1); > > if (policy == ALLOCATE_ANY) > return alloc; > -- > 2.33.1