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 C6F70C25B06 for ; Sun, 14 Aug 2022 13:42:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D26CD6B0073; Sun, 14 Aug 2022 09:42:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CAEEC8D0003; Sun, 14 Aug 2022 09:42:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B29068D0002; Sun, 14 Aug 2022 09:42:52 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id A2A146B0073 for ; Sun, 14 Aug 2022 09:42:52 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 800001C6230 for ; Sun, 14 Aug 2022 13:42:52 +0000 (UTC) X-FDA: 79798313784.03.5E8479C Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) by imf08.hostedemail.com (Postfix) with ESMTP id 05A4E1601C6 for ; Sun, 14 Aug 2022 13:42:51 +0000 (UTC) Received: by mail-pl1-f172.google.com with SMTP id x23so4417225pll.7 for ; Sun, 14 Aug 2022 06:42:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc; bh=PyHO3yIA1JCYK9QFfsWkk196lw06TseWPCHhSEsim3o=; b=f5PBtxoY61g/GtfXFHhLbsZ3y/+7pdrsxpv7JC435nMbzUxVtQ4GtLjDsrqIXcGNTz gDTNz7lynn77pkoyBWXpg4885lXAHz3de+eAYJlq+8wnYQyZGTkrATvyNaiRjkc2jdB3 3slCVNfgx7v1R3LBj8tV/bezlf3EEeNC9g3K+CTGIvvSrre0Qe8+s/r0u1MkNmNrHT9E /PC9YxKkjan3DmPyyoTb4lrRcHYvHY3k3AK3izgzyLI9KKU+97dKuOndJJhwhr29+WIh l48w6L4P6SGT4QgkGlvMrfDFW9SIT9slovekF6MCRUGRs0NhXRBGZySac5XDlDKGRtzB /Z5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc; bh=PyHO3yIA1JCYK9QFfsWkk196lw06TseWPCHhSEsim3o=; b=ujOEf4DK6+Fd0Q0oElPCpIa6685XYVF3nWGm+u4XNcbjeDA7FvV21KmQ9V1SkvUe4y Fk8hj1OrK1nOo5lOZzDWeQuovQR9lS7L4d13kONoma7Eu6xh2bYelDgbp+mbKHeF7gr9 DxcYkjkLvJOVNDbbAXuGJnbJXSF4MgKqX7NVPZZWf56VOPF+8ipzFhCPHw2xAjbMTVrl Eh3NtwJNGZl+wPt5G9l9637F4ZUYMx4umxjMEk4vSjWt+21qlv1fIR62+pvwXWuMSzyB qpCpoOOjAyvehc/D++kuVLmgsN4uUBHpiTPSyZwDW4I5fMraqUeoXXgLPNSnupJDqk/Y gQwQ== X-Gm-Message-State: ACgBeo0Kqfliv81LZdn2t4t1rcMrTVr1oz20LKz9/ZJYL/EyzAQPAfig 2Il5XFmVnG0dkAwmm5LDRgc= X-Google-Smtp-Source: AA6agR73DrQY+pLX4aQGdazBamnBW8N21Vbw/aBT8BjD1AaBUVs3vzkPPabhfDj+j7Ao1coUwOM51A== X-Received: by 2002:a17:902:e5cf:b0:171:4f8d:228e with SMTP id u15-20020a170902e5cf00b001714f8d228emr12594734plf.99.1660484570900; Sun, 14 Aug 2022 06:42:50 -0700 (PDT) Received: from hyeyoo ([114.29.91.56]) by smtp.gmail.com with ESMTPSA id b10-20020aa7950a000000b0052d3a442760sm5151716pfp.161.2022.08.14.06.42.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Aug 2022 06:42:49 -0700 (PDT) Date: Sun, 14 Aug 2022 22:42:44 +0900 From: Hyeonggon Yoo <42.hyeyoo@gmail.com> To: Vlastimil Babka Cc: Rongwei Wang , Christoph Lameter , Joonsoo Kim , David Rientjes , Pekka Enberg , Roman Gushchin , linux-mm@kvack.org, Sebastian Andrzej Siewior , Thomas Gleixner , Mike Galbraith Subject: Re: [PATCH 1/5] mm/slub: move free_debug_processing() further Message-ID: References: <20220812091426.18418-1-vbabka@suse.cz> <20220812091426.18418-2-vbabka@suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20220812091426.18418-2-vbabka@suse.cz> ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1660484572; a=rsa-sha256; cv=none; b=SIj+To78PHr1jApEfM/9oyuOeJUiR4kATlHibQzhCApRiEuY2xKcus1qv9IfPul0RqtrNY v8VIVIt75USD9ctN4kFAczpmIWWvNz2KXcyEcxB2UnPSKSbp5o9MY+kA/T6hnQyiNm/W8e sGJ9+ipFZGtqoKNT8XA5cl9G701mUqE= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=f5PBtxoY; spf=pass (imf08.hostedemail.com: domain of 42.hyeyoo@gmail.com designates 209.85.214.172 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=1660484572; 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=PyHO3yIA1JCYK9QFfsWkk196lw06TseWPCHhSEsim3o=; b=HW8yQLhw8mjjAVNWNLLNVLrIGvJ7Y2TD4fVz3L23M8h3AExAxnCsublGXi4QCf/rm7Er7N FDazTvt6T1578iHP1pWc9G7y6hWukmh9kna6juNKyMj4kB0ltxnsvaDBv3J6nDWV0SaCfE grwHnPXx5YMYxNuZPau1PP08AGBBYtY= X-Stat-Signature: xjtkgjrtatmyd11y5kddgy36fewc46d8 X-Rspamd-Queue-Id: 05A4E1601C6 X-Rspam-User: X-Rspamd-Server: rspam03 Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=f5PBtxoY; spf=pass (imf08.hostedemail.com: domain of 42.hyeyoo@gmail.com designates 209.85.214.172 as permitted sender) smtp.mailfrom=42.hyeyoo@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-HE-Tag: 1660484571-377304 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 Fri, Aug 12, 2022 at 11:14:22AM +0200, Vlastimil Babka wrote: > In the following patch, the function free_debug_processing() will be > calling add_partial(), remove_partial() and discard_slab(), se move it > below their definitions to avoid forward declarations. To make review > easier, separate the move from functional changes. > > Signed-off-by: Vlastimil Babka > --- > mm/slub.c | 114 +++++++++++++++++++++++++++--------------------------- > 1 file changed, 57 insertions(+), 57 deletions(-) > > diff --git a/mm/slub.c b/mm/slub.c > index 862dbd9af4f5..87e794ab101a 100644 > --- a/mm/slub.c > +++ b/mm/slub.c > @@ -1385,63 +1385,6 @@ static inline int free_consistency_checks(struct kmem_cache *s, > return 1; > } > > -/* Supports checking bulk free of a constructed freelist */ > -static noinline int free_debug_processing( > - struct kmem_cache *s, struct slab *slab, > - void *head, void *tail, int bulk_cnt, > - unsigned long addr) > -{ > - struct kmem_cache_node *n = get_node(s, slab_nid(slab)); > - void *object = head; > - int cnt = 0; > - unsigned long flags, flags2; > - int ret = 0; > - depot_stack_handle_t handle = 0; > - > - if (s->flags & SLAB_STORE_USER) > - handle = set_track_prepare(); > - > - spin_lock_irqsave(&n->list_lock, flags); > - slab_lock(slab, &flags2); > - > - if (s->flags & SLAB_CONSISTENCY_CHECKS) { > - if (!check_slab(s, slab)) > - goto out; > - } > - > -next_object: > - cnt++; > - > - if (s->flags & SLAB_CONSISTENCY_CHECKS) { > - if (!free_consistency_checks(s, slab, object, addr)) > - goto out; > - } > - > - if (s->flags & SLAB_STORE_USER) > - set_track_update(s, object, TRACK_FREE, addr, handle); > - trace(s, slab, object, 0); > - /* Freepointer not overwritten by init_object(), SLAB_POISON moved it */ > - init_object(s, object, SLUB_RED_INACTIVE); > - > - /* Reached end of constructed freelist yet? */ > - if (object != tail) { > - object = get_freepointer(s, object); > - goto next_object; > - } > - ret = 1; > - > -out: > - if (cnt != bulk_cnt) > - slab_err(s, slab, "Bulk freelist count(%d) invalid(%d)\n", > - bulk_cnt, cnt); > - > - slab_unlock(slab, &flags2); > - spin_unlock_irqrestore(&n->list_lock, flags); > - if (!ret) > - slab_fix(s, "Object at 0x%p not freed", object); > - return ret; > -} > - > /* > * Parse a block of slub_debug options. Blocks are delimited by ';' > * > @@ -2788,6 +2731,63 @@ static inline unsigned long node_nr_objs(struct kmem_cache_node *n) > { > return atomic_long_read(&n->total_objects); > } > + > +/* Supports checking bulk free of a constructed freelist */ > +static noinline int free_debug_processing( > + struct kmem_cache *s, struct slab *slab, > + void *head, void *tail, int bulk_cnt, > + unsigned long addr) > +{ > + struct kmem_cache_node *n = get_node(s, slab_nid(slab)); > + void *object = head; > + int cnt = 0; > + unsigned long flags, flags2; > + int ret = 0; > + depot_stack_handle_t handle = 0; > + > + if (s->flags & SLAB_STORE_USER) > + handle = set_track_prepare(); > + > + spin_lock_irqsave(&n->list_lock, flags); > + slab_lock(slab, &flags2); > + > + if (s->flags & SLAB_CONSISTENCY_CHECKS) { > + if (!check_slab(s, slab)) > + goto out; > + } > + > +next_object: > + cnt++; > + > + if (s->flags & SLAB_CONSISTENCY_CHECKS) { > + if (!free_consistency_checks(s, slab, object, addr)) > + goto out; > + } > + > + if (s->flags & SLAB_STORE_USER) > + set_track_update(s, object, TRACK_FREE, addr, handle); > + trace(s, slab, object, 0); > + /* Freepointer not overwritten by init_object(), SLAB_POISON moved it */ > + init_object(s, object, SLUB_RED_INACTIVE); > + > + /* Reached end of constructed freelist yet? */ > + if (object != tail) { > + object = get_freepointer(s, object); > + goto next_object; > + } > + ret = 1; > + > +out: > + if (cnt != bulk_cnt) > + slab_err(s, slab, "Bulk freelist count(%d) invalid(%d)\n", > + bulk_cnt, cnt); > + > + slab_unlock(slab, &flags2); > + spin_unlock_irqrestore(&n->list_lock, flags); > + if (!ret) > + slab_fix(s, "Object at 0x%p not freed", object); > + return ret; > +} > #endif /* CONFIG_SLUB_DEBUG */ > > #if defined(CONFIG_SLUB_DEBUG) || defined(CONFIG_SYSFS) > -- > 2.37.1 > Looks good to me. Reviewed-by: Hyeonggon Yoo <42.hyeyoo@gmail.com> Thanks! -- Thanks, Hyeonggon