syzbot
panic: Assertion in_epoch(net_epoch_preempt) failed at /syzkaller/managers/main/kernel/sys/net/if.c:LINE
Status:
fixed on 2020/01/21 11:53
Reported-by: syzbot+f68365b1e06521722984@syzkaller.appspotmail.com
Fix commit:
Remove epoch assertion from if_setlladdr(). Originally this function was protected by IF_ADDR_LOCK(), which was a mutex, so that two simultaneous if_setlladdr() can't execute. Later it was switched to IF_ADDR_RLOCK(), likely by a mistake. Later it was switched to NET_EPOCH_ENTER(). Then I incorrectly added NET_EPOCH_ASSERT() here.
First crash: 2523d, last: 2523d
Sample crash report:
panic: Assertion in_epoch(net_epoch_preempt) failed at /syzkaller/managers/main/kernel/sys/net/if.c:3827
cpuid = 1
time = 1570618800
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x47/frame 0xfffffe0022a795b0
vpanic() at vpanic+0x1e0/frame 0xfffffe0022a79610
panic() at panic+0x43/frame 0xfffffe0022a79670
if_setlladdr() at if_setlladdr+0x34c/frame 0xfffffe0022a796e0
ifhwioctl() at ifhwioctl+0x9e0/frame 0xfffffe0022a79770
ifioctl() at ifioctl+0x4c2/frame 0xfffffe0022a79840
kern_ioctl() at kern_ioctl+0x465/frame 0xfffffe0022a798b0
sys_ioctl() at sys_ioctl+0x267/frame 0xfffffe0022a79980
amd64_syscall() at amd64_syscall+0x477/frame 0xfffffe0022a79ab0
fast_syscall_common() at fast_syscall_common+0x101/frame 0xfffffe0022a79ab0
--- syscall (54, FreeBSD ELF64, sys_ioctl), rip = 0x8004882ca, rsp = 0x7fffffffe428, rbp = 0x7fffffffe470 ---
KDB: enter: panic
[ thread pid 774 tid 100089 ]
Stopped at kdb_enter+0x6a: movq $0,kdb_why
* Struck through repros no longer work on HEAD.