syzbot
WARNING: suspicious RCU usage in memfd_fcntl
Status:
fixed on 2019/12/21 01:54
Reported-by: syzbot+b5b42e3bd0551159cf1b@syzkaller.appspotmail.com
Fix commit:
e4cc9c81e230
memfd: Use radix_tree_deref_slot_protected to avoid the warning.
First crash: 2491d, last: 2469d
Sample crash report:
kauditd_printk_skb: 2 callbacks suppressed
audit: type=1400 audit(1572784890.737:36): avc: denied { map } for pid=7552 comm="syz-executor659" path="/root/syz-executor659710954" dev="sda1" ino=16483 scontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=file permissive=1
=============================
WARNING: suspicious RCU usage
4.19.81 #0 Not tainted
-----------------------------
include/linux/radix-tree.h:241 suspicious rcu_dereference_check() usage!
other info that might help us debug this:
rcu_scheduler_active = 2, debug_locks = 1
2 locks held by syz-executor659/7552:
#0: 00000000c07c9d7f (&sb->s_type->i_mutex_key#12){+.+.}, at: inode_lock include/linux/fs.h:747 [inline]
#0: 00000000c07c9d7f (&sb->s_type->i_mutex_key#12){+.+.}, at: memfd_add_seals mm/memfd.c:199 [inline]
#0: 00000000c07c9d7f (&sb->s_type->i_mutex_key#12){+.+.}, at: memfd_fcntl+0x235/0x1750 mm/memfd.c:249
#1: 0000000020c6b994 (&(&(&mapping->i_pages)->xa_lock)->rlock){-...}, at: spin_lock_irq include/linux/spinlock.h:354 [inline]
#1: 0000000020c6b994 (&(&(&mapping->i_pages)->xa_lock)->rlock){-...}, at: memfd_tag_pins mm/memfd.c:42 [inline]
#1: 0000000020c6b994 (&(&(&mapping->i_pages)->xa_lock)->rlock){-...}, at: memfd_wait_for_pins mm/memfd.c:83 [inline]
#1: 0000000020c6b994 (&(&(&mapping->i_pages)->xa_lock)->rlock){-...}, at: memfd_add_seals mm/memfd.c:217 [inline]
#1: 0000000020c6b994 (&(&(&mapping->i_pages)->xa_lock)->rlock){-...}, at: memfd_fcntl+0x4bc/0x1750 mm/memfd.c:249
stack backtrace:
CPU: 1 PID: 7552 Comm: syz-executor659 Not tainted 4.19.81 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0x172/0x1f0 lib/dump_stack.c:113
lockdep_rcu_suspicious+0x153/0x15d kernel/locking/lockdep.c:4539
radix_tree_deref_slot include/linux/radix-tree.h:241 [inline]
radix_tree_deref_slot include/linux/radix-tree.h:239 [inline]
memfd_tag_pins mm/memfd.c:44 [inline]
memfd_wait_for_pins mm/memfd.c:83 [inline]
memfd_add_seals mm/memfd.c:217 [inline]
memfd_fcntl+0xfdf/0x1750 mm/memfd.c:249
do_fcntl+0x200/0x1020 fs/fcntl.c:421
__do_sys_fcntl fs/fcntl.c:463 [inline]
__se_sys_fcntl fs/fcntl.c:448 [inline]
__x64_sys_fcntl+0x16d/0x1e0 fs/fcntl.c:448
do_syscall_64+0xfd/0x620 arch/x86/entry/common.c:293
entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x4401b9
Code: 18 89 d0 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 fb 13 fc ff c3 66 2e 0f 1f 84 00 00 00 00
RSP: 002b:00007ffd1713beb8 EFLAGS: 00000246 ORIG_RAX: 0000000000000048
RAX: ffffffffffffffda RBX: 00000000004002c8 RCX: 00000000004401b9
RDX: 0000000000000009 RSI: 0000000000000409 RDI: 0000000000000003
RBP: 00000000006ca018 R08: 00000000004002c8 R09: 0
* Struck through repros no longer work on HEAD.