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 92E4CC6FD18 for ; Wed, 19 Apr 2023 07:27:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 192848E0002; Wed, 19 Apr 2023 03:27:36 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 141728E0001; Wed, 19 Apr 2023 03:27:36 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0308A8E0002; Wed, 19 Apr 2023 03:27:35 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id E7B8E8E0001 for ; Wed, 19 Apr 2023 03:27:35 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id B2CDDC01EE for ; Wed, 19 Apr 2023 07:27:35 +0000 (UTC) X-FDA: 80697310470.18.FBC54E8 Received: from mail-io1-f44.google.com (mail-io1-f44.google.com [209.85.166.44]) by imf13.hostedemail.com (Postfix) with ESMTP id 77C7120011 for ; Wed, 19 Apr 2023 07:27:33 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=coR7f4X0; spf=pass (imf13.hostedemail.com: domain of elver@google.com designates 209.85.166.44 as permitted sender) smtp.mailfrom=elver@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=1681889253; 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=4+jpKL/ey0sd/NtAlMmoATIMCLxVjtS/CGh7GhFIsWo=; b=SDE7Gw61zJ6Qh0FCOY5UKe+UZV2wVFiC8VLBYcAvFCpgL7fGEZvrTF8G7YxtraYlR/b2g6 Mw1wbkUFvlblE7kw96VYKmQL3RoZw84VqexoJl6tp6kJNvx09LkpIjCdyaEq1k73JhNeaw pYmD1OuDAM13DECSsgbJgiZM3mBPmbQ= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=coR7f4X0; spf=pass (imf13.hostedemail.com: domain of elver@google.com designates 209.85.166.44 as permitted sender) smtp.mailfrom=elver@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1681889253; a=rsa-sha256; cv=none; b=EoTglAu+QtjfEuIUxuhOKXOgDNeJ6T0nDRluOMSbv+g9OoctGcOIB7xv8N2U9l3+HPt6Xe 8hZ1SjNYAH5FDgL3HtiiXP20Jw4W7DgZTWMhcLVxaGEqwhiTrHSp5eLVHkZko2mir0AEJa p4JY/+gwszDZSUDJXch871ccaUl7MRM= Received: by mail-io1-f44.google.com with SMTP id ca18e2360f4ac-761c5dc0527so182096339f.3 for ; Wed, 19 Apr 2023 00:27:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1681889252; x=1684481252; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=4+jpKL/ey0sd/NtAlMmoATIMCLxVjtS/CGh7GhFIsWo=; b=coR7f4X00Y7ryHU+Z4idQxfmdjqlGHCJGx78NGcPk412M6bXDwkjuOIVK94sqc/Hid e0ACG+uXDTggkYZE4qKSFzPGAuMFi3UuZJ0xxnZUGCEIWdgXeEcPmmkuDUTDwfdA6fD8 jTp0VIhCVgFrjPfC7np8hlkuFAQnoQVR0Tv2YYAxzWkCNn7kMJ9ktqFrRjRWMjZ4R3b2 chUONMbC4iu6lpaLBuYppB0/9Gtu66Ub0Nbhd+zaK5aQ1N1Sig5zOcm6Q4SQWPi5dylC 9wBlLZ3J6q5VpyDK3gwR5gotYWOqf8YVRSpqfA9aRyiuP7bXw/hm009LivdPHOVZmIy4 wIBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681889252; x=1684481252; h=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=4+jpKL/ey0sd/NtAlMmoATIMCLxVjtS/CGh7GhFIsWo=; b=AI0MeF0bts1MSybEv2ZQIoFaOxZGhrDZFDPVcb15GjqNtWecubRdUJ2QfoWGigRZkt gg1gAZtuZCaCJ+PMhuJx6bOKW6Fygxq0ZgfLbpoiF3w/TRGT1J8I34IUiu4Y6hPT1DkF mAycfFkz0GYC9dVoOZ85TFQfk1WhUumDhdy9zv8GrsGhlpwM8Y91FoGrlaSP/oaga4dU snQdgSFFe4ReWFD0eWnua68QAyq7SAeZgYUOeu/GXp/4q9H6+duhZXByidSu7H9itlv0 1EdDCKJ6YBtWLa7oKNTsdqLPQzmPL5pXgghnm9EOCMpFl/J4njUdMVsLooXPLp8Hi5K3 twGg== X-Gm-Message-State: AAQBX9d5QpLiRUJPGKA52Xc9KJeofuyp5xb5qPj46q2essxZO22ylffp rC2LG67txTlSuDOUEQWlL9SEFfZaAsnEOzhOe2XHfw== X-Google-Smtp-Source: AKy350blTI5TONuLs8GnSZz6w9ypGBawnp0MjSqjci2SqFJxc5IxHGUzrRALp6mBT4UpCH03jK6aBf0yNJ5KuK4YBgU= X-Received: by 2002:a6b:e618:0:b0:760:ebae:4f8d with SMTP id g24-20020a6be618000000b00760ebae4f8dmr4016341ioh.8.1681889252043; Wed, 19 Apr 2023 00:27:32 -0700 (PDT) MIME-Version: 1.0 References: <20230327120019.1027640-1-qiang1.zhang@intel.com> In-Reply-To: <20230327120019.1027640-1-qiang1.zhang@intel.com> From: Marco Elver Date: Wed, 19 Apr 2023 09:26:54 +0200 Message-ID: Subject: Re: [PATCH v2] kasan: Fix lockdep report invalid wait context To: Zqiang Cc: ryabinin.a.a@gmail.com, glider@google.com, andreyknvl@gmail.com, dvyukov@google.com, akpm@linux-foundation.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Thomas Gleixner , Sebastian Andrzej Siewior Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 77C7120011 X-Stat-Signature: bpgbs4we9jgm4dusb5ktz1fi3ftg5tzn X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1681889253-322945 X-HE-Meta: U2FsdGVkX19CAm6r9uAejvYWoHUKmLwiOgoq6jvLnZP2ZWm3ZiomAaxj6PFqFfvaCQr62tUskk/PwLTpU+Y1eCMjBSuoh0JIZhdEo6nXDGsSxe3Irqh3gRfnlCq9PJkoXkEViPHXK3uup3sWXx0Jcc4pVSfSgTPIzj3DVsxJea7HA2mBAaWk7JU3kovHyDYmKz5F1L0WMlrct01HVk1/RZrzMtvbHA2BGVh1UdsRVa/AUvKo1tMldIG3fMoNZ6g3JE2mdyenKIouSelJZgI/3E6g1NNUbi3D4B/Vydlmg0i7lipWkxxqHr6uQYj6Ucuf3h0y/9FMRl+Fij7nT+41onn9Pw7Da51uV4Ho3pr2ry//4LpDhhBrciPHu8IsbBLATe8AkSBbIFgCeWTgfe0Eyy/QE99WKLtBYTzDoXVB1Flzok70C1TKxPOWpwT2LCdZfoEhWXCRx4dxxD3Jk5QmPF3ENZZbfmiiDtbLdElTwJ/V+YrLtTUYAM4OsmM4EfJJYzgDlYhGMsO28e71QvBTo2dmx92wNIieJP/CA2Ekos7hsvBUi2dMuSpSWKP7pLWEKNl1TheCHBIBsFRBFF5VCusTMgP1gOAEzjmeFYqVxG5o3PALaJ9XJYZmiate+CRloCKx2mPINXW7T27JyKGY60TPEfKSdj2PQPX0sUh7O4pNIHyhiyTIXUy6D47WCQfwJ0sQNXcWj7x4A5FSDImSekVlbs31EYbb4nkA5WFEHakqrRKvAXCcLkKLGOkrCKAQrDtHoIdRiPzPMlxwWI20ICJv6wO0N7woBWHSNYWpYSx+ta4Syur8jlQmnUwquATYig5uSVClbuui2hDDbu1G3NPKa1tLYsKvNZbAyR6na6JisD5yFQFGGnOwnKXVFlc0D2XIwCqtPdga/G2ZzsT0zGSGVTk1HB7i9RXlStTvS4JeCuFisyEb3UWPAGQryX6qatFfggXhXsJGo/I+hxj WTdqx75W Sg1PRX28ak6yxpDs0ca+5Zy891C8IkStJ0mVT20YCP5f3Ogv+9x2qLZSfJhSlv/35fxJ6KFrm8JiUnyZil8nTIsIK3xu9I0jgD5iBa2BZUpPqVRSx55xJra7LERCmNQXk3ok1jZKnoqNpGTbRjhhuPYgt+FC8spgSCMVotB+fJexx3Zrc8c/h3tljZWYXOD4m4u3/6Jn13WmQJ4dko039MJtkNKzfmOy7FB0cET0jILElnwtTgSWxjJwouDxNCnzMzdvL667Bglzj6LQl0/NTU5G936sPyZvgglWXIAgGf44TGJX+36ZeVhOp+nw/sv3rDn9MVxWLeDEW9fHyY1T9Npn0tcR/l1LtCDkQU4t1y4I49wrs7Tdml0JG1Am8XZxdlv9CFm1sU9YYFEOCE6ppUgcolQloCGRs4oTncH1hRP4ZYLiFXDfGH+as68Aoa8UGYkKwD0aNodQAzE5GS4dkuUITpA== 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: On Mon, 27 Mar 2023 at 13:48, Zqiang wrote: > > For kernels built with the following options and booting > > CONFIG_SLUB=y > CONFIG_DEBUG_LOCKDEP=y > CONFIG_PROVE_LOCKING=y > CONFIG_PROVE_RAW_LOCK_NESTING=y > > [ 0.523115] [ BUG: Invalid wait context ] > [ 0.523315] 6.3.0-rc1-yocto-standard+ #739 Not tainted > [ 0.523649] ----------------------------- > [ 0.523663] swapper/0/0 is trying to lock: > [ 0.523663] ffff888035611360 (&c->lock){....}-{3:3}, at: put_cpu_partial+0x2e/0x1e0 > [ 0.523663] other info that might help us debug this: > [ 0.523663] context-{2:2} > [ 0.523663] no locks held by swapper/0/0. > [ 0.523663] stack backtrace: > [ 0.523663] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.3.0-rc1-yocto-standard+ #739 > [ 0.523663] Call Trace: > [ 0.523663] > [ 0.523663] dump_stack_lvl+0x64/0xb0 > [ 0.523663] dump_stack+0x10/0x20 > [ 0.523663] __lock_acquire+0x6c4/0x3c10 > [ 0.523663] lock_acquire+0x188/0x460 > [ 0.523663] put_cpu_partial+0x5a/0x1e0 > [ 0.523663] __slab_free+0x39a/0x520 > [ 0.523663] ___cache_free+0xa9/0xc0 > [ 0.523663] qlist_free_all+0x7a/0x160 > [ 0.523663] per_cpu_remove_cache+0x5c/0x70 > [ 0.523663] __flush_smp_call_function_queue+0xfc/0x330 > [ 0.523663] generic_smp_call_function_single_interrupt+0x13/0x20 > [ 0.523663] __sysvec_call_function+0x86/0x2e0 > [ 0.523663] sysvec_call_function+0x73/0x90 > [ 0.523663] > [ 0.523663] > [ 0.523663] asm_sysvec_call_function+0x1b/0x20 > [ 0.523663] RIP: 0010:default_idle+0x13/0x20 > [ 0.523663] RSP: 0000:ffffffff83e07dc0 EFLAGS: 00000246 > [ 0.523663] RAX: 0000000000000000 RBX: ffffffff83e1e200 RCX: ffffffff82a83293 > [ 0.523663] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffffff8119a6b1 > [ 0.523663] RBP: ffffffff83e07dc8 R08: 0000000000000001 R09: ffffed1006ac0d66 > [ 0.523663] R10: ffff888035606b2b R11: ffffed1006ac0d65 R12: 0000000000000000 > [ 0.523663] R13: ffffffff83e1e200 R14: ffffffff84a7d980 R15: 0000000000000000 > [ 0.523663] default_idle_call+0x6c/0xa0 > [ 0.523663] do_idle+0x2e1/0x330 > [ 0.523663] cpu_startup_entry+0x20/0x30 > [ 0.523663] rest_init+0x152/0x240 > [ 0.523663] arch_call_rest_init+0x13/0x40 > [ 0.523663] start_kernel+0x331/0x470 > [ 0.523663] x86_64_start_reservations+0x18/0x40 > [ 0.523663] x86_64_start_kernel+0xbb/0x120 > [ 0.523663] secondary_startup_64_no_verify+0xe0/0xeb > [ 0.523663] > > The local_lock_irqsave() is invoked in put_cpu_partial() and happens > in IPI context, due to the CONFIG_PROVE_RAW_LOCK_NESTING=y (the > LD_WAIT_CONFIG not equal to LD_WAIT_SPIN), so acquire local_lock in > IPI context will trigger above calltrace. > > This commit therefore move qlist_free_all() from hard-irq context to > task context. > > Signed-off-by: Zqiang PROVE_RAW_LOCK_NESTING is for the benefit of RT kernels. So it's unclear if this is fixing anything on non-RT kernels, besides the lockdep warning. I'd be inclined to say that having unified code for RT and non-RT kernels is better. Acked-by: Marco Elver +Cc RT folks > --- > v1->v2: > Modify the commit information and add Cc. > > mm/kasan/quarantine.c | 34 ++++++++-------------------------- > 1 file changed, 8 insertions(+), 26 deletions(-) > > diff --git a/mm/kasan/quarantine.c b/mm/kasan/quarantine.c > index 75585077eb6d..152dca73f398 100644 > --- a/mm/kasan/quarantine.c > +++ b/mm/kasan/quarantine.c > @@ -99,7 +99,6 @@ static unsigned long quarantine_size; > static DEFINE_RAW_SPINLOCK(quarantine_lock); > DEFINE_STATIC_SRCU(remove_cache_srcu); > > -#ifdef CONFIG_PREEMPT_RT > struct cpu_shrink_qlist { > raw_spinlock_t lock; > struct qlist_head qlist; > @@ -108,7 +107,6 @@ struct cpu_shrink_qlist { > static DEFINE_PER_CPU(struct cpu_shrink_qlist, shrink_qlist) = { > .lock = __RAW_SPIN_LOCK_UNLOCKED(shrink_qlist.lock), > }; > -#endif > > /* Maximum size of the global queue. */ > static unsigned long quarantine_max_size; > @@ -319,16 +317,6 @@ static void qlist_move_cache(struct qlist_head *from, > } > } > > -#ifndef CONFIG_PREEMPT_RT > -static void __per_cpu_remove_cache(struct qlist_head *q, void *arg) > -{ > - struct kmem_cache *cache = arg; > - struct qlist_head to_free = QLIST_INIT; > - > - qlist_move_cache(q, &to_free, cache); > - qlist_free_all(&to_free, cache); > -} > -#else > static void __per_cpu_remove_cache(struct qlist_head *q, void *arg) > { > struct kmem_cache *cache = arg; > @@ -340,7 +328,6 @@ static void __per_cpu_remove_cache(struct qlist_head *q, void *arg) > qlist_move_cache(q, &sq->qlist, cache); > raw_spin_unlock_irqrestore(&sq->lock, flags); > } > -#endif > > static void per_cpu_remove_cache(void *arg) > { > @@ -362,6 +349,8 @@ void kasan_quarantine_remove_cache(struct kmem_cache *cache) > { > unsigned long flags, i; > struct qlist_head to_free = QLIST_INIT; > + int cpu; > + struct cpu_shrink_qlist *sq; > > /* > * Must be careful to not miss any objects that are being moved from > @@ -372,20 +361,13 @@ void kasan_quarantine_remove_cache(struct kmem_cache *cache) > */ > on_each_cpu(per_cpu_remove_cache, cache, 1); > > -#ifdef CONFIG_PREEMPT_RT > - { > - int cpu; > - struct cpu_shrink_qlist *sq; > - > - for_each_online_cpu(cpu) { > - sq = per_cpu_ptr(&shrink_qlist, cpu); > - raw_spin_lock_irqsave(&sq->lock, flags); > - qlist_move_cache(&sq->qlist, &to_free, cache); > - raw_spin_unlock_irqrestore(&sq->lock, flags); > - } > - qlist_free_all(&to_free, cache); > + for_each_online_cpu(cpu) { > + sq = per_cpu_ptr(&shrink_qlist, cpu); > + raw_spin_lock_irqsave(&sq->lock, flags); > + qlist_move_cache(&sq->qlist, &to_free, cache); > + raw_spin_unlock_irqrestore(&sq->lock, flags); > } > -#endif > + qlist_free_all(&to_free, cache); > > raw_spin_lock_irqsave(&quarantine_lock, flags); > for (i = 0; i < QUARANTINE_BATCHES; i++) { > -- > 2.25.1 > > -- > You received this message because you are subscribed to the Google Groups "kasan-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an email to kasan-dev+unsubscribe@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/msgid/kasan-dev/20230327120019.1027640-1-qiang1.zhang%40intel.com.