2019-11-15 14:27:19

by syzbot

[permalink] [raw]
Subject: INFO: trying to register non-static key in io_cqring_ev_posted

Hello,

syzbot found the following crash on:

HEAD commit: 5a6fcbea Add linux-next specific files for 20191115
git tree: linux-next
console output: https://syzkaller.appspot.com/x/log.txt?x=12a3053ce00000
kernel config: https://syzkaller.appspot.com/x/.config?x=8eac90e6ae4ab399
dashboard link: https://syzkaller.appspot.com/bug?extid=0d818c0d39399188f393
compiler: gcc (GCC) 9.0.0 20181231 (experimental)
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=157e60cee00000

IMPORTANT: if you fix the bug, please add the following tag to the commit:
Reported-by: [email protected]

RSP: 002b:00007ffc38b497f8 EFLAGS: 00000246 ORIG_RAX: 00000000000001a9
RAX: ffffffffffffffda RBX: 00007ffc38b49810 RCX: 000000000045a659
RDX: 0000000000000000 RSI: 0000000020000480 RDI: 0000000000000fcc
RBP: 000000000075bf20 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000001ffc914
R13: 00000000004c1d50 R14: 00000000004d5a58 R15: 0000000000000003
INFO: trying to register non-static key.
the code is fine but needs lockdep annotation.
turning off the locking correctness validator.
CPU: 0 PID: 8724 Comm: syz-executor.0 Not tainted 5.4.0-rc7-next-20191115 #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+0x197/0x210 lib/dump_stack.c:118
assign_lock_key kernel/locking/lockdep.c:881 [inline]
register_lock_class+0x179e/0x1850 kernel/locking/lockdep.c:1190
__lock_acquire+0xf4/0x4a00 kernel/locking/lockdep.c:3837
lock_acquire+0x190/0x410 kernel/locking/lockdep.c:4485
__raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
_raw_spin_lock_irqsave+0x95/0xcd kernel/locking/spinlock.c:159
__wake_up_common_lock+0xc8/0x150 kernel/sched/wait.c:122
__wake_up+0xe/0x10 kernel/sched/wait.c:142
io_cqring_ev_posted+0xaa/0x120 fs/io_uring.c:629
io_cqring_overflow_flush+0x6d4/0xa90 fs/io_uring.c:676
io_ring_ctx_wait_and_kill+0x27a/0x810 fs/io_uring.c:4291
io_uring_create fs/io_uring.c:4628 [inline]
io_uring_setup+0x1264/0x1cd0 fs/io_uring.c:4654
__do_sys_io_uring_setup fs/io_uring.c:4667 [inline]
__se_sys_io_uring_setup fs/io_uring.c:4664 [inline]
__x64_sys_io_uring_setup+0x54/0x80 fs/io_uring.c:4664
do_syscall_64+0xfa/0x790 arch/x86/entry/common.c:294
entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x45a659
Code: ad b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 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 7b b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00
RSP: 002b:00007ffc38b497f8 EFLAGS: 00000246 ORIG_RAX: 00000000000001a9
RAX: ffffffffffffffda RBX: 00007ffc38b49810 RCX: 000000000045a659
RDX: 0000000000000000 RSI: 0000000020000480 RDI: 0000000000000fcc
RBP: 000000000075bf20 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000001ffc914
R13: 00000000004c1d50 R14: 00000000004d5a58 R15: 0000000000000003
kasan: CONFIG_KASAN_INLINE enabled
kasan: GPF could be caused by NULL-ptr deref or user memory access
general protection fault: 0000 [#1] PREEMPT SMP KASAN
CPU: 0 PID: 8724 Comm: syz-executor.0 Not tainted 5.4.0-rc7-next-20191115 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
Google 01/01/2011
RIP: 0010:__wake_up_common+0xdf/0x610 kernel/sched/wait.c:86
Code: 05 00 00 4c 8b 43 38 49 83 e8 18 49 8d 78 18 48 39 7d d0 0f 84 64 02
00 00 48 b8 00 00 00 00 00 fc ff df 48 89 f9 48 c1 e9 03 <80> 3c 01 00 0f
85 0d 05 00 00 49 8b 40 18 89 55 b0 31 db 49 bc 00
RSP: 0018:ffff8880a607fb00 EFLAGS: 00010046
RAX: dffffc0000000000 RBX: ffff8880896b2920 RCX: 0000000000000000
RDX: 0000000000000001 RSI: 1ffffffff1391616 RDI: 0000000000000000
RBP: ffff8880a607fb58 R08: ffffffffffffffe8 R09: ffff8880a607fba8
R10: ffffed1014c0ff59 R11: 0000000000000003 R12: 0000000000000001
R13: 0000000000000282 R14: 0000000000000000 R15: 0000000000000003
FS: 0000000001ffc940(0000) GS:ffff8880ae800000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000020000480 CR3: 000000009ab99000 CR4: 00000000001406f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
__wake_up_common_lock+0xea/0x150 kernel/sched/wait.c:123
__wake_up+0xe/0x10 kernel/sched/wait.c:142
io_cqring_ev_posted+0xaa/0x120 fs/io_uring.c:629
io_cqring_overflow_flush+0x6d4/0xa90 fs/io_uring.c:676
io_ring_ctx_wait_and_kill+0x27a/0x810 fs/io_uring.c:4291
io_uring_create fs/io_uring.c:4628 [inline]
io_uring_setup+0x1264/0x1cd0 fs/io_uring.c:4654
__do_sys_io_uring_setup fs/io_uring.c:4667 [inline]
__se_sys_io_uring_setup fs/io_uring.c:4664 [inline]
__x64_sys_io_uring_setup+0x54/0x80 fs/io_uring.c:4664
do_syscall_64+0xfa/0x790 arch/x86/entry/common.c:294
entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x45a659
Code: ad b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 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 7b b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00
RSP: 002b:00007ffc38b497f8 EFLAGS: 00000246 ORIG_RAX: 00000000000001a9
RAX: ffffffffffffffda RBX: 00007ffc38b49810 RCX: 000000000045a659
RDX: 0000000000000000 RSI: 0000000020000480 RDI: 0000000000000fcc
RBP: 000000000075bf20 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000001ffc914
R13: 00000000004c1d50 R14: 00000000004d5a58 R15: 0000000000000003
Modules linked in:
---[ end trace f5866fc8a39bc759 ]---
RIP: 0010:__wake_up_common+0xdf/0x610 kernel/sched/wait.c:86
Code: 05 00 00 4c 8b 43 38 49 83 e8 18 49 8d 78 18 48 39 7d d0 0f 84 64 02
00 00 48 b8 00 00 00 00 00 fc ff df 48 89 f9 48 c1 e9 03 <80> 3c 01 00 0f
85 0d 05 00 00 49 8b 40 18 89 55 b0 31 db 49 bc 00
RSP: 0018:ffff8880a607fb00 EFLAGS: 00010046
RAX: dffffc0000000000 RBX: ffff8880896b2920 RCX: 0000000000000000
RDX: 0000000000000001 RSI: 1ffffffff1391616 RDI: 0000000000000000
RBP: ffff8880a607fb58 R08: ffffffffffffffe8 R09: ffff8880a607fba8
R10: ffffed1014c0ff59 R11: 0000000000000003 R12: 0000000000000001
R13: 0000000000000282 R14: 0000000000000000 R15: 0000000000000003
FS: 0000000001ffc940(0000) GS:ffff8880ae800000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000020000480 CR3: 000000009ab99000 CR4: 00000000001406f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400


---
This bug 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 [email protected].

syzbot will keep track of this bug report. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.
syzbot can test patches for this bug, for details see:
https://goo.gl/tpsmEJ#testing-patches


2019-11-20 17:34:08

by syzbot

[permalink] [raw]
Subject: Re: INFO: trying to register non-static key in io_cqring_ev_posted

syzbot has found a reproducer for the following crash on:

HEAD commit: 5d1131b4 Add linux-next specific files for 20191119
git tree: linux-next
console output: https://syzkaller.appspot.com/x/log.txt?x=140b0412e00000
kernel config: https://syzkaller.appspot.com/x/.config?x=b60c562d89e5a8df
dashboard link: https://syzkaller.appspot.com/bug?extid=0d818c0d39399188f393
compiler: gcc (GCC) 9.0.0 20181231 (experimental)
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=169b29d2e00000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=14b3956ae00000

IMPORTANT: if you fix the bug, please add the following tag to the commit:
Reported-by: [email protected]

RSP: 002b:00007ffddd565408 EFLAGS: 00000246 ORIG_RAX: 00000000000001a9
RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00000000004412a9
RDX: 0000000000000001 RSI: 0000000020000340 RDI: 00000000000002a6
RBP: 0000000000011c3e R08: 0000000000000001 R09: 00000000004002c8
R10: 0000000000000000 R11: 0000000000000246 R12: 00000000004021f0
R13: 0000000000402280 R14: 0000000000000000 R15: 0000000000000000
INFO: trying to register non-static key.
the code is fine but needs lockdep annotation.
turning off the locking correctness validator.
CPU: 1 PID: 8725 Comm: syz-executor376 Not tainted
5.4.0-rc8-next-20191119-syzkaller #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+0x197/0x210 lib/dump_stack.c:118
assign_lock_key kernel/locking/lockdep.c:881 [inline]
register_lock_class+0x179e/0x1850 kernel/locking/lockdep.c:1190
__lock_acquire+0xf4/0x4a00 kernel/locking/lockdep.c:3837
lock_acquire+0x190/0x410 kernel/locking/lockdep.c:4485
__raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
_raw_spin_lock_irqsave+0x95/0xcd kernel/locking/spinlock.c:159
__wake_up_common_lock+0xc8/0x150 kernel/sched/wait.c:122
__wake_up+0xe/0x10 kernel/sched/wait.c:142
io_cqring_ev_posted+0xaa/0x120 fs/io_uring.c:655
io_cqring_overflow_flush+0x6d4/0xa90 fs/io_uring.c:702
io_ring_ctx_wait_and_kill+0x20a/0x770 fs/io_uring.c:4382
io_uring_create fs/io_uring.c:4719 [inline]
io_uring_setup+0x123d/0x1ca0 fs/io_uring.c:4745
__do_sys_io_uring_setup fs/io_uring.c:4758 [inline]
__se_sys_io_uring_setup fs/io_uring.c:4755 [inline]
__x64_sys_io_uring_setup+0x54/0x80 fs/io_uring.c:4755
do_syscall_64+0xfa/0x790 arch/x86/entry/common.c:294
entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x4412a9
Code: e8 5c ae 02 00 48 83 c4 18 c3 0f 1f 80 00 00 00 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 bb 0a fc ff c3 66 2e 0f 1f 84 00 00 00 00
RSP: 002b:00007ffddd565408 EFLAGS: 00000246 ORIG_RAX: 00000000000001a9
RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00000000004412a9
RDX: 0000000000000001 RSI: 0000000020000340 RDI: 00000000000002a6
RBP: 0000000000011c3e R08: 0000000000000001 R09: 00000000004002c8
R10: 0000000000000000 R11: 0000000000000246 R12: 00000000004021f0
R13: 0000000000402280 R14: 0000000000000000 R15: 0000000000000000
kasan: CONFIG_KASAN_INLINE enabled
kasan: GPF could be caused by NULL-ptr deref or user memory access
general protection fault: 0000 [#1] PREEMPT SMP KASAN
CPU: 1 PID: 8725 Comm: syz-executor376 Not tainted
5.4.0-rc8-next-20191119-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
Google 01/01/2011
RIP: 0010:__wake_up_common+0xdf/0x610 kernel/sched/wait.c:86
Code: 05 00 00 4c 8b 43 38 49 83 e8 18 49 8d 78 18 48 39 7d d0 0f 84 64 02
00 00 48 b8 00 00 00 00 00 fc ff df 48 89 f9 48 c1 e9 03 <80> 3c 01 00 0f
85 0d 05 00 00 49 8b 40 18 89 55 b0 31 db 49 bc 00
RSP: 0018:ffff888089c87b00 EFLAGS: 00010046
RAX: dffffc0000000000 RBX: ffff8880880c1120 RCX: 0000000000000000
RDX: 0000000000000001 RSI: 1ffffffff13913ee RDI: 0000000000000000
RBP: ffff888089c87b58 R08: ffffffffffffffe8 R09: ffff888089c87ba8
R10: ffffed1011390f59 R11: 0000000000000003 R12: 0000000000000001
R13: 0000000000000286 R14: 0000000000000000 R15: 0000000000000003
FS: 00000000025cb880(0000) GS:ffff8880ae900000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000020000340 CR3: 000000009a26b000 CR4: 00000000001406e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
__wake_up_common_lock+0xea/0x150 kernel/sched/wait.c:123
__wake_up+0xe/0x10 kernel/sched/wait.c:142
io_cqring_ev_posted+0xaa/0x120 fs/io_uring.c:655
io_cqring_overflow_flush+0x6d4/0xa90 fs/io_uring.c:702
io_ring_ctx_wait_and_kill+0x20a/0x770 fs/io_uring.c:4382
io_uring_create fs/io_uring.c:4719 [inline]
io_uring_setup+0x123d/0x1ca0 fs/io_uring.c:4745
__do_sys_io_uring_setup fs/io_uring.c:4758 [inline]
__se_sys_io_uring_setup fs/io_uring.c:4755 [inline]
__x64_sys_io_uring_setup+0x54/0x80 fs/io_uring.c:4755
do_syscall_64+0xfa/0x790 arch/x86/entry/common.c:294
entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x4412a9
Code: e8 5c ae 02 00 48 83 c4 18 c3 0f 1f 80 00 00 00 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 bb 0a fc ff c3 66 2e 0f 1f 84 00 00 00 00
RSP: 002b:00007ffddd565408 EFLAGS: 00000246 ORIG_RAX: 00000000000001a9
RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00000000004412a9
RDX: 0000000000000001 RSI: 0000000020000340 RDI: 00000000000002a6
RBP: 0000000000011c3e R08: 0000000000000001 R09: 00000000004002c8
R10: 0000000000000000 R11: 0000000000000246 R12: 00000000004021f0
R13: 0000000000402280 R14: 0000000000000000 R15: 0000000000000000
Modules linked in:
---[ end trace 8d482760e7208707 ]---
RIP: 0010:__wake_up_common+0xdf/0x610 kernel/sched/wait.c:86
Code: 05 00 00 4c 8b 43 38 49 83 e8 18 49 8d 78 18 48 39 7d d0 0f 84 64 02
00 00 48 b8 00 00 00 00 00 fc ff df 48 89 f9 48 c1 e9 03 <80> 3c 01 00 0f
85 0d 05 00 00 49 8b 40 18 89 55 b0 31 db 49 bc 00
RSP: 0018:ffff888089c87b00 EFLAGS: 00010046
RAX: dffffc0000000000 RBX: ffff8880880c1120 RCX: 0000000000000000
RDX: 0000000000000001 RSI: 1ffffffff13913ee RDI: 0000000000000000
RBP: ffff888089c87b58 R08: ffffffffffffffe8 R09: ffff888089c87ba8
R10: ffffed1011390f59 R11: 0000000000000003 R12: 0000000000000001
R13: 0000000000000286 R14: 0000000000000000 R15: 0000000000000003
FS: 00000000025cb880(0000) GS:ffff8880ae900000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000020000340 CR3: 000000009a26b000 CR4: 00000000001406e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400


2019-11-20 17:38:34

by Jens Axboe

[permalink] [raw]
Subject: Re: INFO: trying to register non-static key in io_cqring_ev_posted

On 11/20/19 8:58 AM, syzbot wrote:
> syzbot has found a reproducer for the following crash on:
>
> HEAD commit: 5d1131b4 Add linux-next specific files for 20191119
> git tree: linux-next
> console output: https://syzkaller.appspot.com/x/log.txt?x=140b0412e00000
> kernel config: https://syzkaller.appspot.com/x/.config?x=b60c562d89e5a8df
> dashboard link: https://syzkaller.appspot.com/bug?extid=0d818c0d39399188f393
> compiler: gcc (GCC) 9.0.0 20181231 (experimental)
> syz repro: https://syzkaller.appspot.com/x/repro.syz?x=169b29d2e00000
> C reproducer: https://syzkaller.appspot.com/x/repro.c?x=14b3956ae00000
>
> IMPORTANT: if you fix the bug, please add the following tag to the commit:
> Reported-by: [email protected]

Thanks, the below should fix it.


diff --git a/fs/io_uring.c b/fs/io_uring.c
index 100931b40301..066b59ffb54e 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -4568,12 +4568,18 @@ static int io_allocate_scq_urings(struct io_ring_ctx *ctx,
ctx->cq_entries = rings->cq_ring_entries;

size = array_size(sizeof(struct io_uring_sqe), p->sq_entries);
- if (size == SIZE_MAX)
+ if (size == SIZE_MAX) {
+ io_mem_free(ctx->rings);
+ ctx->rings = NULL;
return -EOVERFLOW;
+ }

ctx->sq_sqes = io_mem_alloc(size);
- if (!ctx->sq_sqes)
+ if (!ctx->sq_sqes) {
+ io_mem_free(ctx->rings);
+ ctx->rings = NULL;
return -ENOMEM;
+ }

return 0;
}

--
Jens Axboe


2019-11-21 05:57:25

by syzbot

[permalink] [raw]
Subject: Re: INFO: trying to register non-static key in io_cqring_ev_posted

syzbot has bisected this bug to:

commit 206aefde4f886fdeb3b6339aacab3a85fb74cb7e
Author: Jens Axboe <[email protected]>
Date: Fri Nov 8 01:27:42 2019 +0000

io_uring: reduce/pack size of io_ring_ctx

bisection log: https://syzkaller.appspot.com/x/bisect.txt?x=15f98af2e00000
start commit: 5d1131b4 Add linux-next specific files for 20191119
git tree: linux-next
final crash: https://syzkaller.appspot.com/x/report.txt?x=17f98af2e00000
console output: https://syzkaller.appspot.com/x/log.txt?x=13f98af2e00000
kernel config: https://syzkaller.appspot.com/x/.config?x=b60c562d89e5a8df
dashboard link: https://syzkaller.appspot.com/bug?extid=0d818c0d39399188f393
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=169b29d2e00000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=14b3956ae00000

Reported-by: [email protected]
Fixes: 206aefde4f88 ("io_uring: reduce/pack size of io_ring_ctx")

For information about bisection process see: https://goo.gl/tpsmEJ#bisection