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 70128C4345F for ; Thu, 25 Apr 2024 21:09:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CEE6B6B0098; Thu, 25 Apr 2024 17:09:51 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C9E796B009B; Thu, 25 Apr 2024 17:09:51 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B8D376B009C; Thu, 25 Apr 2024 17:09:51 -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 9BE5F6B0098 for ; Thu, 25 Apr 2024 17:09:51 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 36F1F40948 for ; Thu, 25 Apr 2024 21:09:51 +0000 (UTC) X-FDA: 82049296182.22.F1415FC Received: from out-174.mta1.migadu.com (out-174.mta1.migadu.com [95.215.58.174]) by imf09.hostedemail.com (Postfix) with ESMTP id 828D9140009 for ; Thu, 25 Apr 2024 21:09:49 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=fwaSUXof; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf09.hostedemail.com: domain of kent.overstreet@linux.dev designates 95.215.58.174 as permitted sender) smtp.mailfrom=kent.overstreet@linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1714079389; 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=5BQT9j7sLQeMY/YB9pvp7PU2WrrBXiYonNuoxwRbYFE=; b=BKIxDNRRAIyxyM3PfjDLLykma4v6O/JEpaaD47MrbuqWOfZGqpq8o9Z+AC5Z/MAhRgf6xP WkckI4Jg1oBfHoi5fw8ZZ+gsgTidS3Qj2yMYgaV9BvSlptjEA5TfNhGPOMRt2yafL+Pr1P nKnEsuTfpoN8diqHQpt0IEeUmf4VYuE= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=fwaSUXof; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf09.hostedemail.com: domain of kent.overstreet@linux.dev designates 95.215.58.174 as permitted sender) smtp.mailfrom=kent.overstreet@linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1714079389; a=rsa-sha256; cv=none; b=SjnLiXM/T3I/4SBxv87TwJUO3XByutiRsMPYF7CWPtQS6sNLSNpZmodHKZ3m+GX+lGwA/j gMjDMO1rdT2o0xlkYAKztLG1FQihVTdU/hg7jsog5uszZwhBoQDpPVeMFOaaqKKfcG1xPY +5i01DXdB43RB1AmEJ0JnBsgiS/B/6I= Date: Thu, 25 Apr 2024 17:09:43 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1714079387; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=5BQT9j7sLQeMY/YB9pvp7PU2WrrBXiYonNuoxwRbYFE=; b=fwaSUXof6osVkLcezsvOOJo5sLF5ZSkRYS1kXifZw1N2Vj/4pQtg/ZlD5zdSf1ljvSMJep OdgD2AYS62LPpd7OvgZ0L0m4jlDBwGfoPtkapcid80whwL/WAsVsILYrNJzMMk943mhMza Y3FdBiDc37FhEeTKP2s+gBH5ZetXbNg= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Kent Overstreet To: Kees Cook Cc: Suren Baghdasaryan , Catalin Marinas , Andrew Morton , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Vlastimil Babka , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org Subject: Re: [PATCH] mm/slub: Avoid recursive loop with kmemleak Message-ID: References: <20240425205516.work.220-kees@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240425205516.work.220-kees@kernel.org> X-Migadu-Flow: FLOW_OUT X-Rspam-User: X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 828D9140009 X-Stat-Signature: oa1wy9s6k4fhk4d38pxcg38grofbuayp X-HE-Tag: 1714079389-531561 X-HE-Meta: U2FsdGVkX1+y+/7I1b+YOSFw5BJKliNiljFoZxsue91G74bjcjmYIdrX9Qb2B+MBVypZhTT7dUX02HM2KRdfW/rymtVSOp6aMWpkdfUH53W82pvKmX5XujFNm6/OIWsVEqKMlMtxz6gF1dEphc1uBoebZrB+1OyWw0zONNla5AkRtS/pLe3nRQt99WZAy4qM6JmUzmjy/DJWAP4Tew7Wxxkxzw2FjsaL8FyyH0UCt5YQ1Ew/Qyi/7HxJeCkNTeku8IHJyyGZW3LgVVZ/vNXQ7Lm5Nqmjx+CxIPYQrNh5sUc0kL+IR9lQZAyzVNRgd8XObgsF1YuH4wsWGmXC6UajyMIlK+b4OxpDyCM029DH4cnPCrtsOkEr3EsdwCMcOPzOsjCJo3jLUpZnOdWIsBZNFcS9c0MC70fz4R8FuCDqwDXZdcWtZtlRraP+joSyVfDpmuL7twPk3yorseyzdEke1FO9WYFCuHaFxIHyCFpg7/c4pgv7rISlGnqvGFrEz3mpxtKDSDRGyy3YCMSHyShKmqRof9LsvEK5S/LJFY9jEIsr+Ii8DjpFKKfdkxgp8ORtHbpygWhgPu+HRrDq9BTsrbhN9wm8zfb6DwrhKy12sV4Yptz45nIB6/OcbqbsO3YbP7Ohrs67OVfMRVseGI0B2BDEgMbJQ52pJTrT79TqLuM/z7joe2CSwTMufZCSavuYiPEziDQwH5t23dDDgO9uRw0fJtAO1KdTB3gORBznGkIUNcxhwQVj5ljJWUvVQWfl1aCeEN7imh1vHPOk8u0CPOXzEyfP7bnTZL6Q5mxDxo/QovHXd8G6Ed+b3H139LV0FDAc9wTcoGOfj3b7PniySvdMFbFIHFe6zv5y1DOxJU+Qb+tdRlESOw== 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 Thu, Apr 25, 2024 at 01:55:23PM -0700, Kees Cook wrote: > The system will immediate fill up stack and crash when both > CONFIG_DEBUG_KMEMLEAK and CONFIG_MEM_ALLOC_PROFILING are enabled. > Avoid allocation tagging of kmemleak caches, otherwise recursive > allocation tracking occurs. > > Fixes: 279bb991b4d9 ("mm/slab: add allocation accounting into slab allocation and free paths") > Signed-off-by: Kees Cook > --- > Cc: Suren Baghdasaryan > Cc: Kent Overstreet > Cc: Catalin Marinas > Cc: Andrew Morton > Cc: Christoph Lameter > Cc: Pekka Enberg > Cc: David Rientjes > Cc: Joonsoo Kim > Cc: Vlastimil Babka > Cc: Roman Gushchin > Cc: Hyeonggon Yoo <42.hyeyoo@gmail.com> > Cc: linux-mm@kvack.org > --- > mm/kmemleak.c | 4 ++-- > mm/slub.c | 2 +- > 2 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/mm/kmemleak.c b/mm/kmemleak.c > index c55c2cbb6837..fdcf01f62202 100644 > --- a/mm/kmemleak.c > +++ b/mm/kmemleak.c > @@ -463,7 +463,7 @@ static struct kmemleak_object *mem_pool_alloc(gfp_t gfp) > > /* try the slab allocator first */ > if (object_cache) { > - object = kmem_cache_alloc(object_cache, gfp_kmemleak_mask(gfp)); > + object = kmem_cache_alloc_noprof(object_cache, gfp_kmemleak_mask(gfp)); What do these get accounted to, or does this now pop a warning with CONFIG_MEM_ALLOC_PROFILING_DEBUG? > if (object) > return object; > } > @@ -947,7 +947,7 @@ static void add_scan_area(unsigned long ptr, size_t size, gfp_t gfp) > untagged_objp = (unsigned long)kasan_reset_tag((void *)object->pointer); > > if (scan_area_cache) > - area = kmem_cache_alloc(scan_area_cache, gfp_kmemleak_mask(gfp)); > + area = kmem_cache_alloc_noprof(scan_area_cache, gfp_kmemleak_mask(gfp)); > > raw_spin_lock_irqsave(&object->lock, flags); > if (!area) { > diff --git a/mm/slub.c b/mm/slub.c > index a94a0507e19c..9ae032ed17ed 100644 > --- a/mm/slub.c > +++ b/mm/slub.c > @@ -2016,7 +2016,7 @@ prepare_slab_obj_exts_hook(struct kmem_cache *s, gfp_t flags, void *p) > if (!p) > return NULL; > > - if (s->flags & SLAB_NO_OBJ_EXT) > + if (s->flags & (SLAB_NO_OBJ_EXT | SLAB_NOLEAKTRACE)) > return NULL; > > if (flags & __GFP_NO_OBJ_EXT) > -- > 2.34.1 >