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 EA406C47077 for ; Tue, 9 Jan 2024 23:53:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 75E1F6B00BB; Tue, 9 Jan 2024 18:53:08 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 6E7966B00BC; Tue, 9 Jan 2024 18:53:08 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5881B6B00BD; Tue, 9 Jan 2024 18:53:08 -0500 (EST) 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 4389E6B00BB for ; Tue, 9 Jan 2024 18:53:08 -0500 (EST) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 19E89A0A29 for ; Tue, 9 Jan 2024 23:53:08 +0000 (UTC) X-FDA: 81661426056.05.2E1CE8D Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf09.hostedemail.com (Postfix) with ESMTP id 21D02140014 for ; Tue, 9 Jan 2024 23:53:05 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=GQeKOsM9; spf=pass (imf09.hostedemail.com: domain of "SRS0=wVmW=IT=paulmck-ThinkPad-P17-Gen-1.home=paulmck@kernel.org" designates 139.178.84.217 as permitted sender) smtp.mailfrom="SRS0=wVmW=IT=paulmck-ThinkPad-P17-Gen-1.home=paulmck@kernel.org"; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1704844386; a=rsa-sha256; cv=none; b=A5499M7jvtfe8i/b8/vL5uT1lLtgWiXpRsarzKc1WvZrRtIznBlWMH1yrOl3zb91GRrcIA Sx15xORdoCC6sLYNEtE0bVENZwAjR6tpCie7J5wBz1+BAyQTPGOH4wrTorlYRsbzhB2VIO q/v/94VUmn0uwBGUvIgZfR557ICg520= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=GQeKOsM9; spf=pass (imf09.hostedemail.com: domain of "SRS0=wVmW=IT=paulmck-ThinkPad-P17-Gen-1.home=paulmck@kernel.org" designates 139.178.84.217 as permitted sender) smtp.mailfrom="SRS0=wVmW=IT=paulmck-ThinkPad-P17-Gen-1.home=paulmck@kernel.org"; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1704844386; h=from:from:sender:reply-to: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=b78T4QAaevtfL1Fq+idZdtKe0I+xsPiT4okJQOR0Sog=; b=PVkcl+nAMyi/ii8Q3HIllev6/70gefKAX7Z/7+30M5QkrVrnvU3yiNi7E2CdvEQCB6ZiEQ ITDiYXuvttXJWbStsVs9/KcjGksE++zsf/EqMn4tv4z6mxkWx95LlGunyOdaFki+2AqakA hm8lK0Dpt8ja/rl5051flmGHZagaF/0= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 0F4CF6153B; Tue, 9 Jan 2024 23:53:05 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id ADA85C433F1; Tue, 9 Jan 2024 23:53:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704844384; bh=vwKOfafdCokp96wmQa5YnL/u1Ge2PlNEhiViBts/sFs=; h=Date:From:To:Cc:Subject:Reply-To:References:In-Reply-To:From; b=GQeKOsM9loQGp1zsYZo2Ns4aITy4Bx5NsNZ6NpeGLfODyY2WIFfPB11V+dLP4hQP/ wZw/arEokJSSZIdgE+A5vuuFSBVevUvYvs+uPBjegwHctA3P+MlF/9Cx1b1eEMLC8U x35olFTHZDwmeBdk+F9EbS9pcG2HbFz821JRhGjgNAj1GMO1HYD+TpnjrtVTF8UYcz sjSx8BYq3e1nKhokkvC33C4ejGxWbNBOkUzNtbnW4h3H6iOnSH3m+9/fVxi0K2tKJK wNiKbe0ozv259XI60pWL3eO84tIipxR9aTBLBSHbL0GACiQD71UXRjNphMaSoBUZee DkVecu0kPFhJA== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 485A0CE15CD; Tue, 9 Jan 2024 15:53:04 -0800 (PST) Date: Tue, 9 Jan 2024 15:53:04 -0800 From: "Paul E. McKenney" To: andrey.konovalov@linux.dev Cc: Andrew Morton , Andrey Konovalov , Marco Elver , Alexander Potapenko , Dmitry Vyukov , Andrey Ryabinin , kasan-dev@googlegroups.com, linux-mm@kvack.org, Liam.Howlett@oracle.com, linux-kernel@vger.kernel.org Subject: Re: [PATCH mm] kasan: avoid resetting aux_lock Message-ID: Reply-To: paulmck@kernel.org References: <20240109221234.90929-1-andrey.konovalov@linux.dev> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240109221234.90929-1-andrey.konovalov@linux.dev> X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 21D02140014 X-Stat-Signature: p539y3jwmujwf6kt8a4cyhb7xr5ytgyw X-Rspam-User: X-HE-Tag: 1704844385-886461 X-HE-Meta: U2FsdGVkX1/z9g20KxWydn58C/RCu0Nqrv063bwjD7TgPHN91Em75c99/b1GlhBIl9bYWaQS/oC6N6gfKBchlAbgN9pkSmdz4YegUlzzhEgnvyCSpAY13Jy9epCe42W6r7Qrf7NpPg9ElikTU2SfLz3d6KFi5ejL/bahPS7jJNJTGEGx+J+0mbAXEg6vdg5elYR141yyVfGnW/unWbz29s6QSjPN2+cZt//FaOXIKUdZWTFg4OwR4BUlBGZiqk1XzHrTLcKOm9Nd6oS4yQ3lVEk6rXfNiX2sKBr5O7T6Yz88VSZQQM5x7HkUwANaapACiwfl/c+FmalVoY+9Rt0vXQOe/dwpBwNWSoBYD1PwfSCDnVuBz4fMl7K+YxPstMyi63Ga60SPRjK4sdwTaJJyZMTFv8jOV70nHGhqPq8sTZlt8aN35vjhpVC5V6XnEmGIO4gF6bS1zS9mI0zHEbf4yJYQThepN/eaXKGmaV1LiN0TGrBSAkWH2VBf48d1q8l5B/0g7hI4sPmejmSbVaova0lxMfIK+qItiUCGadbfqTnGc5uR9uPZ/oDW1dkMJngx9GjL6eaA5ICwb+bILGgJ6Ij3Rkr/sqyDss1YPBR9IbT7yALBuLWEeg5zjSXnge2CBnwpM9L8Y++b6hN8xJui5ilE8iOWJ04kXstOKbEzEeMsmgqCx/tzzkWrqd4BX2N3+05aGUkbbr6+c59ns0buWpHfigXqbyc/pguLnwi79VFOeQH2cNb//5NI3O3lgFpE2UXzrtsqcWrsDW8Kk3/L/lut77QB4HsRJxi5BM4ochhHWvxWyHDhzFjiTid+IsgSuUKlC0K51GaX3rfg+/F+nSKivpxz7UFLot+OiWGEYLBi2qVQjdLMHDqvBhbP5jkpkoHu7PYTpuPGCGys+B9hM0R9FUKKfgxhpA804x35WfkS3q+koWOacSS9TiLro37oMHpkD5Igq6WTa6xm2yc IeP0x0Wm S7pS6hSVwoBERvwWwr3knUvG7PPsAnPx3pngVvUEBTKRE/+4/Cp03pxCZoWyjRZybhYj5+VaTmplePzUT+YwCkCIefhc9EqfJ902ACx7p8lPYY5KFmpE2oMlBrqX9sKZrTapYTnuDInhYHSq3f8Zr5zhmZZPuqE+3bHNs9RpkJMyBeq8Nbhx+5cnForVhoSBB4AgQVFBset3xTzgt20DOh8a54wLdSB3HiVW145NqVwq5qgLLv/sXqcQl0TOknHNSSCQyjA/40XA8eyFjIgw2JIxDXkFBi9RmVIvjQnjpPowSTom52n7ZaStVef5NJQz33XXUBb4MaerspC0r4J5pYlI49nfMsqcULHVxNjvvooqilpIb+F7rxKLg3Vz9oSCTWWOeWjNZGMVMjBGbAKgAGr1miPaBd/iz3CWdr33QfXsx/I0Ps1GiHzZWLyJG6Woapbz4X2y4eMAt5q+AOkkCNAJA6fnofFZK8JoLB7/DkQR/XWv1IYPGavzLcZfrbiAOSEXEERxhHoS2I2mLdeq3Q8BOyBAbTsXmP49fT2qd1GsWB93taBEUKikIvhPbTq9485LH0hveeLCAcvBmWRES3Zim0925gWnkUzSAYfbLmN+ErLKIuHB6ZXBjyWPryzaRXjXZoGSYJueBc1D+5GAZocXObUZxIjJSGL2lF77JZOS7zQz8pkPSQ05V6I7bQlbnV+MfQmAYVq2n3HR0ioLX7VnD+suk5HEjx3d4+nNekpnuJhk= 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 Tue, Jan 09, 2024 at 11:12:34PM +0100, andrey.konovalov@linux.dev wrote: > From: Andrey Konovalov > > With commit 63b85ac56a64 ("kasan: stop leaking stack trace handles"), > KASAN zeroes out alloc meta when an object is freed. The zeroed out data > purposefully includes alloc and auxiliary stack traces but also > accidentally includes aux_lock. > > As aux_lock is only initialized for each object slot during slab > creation, when the freed slot is reallocated, saving auxiliary stack > traces for the new object leads to lockdep reports when taking the > zeroed out aux_lock. > > Arguably, we could reinitialize aux_lock when the object is reallocated, > but a simpler solution is to avoid zeroing out aux_lock when an object > gets freed. > > Reported-by: Paul E. McKenney > Closes: https://lore.kernel.org/linux-next/5cc0f83c-e1d6-45c5-be89-9b86746fe731@paulmck-laptop/ > Fixes: 63b85ac56a64 ("kasan: stop leaking stack trace handles") > Signed-off-by: Andrey Konovalov Very good! Tested-by: Paul E. McKenney > --- > mm/kasan/generic.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/mm/kasan/generic.c b/mm/kasan/generic.c > index 24c13dfb1e94..df6627f62402 100644 > --- a/mm/kasan/generic.c > +++ b/mm/kasan/generic.c > @@ -487,6 +487,7 @@ void kasan_init_object_meta(struct kmem_cache *cache, const void *object) > __memset(alloc_meta, 0, sizeof(*alloc_meta)); > > /* > + * Prepare the lock for saving auxiliary stack traces. > * Temporarily disable KASAN bug reporting to allow instrumented > * raw_spin_lock_init to access aux_lock, which resides inside > * of a redzone. > @@ -510,8 +511,13 @@ static void release_alloc_meta(struct kasan_alloc_meta *meta) > stack_depot_put(meta->aux_stack[0]); > stack_depot_put(meta->aux_stack[1]); > > - /* Zero out alloc meta to mark it as invalid. */ > - __memset(meta, 0, sizeof(*meta)); > + /* > + * Zero out alloc meta to mark it as invalid but keep aux_lock > + * initialized to avoid having to reinitialize it when another object > + * is allocated in the same slot. > + */ > + __memset(&meta->alloc_track, 0, sizeof(meta->alloc_track)); > + __memset(meta->aux_stack, 0, sizeof(meta->aux_stack)); > } > > static void release_free_meta(const void *object, struct kasan_free_meta *meta) > -- > 2.25.1 >