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 22CB0C07E9D for ; Sat, 24 Sep 2022 18:05:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 25B2F8E000E; Sat, 24 Sep 2022 14:05:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1E3BB8E0007; Sat, 24 Sep 2022 14:05:17 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0843E8E000E; Sat, 24 Sep 2022 14:05:17 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id E71FD8E0007 for ; Sat, 24 Sep 2022 14:05:16 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id BD48680417 for ; Sat, 24 Sep 2022 18:05:16 +0000 (UTC) X-FDA: 79947755832.04.7F4901B Received: from mail-qt1-f174.google.com (mail-qt1-f174.google.com [209.85.160.174]) by imf24.hostedemail.com (Postfix) with ESMTP id 5766118001C for ; Sat, 24 Sep 2022 18:05:16 +0000 (UTC) Received: by mail-qt1-f174.google.com with SMTP id g12so1914792qts.1 for ; Sat, 24 Sep 2022 11:05:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date; bh=cWXihzkts7fGQmkZ/lCAYDuSh40IJwfY6ZWwrmbTVGU=; b=TBDentZR5hlvdOO1MrCH3a3HoJKEOOi+SNv74AjgzM+YgLM7hrn2UFvEo9NJXP7sRA zlao1ay2DLAIlcQC/OC5bafSmNYyOo2JfT+Nn0Uedh8+feSJYg2AsU8QFQ0ZNR6rAXRH bao/I4+rzmerDSEif05d2jOlo3rOnt5NqWz9ox1LSwydrkSUMCZllpLykwMP1a3PY/CS IBksJOE54HZkqC4ryIXnKTEn/S5RNX+9Q6UOS4EvQddJn3GWBhxghp8NjEqQX3hO3TMI aSAOPJ7XO1x6VLFtDnhMLHouv3jEs7iKGFejX39SeGkPr04VdifFFScHvU3ufFiCPDzt qzqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date; bh=cWXihzkts7fGQmkZ/lCAYDuSh40IJwfY6ZWwrmbTVGU=; b=sHzqmPr//1ht5dPeFHzMu7fYCTrogfG3BtHS0Wgw+3eZa7uKuGR28hr0Fbi9Rp+ytG a6yDSsyqKPyaS9nsQk6VNazZ605f45pwh0lVHylW3PuoXk70GKH4TjKqp7Mhlcy4yHxq w5tbzhFxcI0YEktXdBsPeM5YY8zvYXA8Qtif9br4ScpSbQuYUnI+vodbLMSz/mnpaS7E hs7Ak0B2pObu80inOfARxqGuL43qnFM99uafUcKFVUjfeUMn47fP1DCEv8TnS4UO9ra0 NPx5JlInok+iMCpl5/NPM22UNOHy21PG6MHJJtz2OZ7yqGE9iRW0CgwkXMK91hG+1hAM /z/Q== X-Gm-Message-State: ACrzQf3MPiJw+Zvt8sKnkTbVnx7gfaSES+SpBoLzvkPLpzn63mY2zLG4 zqCOX9TMpuJgDAapTSl+XBEqQV26DLx1ocNBgQA= X-Google-Smtp-Source: AMsMyM5k3hqUDD4Gox/vAgw2jUuAhGC+5vAF1+n1KNUIyak5S/zpuUgX2ZwFbDXeq/Dbm5Bjqo9pEtogDbaIgsx6iOA= X-Received: by 2002:a05:622a:180d:b0:35b:d283:7e65 with SMTP id t13-20020a05622a180d00b0035bd2837e65mr12033167qtc.106.1664042715583; Sat, 24 Sep 2022 11:05:15 -0700 (PDT) MIME-Version: 1.0 References: <20220913065423.520159-1-feng.tang@intel.com> <20220913065423.520159-4-feng.tang@intel.com> In-Reply-To: From: Andrey Konovalov Date: Sat, 24 Sep 2022 20:05:04 +0200 Message-ID: Subject: Re: [PATCH v6 3/4] mm: kasan: Add free_meta size info in struct kasan_cache To: Feng Tang Cc: Andrew Morton , Vlastimil Babka , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, Dmitry Vyukov , Jonathan Corbet , "Hansen, Dave" , Linux Memory Management List , LKML , kasan-dev , "Sang, Oliver" Content-Type: text/plain; charset="UTF-8" ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1664042716; a=rsa-sha256; cv=none; b=RyWT+nRDtymWZe13Wl3yYa6IPMHTdkgm5YVmi5IDqYJsKq5ehvMLGHGNjFA6WhcmaLH8D1 qUqD0qzbFjhtf0BDo7qUxfdBFMNbZSB73TGVlitYrBYZgHBvl+BncgHlHpFraP7YU5jip4 s6FZM8KptkomAC8aaVSYjFLdSPGT1rg= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=TBDentZR; spf=pass (imf24.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.160.174 as permitted sender) smtp.mailfrom=andreyknvl@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=1664042716; 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=cWXihzkts7fGQmkZ/lCAYDuSh40IJwfY6ZWwrmbTVGU=; b=aWlFGvG0ru9jLdcQ0O8Uowuf8bDPIE0DaOB+PiTlhWeRHZO9cdNJ7MSDRsEsnnI1WIiuv6 zXcwoYawYcdPXctR6OkgTZGvDirw9LXaXFhEw+RqDGH1vNGjyZC9I9MUVFCBPqvcoUaZbD gqGcVRwwz4COq7LXVCMrZ8bud2brgxI= X-Rspamd-Queue-Id: 5766118001C X-Rspamd-Server: rspam07 X-Rspam-User: Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=TBDentZR; spf=pass (imf24.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.160.174 as permitted sender) smtp.mailfrom=andreyknvl@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-Stat-Signature: 11uyzpytru7gs15peby3igii6g7qnzgs X-HE-Tag: 1664042716-991356 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 Wed, Sep 21, 2022 at 2:03 PM Feng Tang wrote: > > Agree, it's better not touch the internal fields in slub code. > > How about the following patch, it merge the 2 functions with one flag > indicating in meta data or object. (I'm fine with 2 separate functions) The overall approach sounds good. See some comments below. > diff --git a/include/linux/kasan.h b/include/linux/kasan.h > index b092277bf48d..0ad05a34e708 100644 > --- a/include/linux/kasan.h > +++ b/include/linux/kasan.h > @@ -150,11 +150,12 @@ static __always_inline void kasan_cache_create_kmalloc(struct kmem_cache *cache) > __kasan_cache_create_kmalloc(cache); > } > > -size_t __kasan_metadata_size(struct kmem_cache *cache); > -static __always_inline size_t kasan_metadata_size(struct kmem_cache *cache) > +size_t __kasan_meta_size(struct kmem_cache *cache, bool in_slab_object); > +static __always_inline size_t kasan_meta_size(struct kmem_cache *cache, > + bool in_slab_object) I would keep the name as kasan_metadata_size as it's more clear to external users but rename in_slab_object to in_object to make the declaration shorter. > { > if (kasan_enabled()) > - return __kasan_metadata_size(cache); > + return __kasan_meta_size(cache, in_slab_object); > return 0; > } > > diff --git a/mm/kasan/common.c b/mm/kasan/common.c > index 69f583855c8b..2a8710461ebb 100644 > --- a/mm/kasan/common.c > +++ b/mm/kasan/common.c > @@ -218,14 +218,21 @@ void __kasan_cache_create_kmalloc(struct kmem_cache *cache) > cache->kasan_info.is_kmalloc = true; > } > > -size_t __kasan_metadata_size(struct kmem_cache *cache) > +size_t __kasan_meta_size(struct kmem_cache *cache, bool in_slab_object) > { > if (!kasan_stack_collection_enabled()) > return 0; > - return (cache->kasan_info.alloc_meta_offset ? > - sizeof(struct kasan_alloc_meta) : 0) + > - (cache->kasan_info.free_meta_offset ? > - sizeof(struct kasan_free_meta) : 0); > + > + if (in_slab_object) > + return (cache->kasan_info.alloc_meta_offset == 0 ? > + sizeof(struct kasan_alloc_meta) : 0) + > + (cache->kasan_info.free_meta_offset ? > + sizeof(struct kasan_free_meta) : 0); > + else > + return (cache->kasan_info.alloc_meta_offset == 0 ? > + sizeof(struct kasan_alloc_meta) : 0) + > + (cache->kasan_info.free_meta_offset ? > + sizeof(struct kasan_free_meta) : 0); Something weird here: both if and else cases are the same. The change also needs to be rebased onto [1]. Thanks! [1] https://lore.kernel.org/linux-mm/c7b316d30d90e5947eb8280f4dc78856a49298cf.1662411799.git.andreyknvl@google.com/