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 8289EC3DA4A for ; Mon, 19 Aug 2024 23:23:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BF51F6B007B; Mon, 19 Aug 2024 19:23:09 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BA4F36B0082; Mon, 19 Aug 2024 19:23:09 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A93726B0083; Mon, 19 Aug 2024 19:23:09 -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 8C31E6B007B for ; Mon, 19 Aug 2024 19:23:09 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 21560415CC for ; Mon, 19 Aug 2024 23:23:09 +0000 (UTC) X-FDA: 82470572898.04.FF490EC Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf12.hostedemail.com (Postfix) with ESMTP id 5EF8940013 for ; Mon, 19 Aug 2024 23:23:07 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=PUld07nM; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf12.hostedemail.com: domain of dakr@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=dakr@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724109724; a=rsa-sha256; cv=none; b=ybH7mG6LVdT8IzkKPu/keTl8SFO+2PmCdGyzYM0cvClZs5iBMbXYjhOW5XcgpMu3J52qqo 7MAKcIizAhbDPdkeZm7/tqgDN+frGcaxfVp1qTYsSVsrit6hT2VBGj4yYiS7EGIJaH4RQX xupBB1oZ5bWtSZUVj3WxTZ8Ovk0Zlh0= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=PUld07nM; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf12.hostedemail.com: domain of dakr@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=dakr@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724109724; 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=7qqvjKZYXUqKGLceACOjrQCEeYZEI72EUAPh//Jrx+g=; b=uGSQuCEGKGJDX02281HSCZidFhyRW8iu1AHUO1mDBBXj3J+cCnPbjgYPNY4p1RSG11ihBK 195RFwnwUi/VOh5jbuOwKXMa9p1bVV9SzQrMiNrirnVGTVX8B016qF2yQsOhf9l2z/SfmY 6Mfaf4TV4Z+i5lqIU77jI6q9k/sN0hw= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 2F85060C07; Mon, 19 Aug 2024 23:23:06 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B497FC32782; Mon, 19 Aug 2024 23:23:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1724109785; bh=i2DLyl8buGbPkl6JZw7wHlrUnacC63KEMxQxiL8QmEQ=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=PUld07nM5iA3DTKK77flqWCxrG3bAA+w+xZiRSqpHw4J8I9hiO2XZPlT9Xu6MBXhV iDc8xKJnuWcOCvMJEPZaYAOkpbq2gCclZ+9DCeXXyLZIbidVgaJsRGhXgI+hIFbny+ 0AvhIe+YJdVop/Gbi7VtCQ8JLC09fswU2iYENNWiWwWLd7Fz9bgRUtip7cpzO1Qhze s9EdeMIOwDdQr38z1wBT9lPfF1bGaIR/OZyhkpuTcQM8yeMrn8dStZK8uXZDcSbhNX 5itq+8Z23pOOpPWy5hsIuCX5k1nRI9l8t0EIZ6s4qJXkpQKZrpwDmteipdIof0/na7 srugzdVCqUsDA== Message-ID: <65fd31b2-51c1-458c-a3fa-fadbde5039fb@kernel.org> Date: Tue, 20 Aug 2024 01:23:00 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 1/2] mm: krealloc: consider spare memory for __GFP_ZERO To: akpm@linux-foundation.org Cc: cl@linux.com, penberg@kernel.org, rientjes@google.com, iamjoonsoo.kim@lge.com, vbabka@suse.cz, roman.gushchin@linux.dev, 42.hyeyoo@gmail.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org References: <20240812223707.32049-1-dakr@kernel.org> From: Danilo Krummrich Content-Language: en-US In-Reply-To: <20240812223707.32049-1-dakr@kernel.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 5EF8940013 X-Stat-Signature: heyxntibe4k4mcj67ito16ueqotqir5b X-Rspam-User: X-HE-Tag: 1724109787-304072 X-HE-Meta: U2FsdGVkX19SUdfaH7u3zNr7JjaDX8jzJBbsvpwPH8nATLFAl0Tmf2r9OfkdiqDGdvkRCHdrAUt2myYtmdWctMggE87d4fzW5MKxMhiVPg4cOTlR/txtpSar+SJJ9YKFcaqrHpvsU1EeGNDPNeJjAQ57cQu9Ny2rsy6vHISQJBZdmrufAbv2Z91z8fGN4lHCH4wHiokdiS3/0RJoVayPRQWmmZFKP7ppx+qIiqOQmlFnP4vhxHa/2PNxoCnqAmUazBs05wlGQIOtM+g2O4JEVKdUGhi3AVa7zs0NxcN61j9FkGKSgfGlyz+b6SGHVqmJUoI8deFa5iyxOnRY6GUm48D2lLPOOTTDYL5dWcLN6P/W8x8ipdt6lanmGDRcVwze0VN2/WxccI6FNL69NRInsJiTHV5+WKtnFmYIW8WhiMPqIAtLBH+uZhc9l+LwYAgkZtcxeGDSQCOoLmbU7jffxDwW65nts4Zd1IVMXIpGSU/rlPaXdtJE+g61uT8GdEbDdb4WzchltF1tiRARY858RXOBPfbTZcOGv2MxXuBAH+6r5gAFg0caAcvuEuBaGHmMaDKaoKKK9Bs4xS1qg3bE4pgQrejkmFyDg3a8zewW1nU7q5qr6in7kc7A6swMLWLev4RoSjIvzmtZdmKmZ2wLw77UhLI14odiG1ETPqIw1z5TtgcxbBW8kjgw8EjFk1Pp07zMCEh8j3ZxKz9s+3BumO/BIgQHrIElSRfWBI5rjdmmMjshgYMy3begKh4YCS26dZTFHVCLmZYVirZWIdzWKsrccT5SW9U18Pq3YhiqxvWvelXeggkeXCyHJoA0Fzl3io6bMjp+WVSMbBuA+ou7O2pGfwrUAQiHHOrUDkNymWqd/e9t3+jOYjNbegnnx5f7/l3QjVh3j3xP0/Uld2Zw5KhBN1GHKdelhSIP+EoDrW6PdeJSH0rmFqcOp58LbUdOiUgFqN+adEx2MMDsp3D LtvG9XzU b+VDKZkI0MNqYhe1xPr8iLcHoslAjJQ4F8KITFqHY8HVP+6rK7j99p9yFtS/3WSzmE1YRfTstaEwR0bFmfzVhBP7XrFGn+f686MHoNXFmVGxovOsdmCZDuqw1HRGcaIApwRGoSpXHi3ReYjtovTet1rOrNNF5JLRWjEYFV7xaSKDP1s0kE9MblzL9qZMr9h/3NKrcJMgmmzlcMhnAUCspK3lEp0tXZgiyGLNiotDs46lABdyWro/ICtN0nP2OwygZvI4pwu/i29ZitvgM6cAB+j4Z9yv0gsEwdjCZ4VMCuzhK6tbZPIjFuYV+uXOcOHEZ5QoyQhgVxHccHZsKAgAXzOkg8yUF921l9Krb3phUtUzsQ+ysqXmTcbQ1AiMW3hOpFRIZLCGQoRVYjnOv95ZTmI81Sg== 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 8/13/24 12:34 AM, Danilo Krummrich wrote: Gentle reminder on this one. > As long as krealloc() is called with __GFP_ZERO consistently, starting > with the initial memory allocation, __GFP_ZERO should be fully honored. > > However, if for an existing allocation krealloc() is called with a > decreased size, it is not ensured that the spare portion the allocation > is zeroed. Thus, if krealloc() is subsequently called with a larger size > again, __GFP_ZERO can't be fully honored, since we don't know the > previous size, but only the bucket size. > > Example: > > buf = kzalloc(64, GFP_KERNEL); > memset(buf, 0xff, 64); > > buf = krealloc(buf, 48, GFP_KERNEL | __GFP_ZERO); > > /* After this call the last 16 bytes are still 0xff. */ > buf = krealloc(buf, 64, GFP_KERNEL | __GFP_ZERO); > > Fix this, by explicitly setting spare memory to zero, when shrinking an > allocation with __GFP_ZERO flag set or init_on_alloc enabled. > > Acked-by: Vlastimil Babka > Signed-off-by: Danilo Krummrich I think I forgot to add: Cc: stable@vger.kernel.org Not sure if there is a useful commit for "Fixes" though. AFAICT, this has been broken since forever. > --- > mm/slab_common.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/mm/slab_common.c b/mm/slab_common.c > index 40b582a014b8..cff602cedf8e 100644 > --- a/mm/slab_common.c > +++ b/mm/slab_common.c > @@ -1273,6 +1273,13 @@ __do_krealloc(const void *p, size_t new_size, gfp_t flags) > > /* If the object still fits, repoison it precisely. */ > if (ks >= new_size) { > + /* Zero out spare memory. */ > + if (want_init_on_alloc(flags)) { > + kasan_disable_current(); > + memset((void *)p + new_size, 0, ks - new_size); > + kasan_enable_current(); > + } > + > p = kasan_krealloc((void *)p, new_size, flags); > return (void *)p; > } > > base-commit: b8dbbb7fe1db26c450a9d2c3302013154b3431df