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 AD846C369AB for ; Fri, 18 Apr 2025 23:09:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 876B86B0005; Fri, 18 Apr 2025 19:09:15 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 84E9C6B0024; Fri, 18 Apr 2025 19:09:15 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 73BA06B0006; Fri, 18 Apr 2025 19:09:15 -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 557036B0024 for ; Fri, 18 Apr 2025 19:09:15 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 72796140F76 for ; Fri, 18 Apr 2025 23:09:15 +0000 (UTC) X-FDA: 83348707470.13.3E6EF6B Received: from mail-qt1-f181.google.com (mail-qt1-f181.google.com [209.85.160.181]) by imf08.hostedemail.com (Postfix) with ESMTP id 8AC0516000B for ; Fri, 18 Apr 2025 23:09:13 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=1j6GnxL8; spf=pass (imf08.hostedemail.com: domain of surenb@google.com designates 209.85.160.181 as permitted sender) smtp.mailfrom=surenb@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=1745017753; 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=s39eUTjyd3OZR5Xwz5lmeWkLFagdixJuj4CkpgONkWg=; b=B+i1PsHVIlSXfh2lc16VxzOPIwH+xiLg6j2LdTovGKHAm7z/k6GWRWcy3zrB/K5v3yM4+n ObtHR/mbR6lcC/dJIhOxmcThpFCR3qjjfFS/+vLFL91UGn8KLsGhmd0VuFZ74dPd+aALyB gYQHIN7oLlY8gnk0Ct47F72jm/PcirI= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=1j6GnxL8; spf=pass (imf08.hostedemail.com: domain of surenb@google.com designates 209.85.160.181 as permitted sender) smtp.mailfrom=surenb@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1745017753; a=rsa-sha256; cv=none; b=CSwDAWsKNO+y03XDD6fCF/piDRIZsMWqWUENFrGchZS9BMNmaSSr1Kvb495u6CjYUrFK0Q sNNKtvLOLd5GskPrmA7pqDdkD5u6coA8vJJZ813UYTTSKqDPW7ifCxb+JhXEDlLv+2/ePh ttQAg+vwlaV+632n92E13xF+jfhLAmI= Received: by mail-qt1-f181.google.com with SMTP id d75a77b69052e-47666573242so652581cf.0 for ; Fri, 18 Apr 2025 16:09:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1745017753; x=1745622553; darn=kvack.org; 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=s39eUTjyd3OZR5Xwz5lmeWkLFagdixJuj4CkpgONkWg=; b=1j6GnxL8Fmsvsc3r8T5nwLQh5PwF9ewnzvp6NsuG1e1eUCK24CYcsXvXCZ+JHR28gs x/VKA5YisOFAbJt8fc2p/w7tSE6CdVpbIlkPmYB8csxaThlZX97szAqPG3TQ1EtPk+Sx BuNyEH+rjLF5YL43b96X8BXRYr3CCZFui4RPzRvR3PJQ79vRk03pj7ZbVKE0RCeI8vGM KKv0HPfNGiQnYfh5BYMwC4+g0m81hoZVfZuzbgpLymsRoeaLhgQX1BDNVulFrVRSD/UG umi2uGQX83kK69Z2QGe/68M6DHLkc/FlLj+HJba7pBIHQpQ45lafw2dfCeH41/hG58vP ZjzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745017753; x=1745622553; 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=s39eUTjyd3OZR5Xwz5lmeWkLFagdixJuj4CkpgONkWg=; b=DsMo68+bCh2URF+SkAAudFQoTmIxs/NGR6EFIlgpakn3+iwfzP2nAVjpd/lJuYHKQw Z/CxywVwDBuSL35pQoGwNiZBB1vteWoard5keKmsQDfh3o3JqIlRdtApMSynLw/zxvX3 RuLZgvRsrhIUC98wLy89kEc2xiuBp+kDuS3wjFU/UGYsbPr883sA1kc6Jwy0xUCqwZ3A zot942u0ZkgQlZ4kj1qyfMxFhX41JTHlQI5wKsA30ahQ5x2AR1F/hllv9TVFPzeX3bZN Ii9Ut5LF6+fB4WZiWBLU9xcpyXsAj/MEPV1XLMoyWVcQZH1hb//ZZTg3SfgP8e14zYQk GyIg== X-Forwarded-Encrypted: i=1; AJvYcCU2xj24te/HvAPPqDED1mq+2Sm2FArEO0T4EdCqRJBV6R3a/1MVRfGbkbUPJ0GRBH27MWHDES28Nw==@kvack.org X-Gm-Message-State: AOJu0Yy0213jcOlOMB7DW/8tLJFTZznZK7s3LBpRIq76kWdttcE1hciv /E5PdkIv5VQfXTmOY54gA3Ic2q0p17UHj0YzSHKotMTZxyW6WrxM/pvwsj7oVDVstFEJ/vf0kxe wMrcEm/yeU2D1tQ0goHDiL4BjEY4FdoF+WiN7 X-Gm-Gg: ASbGncseKJO4x2CZv8suvd/QN9mgwf3Ko27hN41Hp6kGH379dh+I7rQUeJNQTkyqeUP E7Qihdf+FlSAQQ7VD1EMFvKtnB2sj6WDGwQGadkOTL8KmVgOhPhCiNgCiVoUCQoij8rCl/Pa647 BjXPOZ3s+J9YDjX9v4suh6 X-Google-Smtp-Source: AGHT+IEwMga8FnkxB6yfcE8BciKaxf7/qerZfPfl7ngUjVohy16KmSUkQ7nlIxUja5zEZNnESvnkGCQ+eQKprNEktto= X-Received: by 2002:ac8:5a50:0:b0:466:8887:6751 with SMTP id d75a77b69052e-47aecc8977cmr4542711cf.23.1745017752400; Fri, 18 Apr 2025 16:09:12 -0700 (PDT) MIME-Version: 1.0 References: <20250418061459.3898802-1-quic_zhenhuah@quicinc.com> In-Reply-To: From: Suren Baghdasaryan Date: Fri, 18 Apr 2025 16:09:00 -0700 X-Gm-Features: ATxdqUEr3YR8PqDwKFqGurPv7IWt7A_WSl6I0wLQhMQqPsA8HQZunIohgtEhWhg Message-ID: Subject: Re: [PATCH] mm, slab: clean up slab->obj_exts always To: Harry Yoo Cc: Zhenhua Huang , cl@linux.com, rientjes@google.com, vbabka@suse.cz, roman.gushchin@linux.dev, pasha.tatashin@soleen.com, akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, quic_tingweiz@quicinc.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 8AC0516000B X-Stat-Signature: dftny95ytc18tm6fffn33acxxwu9h6ot X-HE-Tag: 1745017753-46164 X-HE-Meta: U2FsdGVkX1+0uBvEHvYoBzdffwyapY4woxnUQcTyT5r5JNWblFTsVWNzMmBEHNkQLUCX7Sq0FJsqc8bcKE6hKdSx5lX5CtyMqFmbHuWnKs+gEweur3PS1WPqvMO+V7HEaZvpXT4zRyDwHA10dBDOwdtdFTx8LG7P9FxaULzDBk2LIeVZ3mh/TFUo48TLUi4qb65gp5dvqEQGyPHKtKhN/GPOIXhkow/003tnPAl5TH+D3IRgjEflDDDVnyNfkaxRrdznXMe+rX3zMA8ZlC15FAX3F7zkD9lZXsyMD6niK161IYGEv7fPGc5X8kY7B/4E/4lrJ0kxfd00caNbcPcgyNYcWDnB7aBdUSeg9GNEC4yp3I9KSCL2dHip4KkybuyvYvnwzAxWxK2l/ODexMyDInWFL3i+/0f8VYHwGgSItRCLXn+2kLPoX+yesTVaGArG44vBuvqZBNqNxR/N2PxMNLVUSrajD7+638LPZVsh70nU5AN1Ats7odSX/2GJuRPxpVBvYzrRLMbGON5smPcZ/NF35eQx42Q9eYf/GZcfBjYX5Qk1s54razeMdmGQczSqK2NI0aiyHOyP/xmeANBI6EoEWmblrd/xWOkP2fvCnR7FaYNt/zXfXMHh33VXH1zeOktSkIXE7osRScCr9bo548yKbcmhJcX+2dy5ozKFfUAjCpfRKZaKnCvNy6qEjpY1UIMClYcDpHqOStdBqpK332nP9ghpJuZGZxaG1xdcBdEbovY/JTjvgEBNr8F6dMUVM2dXR80kKO1oHSxak57taRgsH5LWlCw42LVlmJ50tVDt/gQFKGziGA3LB4Lqguhw8O0FY58nmlbKLOW61LF1WSIZkoHSqt0g5oXzsi//G5Y/qoljyF4c7boq9bJlsf+0PXMXSCnbQhvK18h0xmAjBmfSrOFkijymhKOlqz+jZP6p1yHg/Fkl3zHcfDVW/XGmBKgqXZk/V7GLT8zlyZz KIoziOkG YvU+ljJsfcjpILFeUfssp8wuA7Tm5XbLkasr5X4VfIiH2hjGnuZ+J9mD4unuMR6CgkIResM09UpH4gr3JnmK2eL3uGLCxpb7r0G6673bBWy9+dM5/6Bm7EwiNCNcFs7b0Hfn+LJb/CDyBmY9P1hL8YvcSDAzq6y57lbHLFWNs2+nxtPVRpsboPXGVtC4ADdO8X2dpR2gi/DUAkLkihLjT7L96OKVfsPyvsqVUrcO716+FDJL04Dkrt9sif05K+0tQfvygvMhprNGn9DegW/IdW1Cjr29z90NEo796ZuzC/oBt3Rba6a8jg654DYQqN7n1AW38 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: List-Subscribe: List-Unsubscribe: On Fri, Apr 18, 2025 at 8:17=E2=80=AFAM Harry Yoo wr= ote: > > On Fri, Apr 18, 2025 at 02:14:59PM +0800, Zhenhua Huang wrote: > > When memory allocation profiling is disabled at runtime or due to an > > error, shutdown_mem_profiling() is called: slab->obj_exts which > > previously allocated remains. > > It won't be cleared by unaccount_slab() because of > > mem_alloc_profiling_enabled() not true. It's incorrect, slab->obj_exts > > should always be cleaned up in unaccount_slab() to avoid following erro= r: > > > > [...]BUG: Bad page state in process... > > .. > > [...]page dumped because: page still charged to cgroup > > > > Fixes: 21c690a349baa ("mm: introduce slabobj_ext to support slab object= extensions") > > Signed-off-by: Zhenhua Huang Thanks for reporting and fixing the issue! > > --- > > Acked-by: Harry Yoo > > I reproduced the issue locally and confirmed that this patch fixes > the issue. > > Tested-by: Harry Yoo > > By the way, I think this should probably be backported to -stable? > > -- > Cheers, > Harry / Hyeonggon > > > mm/slub.c | 8 ++++++-- > > 1 file changed, 6 insertions(+), 2 deletions(-) > > > > diff --git a/mm/slub.c b/mm/slub.c > > index dac149df1be1..b42ce3a88806 100644 > > --- a/mm/slub.c > > +++ b/mm/slub.c > > @@ -2023,7 +2023,7 @@ int alloc_slab_obj_exts(struct slab *slab, struct= kmem_cache *s, > > return 0; > > } > > > > -/* Should be called only if mem_alloc_profiling_enabled() */ > > +/* Should be called if slab_obj_exts(slab) */ > > static noinline void free_slab_obj_exts(struct slab *slab) > > { > > struct slabobj_ext *obj_exts; > > @@ -2592,7 +2592,11 @@ static __always_inline void account_slab(struct = slab *slab, int order, > > static __always_inline void unaccount_slab(struct slab *slab, int orde= r, > > struct kmem_cache *s) > > { > > - if (memcg_kmem_online() || need_slab_obj_ext()) > > + /* > > + * The slab object extensions should now be freed regardless of > > + * whether mem_alloc_profiling_enabled() or not now. This comment does not explain why. I amended it in my suggestion below. > > + */ > > + if (memcg_kmem_online() || slab_obj_exts(slab)) > > free_slab_obj_exts(slab); free_slab_obj_exts() will be checking again that for slab_obj_exts(slab) !=3D NULL. Since this change effectively removes the static key check (mem_alloc_profiling_enabled() call inside need_slab_obj_ext()), I think we can simply make free_slab_obj_exts() inline function and remove the above condition completely. IOW: static inline void free_slab_obj_exts(struct slab *slab) { struct slabobj_ext *obj_exts; obj_exts =3D slab_obj_exts(slab); if (!obj_exts) return; ... slab->obj_exts =3D 0; } static __always_inline void unaccount_slab(...) { /* * The slab object extensions should be freed regardless of * whether mem_alloc_profiling_enabled() or not because profiling * might have been disabled after slab->obj_exts got allocated. */ free_slab_obj_exts(slab); ... } > > > > mod_node_page_state(slab_pgdat(slab), cache_vmstat_idx(s), > > -- > > 2.25.1 > > > >