From patchwork Fri Apr 15 02:13:34 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Morton X-Patchwork-Id: 12814202 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 E98BAC433F5 for ; Fri, 15 Apr 2022 02:13:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 829476B0075; Thu, 14 Apr 2022 22:13:37 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7D9E36B007D; Thu, 14 Apr 2022 22:13:37 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6A2CB6B007E; Thu, 14 Apr 2022 22:13:37 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (relay.hostedemail.com [64.99.140.28]) by kanga.kvack.org (Postfix) with ESMTP id 5B4046B0075 for ; Thu, 14 Apr 2022 22:13:37 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay11.hostedemail.com (Postfix) with ESMTP id 2BF7C80D2D for ; Fri, 15 Apr 2022 02:13:37 +0000 (UTC) X-FDA: 79357492074.05.17782D3 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by imf04.hostedemail.com (Postfix) with ESMTP id 885CF40005 for ; Fri, 15 Apr 2022 02:13:36 +0000 (UTC) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 2613EB82B5F; Fri, 15 Apr 2022 02:13:35 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B8140C385A7; Fri, 15 Apr 2022 02:13:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org; s=korg; t=1649988814; bh=avesztKyswte+MiaCofRGBooc6PzYRiWU186/DEL4nw=; h=Date:To:From:In-Reply-To:Subject:From; b=C1xBvHWjhXQRpvlx51OUvGJVlWdAE0VnCijcdALz8u3jaNCS7/qQRiorWawboiYXi ERjgCERK4oV6fCYYU+wwtbSvp34l3fqD04tOBzk7BkFaUzLN6ZulVWWbA0iPY4zYwT eTjVW4iW+TvoJu66tXi98UuQ9LcRBFkip3wQDfoo= Date: Thu, 14 Apr 2022 19:13:34 -0700 To: ryabinin.a.a@gmail.com,glider@google.com,dvyukov@google.com,andreyknvl@gmail.com,qiang1.zhang@intel.com,akpm@linux-foundation.org,patches@lists.linux.dev,linux-mm@kvack.org,mm-commits@vger.kernel.org,torvalds@linux-foundation.org,akpm@linux-foundation.org From: Andrew Morton In-Reply-To: <20220414191240.9f86d15a3e3afd848a9839a6@linux-foundation.org> Subject: [patch 04/14] irq_work: use kasan_record_aux_stack_noalloc() record callstack Message-Id: <20220415021334.B8140C385A7@smtp.kernel.org> X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 885CF40005 X-Rspam-User: Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=C1xBvHWj; dmarc=none; spf=pass (imf04.hostedemail.com: domain of akpm@linux-foundation.org designates 145.40.68.75 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org X-Stat-Signature: k11889dt4gi8xako1zpcbnx9cmntdija X-HE-Tag: 1649988816-766765 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: From: Zqiang Subject: irq_work: use kasan_record_aux_stack_noalloc() record callstack [ 4.113128] BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:46 [ 4.113132] in_atomic(): 1, irqs_disabled(): 1, non_block: 0, pid: 239, name: bootlogd [ 4.113149] Preemption disabled at: [ 4.113149] [] rt_mutex_slowunlock+0xa1/0x4e0 [ 4.113154] CPU: 3 PID: 239 Comm: bootlogd Tainted: G W 5.17.1-rt17-yocto-preempt-rt+ #105 [ 4.113157] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.15.0-0-g2dd4b9b3f840-prebuilt.qemu.org 04/01/2014 [ 4.113159] Call Trace: [ 4.113160] [ 4.113161] dump_stack_lvl+0x60/0x8c [ 4.113165] dump_stack+0x10/0x12 [ 4.113167] __might_resched.cold+0x13b/0x173 [ 4.113172] rt_spin_lock+0x5b/0xf0 [ 4.113179] get_page_from_freelist+0x20c/0x1610 [ 4.113208] __alloc_pages+0x25e/0x5e0 [ 4.113222] __stack_depot_save+0x3c0/0x4a0 [ 4.113228] kasan_save_stack+0x3a/0x50 [ 4.113322] __kasan_record_aux_stack+0xb6/0xc0 [ 4.113326] kasan_record_aux_stack+0xe/0x10 [ 4.113329] irq_work_queue_on+0x6a/0x1c0 [ 4.113333] pull_rt_task+0x631/0x6b0 [ 4.113343] do_balance_callbacks+0x56/0x80 [ 4.113346] __balance_callbacks+0x63/0x90 [ 4.113350] rt_mutex_setprio+0x349/0x880 [ 4.113366] rt_mutex_slowunlock+0x22a/0x4e0 [ 4.113377] rt_spin_unlock+0x49/0x80 [ 4.113380] uart_write+0x186/0x2b0 [ 4.113385] do_output_char+0x2e9/0x3a0 [ 4.113389] n_tty_write+0x306/0x800 [ 4.113413] file_tty_write.isra.0+0x2af/0x450 [ 4.113422] tty_write+0x22/0x30 [ 4.113425] new_sync_write+0x27c/0x3a0 [ 4.113446] vfs_write+0x3f7/0x5d0 [ 4.113451] ksys_write+0xd9/0x180 [ 4.113463] __x64_sys_write+0x43/0x50 [ 4.113466] do_syscall_64+0x44/0x90 [ 4.113469] entry_SYSCALL_64_after_hwframe+0x44/0xae On PREEMPT_RT kernel and KASAN is enabled. the kasan_record_aux_stack() may call alloc_pages(), and the rt-spinlock will be acquired, if currently in atomic context, will trigger warning. fix it by use kasan_record_aux_stack_noalloc() to avoid call alloc_pages(). Link: https://lkml.kernel.org/r/20220402142555.2699582-1-qiang1.zhang@intel.com Signed-off-by: Zqiang Cc: Andrey Ryabinin Cc: Alexander Potapenko Cc: Andrey Konovalov Cc: Dmitry Vyukov Signed-off-by: Andrew Morton --- kernel/irq_work.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/kernel/irq_work.c~irq_work-use-kasan_record_aux_stack_noalloc-record-callstack +++ a/kernel/irq_work.c @@ -137,7 +137,7 @@ bool irq_work_queue_on(struct irq_work * if (!irq_work_claim(work)) return false; - kasan_record_aux_stack(work); + kasan_record_aux_stack_noalloc(work); preempt_disable(); if (cpu != smp_processor_id()) {