It looks like this was picked up for the 5.17-stable cycles,
but nothing older than that. Might be worth nominating for
5.15-stable. But either way, I've grabbed it now and merged
it to all the 5.15 branches.

Bruce

In message: [linux-yocto][linux-yocto v5.15/standard/base][PATCH 1/1] irq_work: 
use kasan_record_aux_stack_noalloc() record callstack
on 28/11/2022 Liwei Song wrote:

> From: Zqiang <qiang1.zh...@intel.com>
> 
> commit 25934fcfb93c4687ad32fd3d062bcf03457129d4 upstream.
> 
> 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:
> 
>   BUG: sleeping function called from invalid context at 
> kernel/locking/spinlock_rt.c:46
>   in_atomic(): 1, irqs_disabled(): 1, non_block: 0, pid: 239, name: bootlogd
>   Preemption disabled at:
>   [<ffffffffbab1a531>] rt_mutex_slowunlock+0xa1/0x4e0
>   CPU: 3 PID: 239 Comm: bootlogd Tainted: G        W 
> 5.17.1-rt17-yocto-preempt-rt+ #105
>   Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 
> rel-1.15.0-0-g2dd4b9b3f840-prebuilt.qemu.org 04/01/2014
>   Call Trace:
>      __might_resched.cold+0x13b/0x173
>      rt_spin_lock+0x5b/0xf0
>      get_page_from_freelist+0x20c/0x1610
>      __alloc_pages+0x25e/0x5e0
>      __stack_depot_save+0x3c0/0x4a0
>      kasan_save_stack+0x3a/0x50
>      __kasan_record_aux_stack+0xb6/0xc0
>      kasan_record_aux_stack+0xe/0x10
>      irq_work_queue_on+0x6a/0x1c0
>      pull_rt_task+0x631/0x6b0
>      do_balance_callbacks+0x56/0x80
>      __balance_callbacks+0x63/0x90
>      rt_mutex_setprio+0x349/0x880
>      rt_mutex_slowunlock+0x22a/0x4e0
>      rt_spin_unlock+0x49/0x80
>      uart_write+0x186/0x2b0
>      do_output_char+0x2e9/0x3a0
>      n_tty_write+0x306/0x800
>      file_tty_write.isra.0+0x2af/0x450
>      tty_write+0x22/0x30
>      new_sync_write+0x27c/0x3a0
>      vfs_write+0x3f7/0x5d0
>      ksys_write+0xd9/0x180
>      __x64_sys_write+0x43/0x50
>      do_syscall_64+0x44/0x90
>      entry_SYSCALL_64_after_hwframe+0x44/0xae
> 
> Fix it by using kasan_record_aux_stack_noalloc() to avoid the call to
> alloc_pages().
> 
> Link: 
> https://lkml.kernel.org/r/20220402142555.2699582-1-qiang1.zh...@intel.com
> Signed-off-by: Zqiang <qiang1.zh...@intel.com>
> Cc: Andrey Ryabinin <ryabinin....@gmail.com>
> Cc: Alexander Potapenko <gli...@google.com>
> Cc: Andrey Konovalov <andreyk...@gmail.com>
> Cc: Dmitry Vyukov <dvyu...@google.com>
> Signed-off-by: Andrew Morton <a...@linux-foundation.org>
> Signed-off-by: Linus Torvalds <torva...@linux-foundation.org>
> Signed-off-by: Liwei Song <liwei.s...@windriver.com>
> ---
>  kernel/irq_work.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/kernel/irq_work.c b/kernel/irq_work.c
> index f7df715ec28e..7afa40fe5cc4 100644
> --- a/kernel/irq_work.c
> +++ b/kernel/irq_work.c
> @@ -137,7 +137,7 @@ bool irq_work_queue_on(struct irq_work *work, int cpu)
>       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()) {
> -- 
> 2.32.0
> 
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#11968): 
https://lists.yoctoproject.org/g/linux-yocto/message/11968
Mute This Topic: https://lists.yoctoproject.org/mt/95306991/21656
Group Owner: linux-yocto+ow...@lists.yoctoproject.org
Unsubscribe: https://lists.yoctoproject.org/g/linux-yocto/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to