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 16B23C3ABC9 for ; Thu, 15 May 2025 15:53:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2DC7A6B00A2; Thu, 15 May 2025 11:53:20 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 288F26B00A3; Thu, 15 May 2025 11:53:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1501E6B00A4; Thu, 15 May 2025 11:53:20 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id E5B366B00A2 for ; Thu, 15 May 2025 11:53:19 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id B383C802C0 for ; Thu, 15 May 2025 15:53:21 +0000 (UTC) X-FDA: 83445586602.04.34936AE Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf13.hostedemail.com (Postfix) with ESMTP id 0369E20006 for ; Thu, 15 May 2025 15:53:19 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=ebyt547K; spf=pass (imf13.hostedemail.com: domain of kees@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=kees@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1747324400; 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=hpYOGk082MYLapLGficlLAWhyqcghl4SS2mbbiLYmjw=; b=FEcDg4WcqUla0vCClnDCwFa7VGAqeDppJqi3733mC8mLGE8TINTMEDjWwa6GC92iOIHJEw LtoSkK6tFCZ/vsD0+CVrvAm6I0Hk8VVhsKEGm3xnBT+VDsLgYfrYijsFVeuZ9WC7OPm/w4 1XzSosHYCP41w2z6H/G53iAWq8tzTC8= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747324400; a=rsa-sha256; cv=none; b=N7fcGlCKz1K5BN/0RK6goud7lANgDO4irWDL6I2uygUZAMztmGOyuSBrPB6Sxq4YCv1r+e z1stMTHW6fFPkJLtRDebREhB6OdvtrAoknkvkNJN/rFaUPCCbTXn3Lqc60Pok1bQxMgiD6 1QjhwO6L90yX/7U7r9Nsy92GgjRxkrA= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=ebyt547K; spf=pass (imf13.hostedemail.com: domain of kees@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=kees@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 96E3D5C5BD8; Thu, 15 May 2025 15:51:01 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 909C2C4CEE7; Thu, 15 May 2025 15:53:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1747324398; bh=wgauiSBJZxz1TAwwb85yd+vzgW3Od4KEKvWLZgKnYkg=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=ebyt547KixQ/RYqLdPKw0FYomWcEI32KN+KjUgmrayBXBqjjcm//TcpXaRcS1vM1r ciAAprboRYq/5RWZMw7MP++D2ScZQgt0ZYBrrqenllMC/7XspiU2dd6ze0eZGZtoM6 L+DguB8Fky/QQTwhWrN33VDagSIlY2DbvWGUX2mKgZg4sp6FUdfc1Yf1B+YGJ+yvJp a1pppBq4NupBUy7Jy9Gqk0oLW65IVGzurzhmp4b/zNQOEnTuxhWgcJ4kh3wDZqnzCI vxYfL1Zqb2U3DJSRhwvPenY3umpwaZO+g2pmARHMTwSVk4lvlWzlo2mDCVek5sisnx BmRI6GSKvlNrA== Date: Thu, 15 May 2025 08:53:15 -0700 From: Kees Cook To: Shung-Hsi Yu Cc: bpf@vger.kernel.org, linux-mm@kvack.org, Andrii Nakryiko , Ihor Solodrai , Andrew Morton , Michal Hocko , Vlastimil Babka , Uladzislau Rezki , linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, regressions@lists.linux.dev, Greg Kroah-Hartman , Alexei Starovoitov , Daniel Borkmann , Pawan Gupta , Eduard Zingerman Subject: Re: [REGRESSION] bpf verifier slowdown due to vrealloc() change since 6.15-rc6 Message-ID: <202505150850.6F3E261D67@keescook> References: <20250515-bpf-verifier-slowdown-vwo2meju4cgp2su5ckj@6gi6ssxbnfqg> <202505150845.0F9E154@keescook> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <202505150845.0F9E154@keescook> X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 0369E20006 X-Stat-Signature: yotn7sxwh49senize7crabshpf977dqb X-Rspam-User: X-HE-Tag: 1747324399-749704 X-HE-Meta: U2FsdGVkX19CxhzaoXL0M0TulIKkDoJ/M3HfbP3eE6vuU/Tw1OoLsiyo7sLgFWeMBJe+xXgpK+XZHld8gvoDFAvSRPIEecI+FKFtkfYNFKkE9MK2p/ihw2gz0HXihBxqv1V8G7/YBdOtfI/cE3bDxWg7KzewH4L1SaJGTn9jd9U8Hn1yP1Zzdaqs7y9xPQgo1I1LLVVglyb+A+sYzJLxtuEz6xvu+2b2dW0Bp9oK3H+Q2vCwPZvFFLm4JXA57G0MCBNXp0Kn4WEWxEpCOiXwkhO4tMJv+09PTAsIuimMQyP3TPF668A1sSIwnEAzkoZ1hNDQFeaDImBlNYY79Jaw9oi5k2OYMqWuIOv6FcCgwiTR0isECkfkBOrQlkWko/CwMPhFNN4h735oa5xtrO6jpK2FSs+Lvjf15NI3kPaIXkGzHFibS6gq5xRdDBYXJMZMqBe2dJs+yGimDcuASISjSOnpb63gLUlx7+0aMWNn11kOTK5q+Ii6JnX3F2stqnwkw/qBtLjbJlnt/Fx0ND9SKxbJcq4Kqy2St14bek8tFrICQF2KhvwLc525Q32p3N3WsjVbOjegZulzMGGH0xW9/4P8c32C9Cgg5YW7gbHZKl3pO3tUdh4Gpw2Zq3W0Yf1xJLaR2auwa38y8fSl21SaveOB1cw07n+IKIVCii8VMNeHqtvfsrsgpKsaB9PDXvC75K5Klpn8X/6Wj+bKolbADQhflDyVYPxkk9fkTQCVuTN1rAbFvHKrLr2oQNZCiYlkzPEIYbEJ5UfsUMtwBWrn8uwqW8rEP9ikdizTZbi416mpKSFD5U5oc+cCGdn/JQt272qreU5bNx1d3H2VuqC5444zaPXyEUsxDFrvhh0SOqsfCQaV3IRruB8sox6IcUQkylnLlmMRi7zHyduZPsdRFRn+B3Ju/MnRQvAacGzt7By6UF7qGuKalPMD2WjgI6kxVGJTjttj1jLm1z+OCR8 ckxzhqxs qn4z86o/sKIXePv0B4u0ZuBytJQae3BzFslXr4z/7sboLl8rJRCXRWhrl1bD0uIKR03V2cNezMBcq7OJNWRRNh8S6q9N0cbH7JXynbrhZDLTBGXK5rwd4lYyO7K5FEbjwcOzknjrULBVxhmSj3T+hUuAutRkeACBupbRPMAteE023wwL4BWJuDoqONXcFGrxvuN5JBAS2TptaTHa6smJFVBD5tJeYxdUJtBUpJpO7JiuEVgQP6RcXabIukEZRJ2SzAXj8Fc5rzxfi19fvNKOzHvkEy3WTuYT8eiFjIBZHWLSWuBmyR+t0Kfx7PFrPbTBKhjW2x8fql42L/psV742Vw2GMk7dA4MgwA/5z4veTjRd2dfPww0fAuooaZGugM8Pfq8INEWYlf9KhwBPKR7G0GbzNo9P3AV/8F9R/ 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, May 15, 2025 at 08:47:47AM -0700, Kees Cook wrote: > On Thu, May 15, 2025 at 09:12:25PM +0800, Shung-Hsi Yu wrote: > > Bisect was done by Pawan and got to commit a0309faf1cb0 "mm: vmalloc: > > support more granular vrealloc() sizing"[2]. To further zoom in the > > Can you try this patch? It's a clear bug fix, but if it doesn't improve > things, I have another idea to rearrange the memset. Here's the patch (on top of the prior one) that relocates the memset: >From 0bc71b78603500705aca77f82de8ed1fc595c4c3 Mon Sep 17 00:00:00 2001 From: Kees Cook Date: Thu, 15 May 2025 08:48:24 -0700 Subject: [PATCH] mm: vmalloc: Only zero-init on vrealloc shrink The common case is to grow reallocations, and since init_on_alloc will have already zeroed the whole allocation, we only need to zero when shrinking the allocation. Fixes: a0309faf1cb0 ("mm: vmalloc: support more granular vrealloc() sizing") Signed-off-by: Kees Cook --- Cc: Andrew Morton Cc: Uladzislau Rezki Cc: --- mm/vmalloc.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 74bd00fd734d..83bedb1559ac 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -4093,8 +4093,8 @@ void *vrealloc_noprof(const void *p, size_t size, gfp_t flags) * would be a good heuristic for when to shrink the vm_area? */ if (size <= old_size) { - /* Zero out "freed" memory. */ - if (want_init_on_free()) + /* Zero out "freed" memory, potentially for future realloc. */ + if (want_init_on_free() || want_init_on_alloc(flags)) memset((void *)p + size, 0, old_size - size); vm->requested_size = size; kasan_poison_vmalloc(p + size, old_size - size); @@ -4107,9 +4107,11 @@ void *vrealloc_noprof(const void *p, size_t size, gfp_t flags) if (size <= alloced_size) { kasan_unpoison_vmalloc(p + old_size, size - old_size, KASAN_VMALLOC_PROT_NORMAL); - /* Zero out "alloced" memory. */ - if (want_init_on_alloc(flags)) - memset((void *)p + old_size, 0, size - old_size); + /* + * No need to zero memory here, as unused memory will have + * already been zeroed at initial allocation time or during + * realloc shrink time. + */ vm->requested_size = size; return (void *)p; } -- 2.34.1 -- Kees Cook