[v5.15] INFO: rcu detected stall in security_file_permission

0 views
Skip to first unread message

syzbot

unread,
Apr 19, 2024, 4:27:19 AMApr 19
to syzkaller...@googlegroups.com
Hello,

syzbot found the following issue on:

HEAD commit: c52b9710c83d Linux 5.15.156
git tree: linux-5.15.y
console output: https://syzkaller.appspot.com/x/log.txt?x=12f6b37d180000
kernel config: https://syzkaller.appspot.com/x/.config?x=567b6ddc38438433
dashboard link: https://syzkaller.appspot.com/bug?extid=3b1ce9065419d189e6fc
compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40

Unfortunately, I don't have any reproducer for this issue yet.

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/1bd4b9969373/disk-c52b9710.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/10509e89bd25/vmlinux-c52b9710.xz
kernel image: https://storage.googleapis.com/syzbot-assets/a623a4c52eb5/bzImage-c52b9710.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+3b1ce9...@syzkaller.appspotmail.com

rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
rcu: 1-...!: (1 GPs behind) idle=5e7/1/0x4000000000000000 softirq=15596/15597 fqs=8
(detected by 0, t=10502 jiffies, g=20061, q=146)
Sending NMI from CPU 0 to CPUs 1:
NMI backtrace for cpu 1
CPU: 1 PID: 3507 Comm: syz-fuzzer Not tainted 5.15.156-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/27/2024
RIP: 0010:lock_acquire+0x27b/0x4f0 kernel/locking/lockdep.c:5627
Code: 45 4b c7 44 25 00 00 00 00 00 43 c7 44 25 09 00 00 00 00 43 c7 44 25 11 00 00 00 00 66 43 c7 44 25 15 00 00 43 c6 44 25 17 00 <65> 48 8b 04 25 28 00 00 00 48 3b 84 24 00 01 00 00 0f 85 52 02 00
RSP: 0018:ffffc90000dd0b40 EFLAGS: 00000046
RAX: 0000000000000001 RBX: 1ffff920001ba174 RCX: 1ffff920001ba114
RDX: dffffc0000000000 RSI: ffffffff8a8b3c20 RDI: ffffffff8ad8f380
RBP: ffffc90000dd0ca0 R08: dffffc0000000000 R09: fffffbfff1f7ec19
R10: 0000000000000000 R11: dffffc0000000001 R12: 1ffff920001ba170
R13: dffffc0000000000 R14: ffffc90000dd0ba0 R15: 0000000000000046
FS: 000000c000984890(0000) GS:ffff8880b9b00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00005555557e1938 CR3: 0000000072dfa000 CR4: 00000000003506e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
<NMI>
</NMI>
<IRQ>
rcu_lock_acquire+0x2a/0x30 include/linux/rcupdate.h:312
rcu_read_lock include/linux/rcupdate.h:739 [inline]
advance_sched+0x6ce/0x940 net/sched/sch_taprio.c:769
__run_hrtimer kernel/time/hrtimer.c:1686 [inline]
__hrtimer_run_queues+0x598/0xcf0 kernel/time/hrtimer.c:1750
hrtimer_interrupt+0x392/0x980 kernel/time/hrtimer.c:1812
local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1085 [inline]
__sysvec_apic_timer_interrupt+0x139/0x470 arch/x86/kernel/apic/apic.c:1102
sysvec_apic_timer_interrupt+0x8c/0xb0 arch/x86/kernel/apic/apic.c:1096
</IRQ>
<TASK>
asm_sysvec_apic_timer_interrupt+0x16/0x20 arch/x86/include/asm/idtentry.h:638
RIP: 0010:rcu_lockdep_current_cpu_online+0xc7/0x130 kernel/rcu/tree.c:1173
Code: 3c 38 00 74 08 48 89 df e8 26 0b 5f 00 4c 8b 23 49 8d 5e 70 48 89 d8 48 c1 e8 03 42 80 3c 38 00 74 08 48 89 df e8 09 0b 5f 00 <4c> 23 23 75 27 49 83 c6 78 4c 89 f0 48 c1 e8 03 42 80 3c 38 00 74
RSP: 0018:ffffc90002527a48 EFLAGS: 00000246
RAX: 1ffffffff1924766 RBX: ffffffff8c923b30 RCX: 0000000080000000
RDX: ffff8880200dd940 RSI: ffffffff8ad8f360 RDI: ffff8880b9b3b1d8
RBP: ffffc90002527c18 R08: ffffffff83cc8813 R09: fffffbfff1f7ec19
R10: 0000000000000000 R11: dffffc0000000001 R12: 0000000000000002
R13: ffff8880230ff7e0 R14: ffffffff8c923ac0 R15: dffffc0000000000
rcu_read_lock_held_common kernel/rcu/update.c:112 [inline]
rcu_read_lock_held+0x1a/0x40 kernel/rcu/update.c:309
aa_file_perm+0x1dc/0xf60 security/apparmor/file.c:612
common_file_perm+0x173/0x1d0 security/apparmor/lsm.c:475
security_file_permission+0x65/0xa0 security/security.c:1521
rw_verify_area fs/read_write.c:389 [inline]
vfs_read+0x253/0xe10 fs/read_write.c:476
ksys_read+0x1a2/0x2c0 fs/read_write.c:623
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x3b/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x66/0xd0
RIP: 0033:0x40720e
Code: 48 83 ec 38 e8 13 00 00 00 48 83 c4 38 5d c3 cc cc cc cc cc cc cc cc cc cc cc cc cc 49 89 f2 48 89 fa 48 89 ce 48 89 df 0f 05 <48> 3d 01 f0 ff ff 76 15 48 f7 d8 48 89 c1 48 c7 c0 ff ff ff ff 48
RSP: 002b:000000c0009cf840 EFLAGS: 00000216 ORIG_RAX: 0000000000000000
RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 000000000040720e
RDX: 0000000000001000 RSI: 000000c000975000 RDI: 0000000000000003
RBP: 000000c0009cf880 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000216 R12: 000000c0009cf9c0
R13: 000000000000121e R14: 000000c000225d40 R15: 00000000000000a5
</TASK>
rcu: rcu_preempt kthread starved for 10486 jiffies! g20061 f0x0 RCU_GP_WAIT_FQS(5) ->state=0x0 ->cpu=0
rcu: Unless rcu_preempt kthread gets sufficient CPU time, OOM is now expected behavior.
rcu: RCU grace-period kthread stack dump:
task:rcu_preempt state:R running task stack:26752 pid: 15 ppid: 2 flags:0x00004000
Call Trace:
<TASK>
context_switch kernel/sched/core.c:5030 [inline]
__schedule+0x12c4/0x45b0 kernel/sched/core.c:6376
schedule+0x11b/0x1f0 kernel/sched/core.c:6459
schedule_timeout+0x1b9/0x300 kernel/time/timer.c:1914
rcu_gp_fqs_loop+0x2bf/0x1080 kernel/rcu/tree.c:1972
rcu_gp_kthread+0xa4/0x360 kernel/rcu/tree.c:2145
kthread+0x3f6/0x4f0 kernel/kthread.c:334
ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:300
</TASK>
rcu: Stack dump where RCU GP kthread last ran:
NMI backtrace for cpu 0
CPU: 0 PID: 3641 Comm: syz-fuzzer Not tainted 5.15.156-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/27/2024
Call Trace:
<IRQ>
__dump_stack lib/dump_stack.c:88 [inline]
dump_stack_lvl+0x1e3/0x2d0 lib/dump_stack.c:106
nmi_cpu_backtrace+0x46a/0x4a0 lib/nmi_backtrace.c:111
nmi_trigger_cpumask_backtrace+0x181/0x2a0 lib/nmi_backtrace.c:62
trigger_single_cpu_backtrace include/linux/nmi.h:166 [inline]
rcu_check_gp_kthread_starvation+0x1d2/0x240 kernel/rcu/tree_stall.h:487
print_other_cpu_stall+0x137a/0x14d0 kernel/rcu/tree_stall.h:592
check_cpu_stall kernel/rcu/tree_stall.h:745 [inline]
rcu_pending kernel/rcu/tree.c:3932 [inline]
rcu_sched_clock_irq+0xa38/0x1150 kernel/rcu/tree.c:2619
update_process_times+0x196/0x200 kernel/time/timer.c:1818
tick_sched_handle kernel/time/tick-sched.c:254 [inline]
tick_sched_timer+0x386/0x550 kernel/time/tick-sched.c:1473
__run_hrtimer kernel/time/hrtimer.c:1686 [inline]
__hrtimer_run_queues+0x55b/0xcf0 kernel/time/hrtimer.c:1750
hrtimer_interrupt+0x392/0x980 kernel/time/hrtimer.c:1812
local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1085 [inline]
__sysvec_apic_timer_interrupt+0x139/0x470 arch/x86/kernel/apic/apic.c:1102
sysvec_apic_timer_interrupt+0x8c/0xb0 arch/x86/kernel/apic/apic.c:1096
</IRQ>
<TASK>
asm_sysvec_apic_timer_interrupt+0x16/0x20 arch/x86/include/asm/idtentry.h:638
RIP: 0010:csd_lock_wait kernel/smp.c:440 [inline]
RIP: 0010:smp_call_function_many_cond+0xa9d/0xd90 kernel/smp.c:969
Code: 45 8b 7d 00 44 89 fe 83 e6 01 31 ff e8 4c cf 0b 00 41 83 e7 01 75 07 e8 e1 cb 0b 00 eb 41 f3 90 48 b8 00 00 00 00 00 fc ff df <0f> b6 04 03 84 c0 75 11 41 f7 45 00 01 00 00 00 74 1e e8 bc cb 0b
RSP: 0000:ffffc90002f57800 EFLAGS: 00000293
RAX: dffffc0000000000 RBX: 1ffff110173680b9 RCX: ffff88807b605940
RDX: 0000000000000000 RSI: 0000000000000001 RDI: 0000000000000000
RBP: ffffc90002f57940 R08: ffffffff817490f4 R09: fffffbfff1f7ec19
R10: 0000000000000000 R11: dffffc0000000001 R12: 0000000000000001
R13: ffff8880b9b405c8 R14: ffff8880b9a3b3c0 R15: 0000000000000001
on_each_cpu_cond_mask+0x3b/0x80 kernel/smp.c:1135
__flush_tlb_multi arch/x86/include/asm/paravirt.h:87 [inline]
flush_tlb_multi arch/x86/mm/tlb.c:900 [inline]
flush_tlb_mm_range+0x2a5/0x4a0 arch/x86/mm/tlb.c:986
flush_tlb_page arch/x86/include/asm/tlbflush.h:239 [inline]
ptep_clear_flush+0x112/0x150 mm/pgtable-generic.c:97
wp_page_copy+0xdfe/0x2070 mm/memory.c:3085
handle_pte_fault mm/memory.c:4639 [inline]
__handle_mm_fault mm/memory.c:4756 [inline]
handle_mm_fault+0x2a3d/0x5950 mm/memory.c:4854
do_user_addr_fault arch/x86/mm/fault.c:1388 [inline]
handle_page_fault arch/x86/mm/fault.c:1476 [inline]
exc_page_fault+0x271/0x740 arch/x86/mm/fault.c:1532
asm_exc_page_fault+0x22/0x30 arch/x86/include/asm/idtentry.h:568
RIP: 0033:0x434c99
Code: 44 24 48 eb 0f 90 90 48 8b 58 08 48 8d 0c cb 90 90 48 8b 01 84 00 81 e2 ff 01 00 00 48 8d 04 d0 48 8d 40 18 90 48 8b 4c 24 70 <48> 87 08 48 83 c4 58 5d c3 48 89 44 24 08 48 89 5c 24 10 e8 4f a5
RSP: 002b:000000c000095878 EFLAGS: 00010246
RAX: 00007fc77fbd0458 RBX: 00007fc77fbcfc40 RCX: 00007fc7861f5ea0
RDX: 0000000000000000 RSI: 000000c0000456f8 RDI: 00007fc77fbd0440
RBP: 000000c0000958d0 R08: 000000000000d440 R09: 0000000000000003
R10: 0000000000000002 R11: 0000000000000000 R12: 0000000000000000
R13: 0000000000000005 R14: 000000c00049dba0 R15: 0000000000000005
</TASK>


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzk...@googlegroups.com.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup
Reply all
Reply to author
Forward
0 new messages