lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20210830170647.GT4156@paulmck-ThinkPad-P17-Gen-1>
Date:   Mon, 30 Aug 2021 10:06:47 -0700
From:   "Paul E. McKenney" <paulmck@...nel.org>
To:     Thomas Gleixner <tglx@...utronix.de>
Cc:     syzbot <syzbot+f2ceae48bb0c0ab08b9d@...kaller.appspotmail.com>,
        bp@...en8.de, dwmw@...zon.co.uk, hpa@...or.com,
        linux-kernel@...r.kernel.org, mingo@...hat.com,
        syzkaller-bugs@...glegroups.com, x86@...nel.org
Subject: Re: [syzbot] WARNING in rcu_core

On Mon, Aug 30, 2021 at 12:51:39PM +0200, Thomas Gleixner wrote:
> On Mon, Aug 30 2021 at 02:45, syzbot wrote:
> 
> Cc+ Paul
> 
> > Hello,
> >
> > syzbot found the following issue on:
> >
> > HEAD commit:    77dd11439b86 Merge tag 'drm-fixes-2021-08-27' of git://ano..
> > git tree:       upstream
> > console output: https://syzkaller.appspot.com/x/log.txt?x=12018abd300000
> > kernel config:  https://syzkaller.appspot.com/x/.config?x=2fd902af77ff1e56
> > dashboard link: https://syzkaller.appspot.com/bug?extid=f2ceae48bb0c0ab08b9d
> > compiler:       Debian clang version 11.0.1-2, GNU ld (GNU Binutils for Debian) 2.35.1
> >
> > Unfortunately, I don't have any reproducer for this issue yet.
> >
> > IMPORTANT: if you fix the issue, please add the following tag to the commit:
> > Reported-by: syzbot+f2ceae48bb0c0ab08b9d@...kaller.appspotmail.com
> >
> > ------------[ cut here ]------------
> > ODEBUG: active_state not available (active state 0) object type: rcu_head hint: 0x0
> > WARNING: CPU: 0 PID: 8442 at lib/debugobjects.c:508 debug_print_object lib/debugobjects.c:505 [inline]
> > WARNING: CPU: 0 PID: 8442 at lib/debugobjects.c:508 debug_object_active_state+0x28a/0x410 lib/debugobjects.c:946
> > Modules linked in:
> > CPU: 0 PID: 8442 Comm: syz-executor.2 Not tainted 5.14.0-rc7-syzkaller #0
> > Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
> > RIP: 0010:debug_print_object lib/debugobjects.c:505 [inline]
> > RIP: 0010:debug_object_active_state+0x28a/0x410 lib/debugobjects.c:946
> > Code: e8 fb c6 be fd 4c 8b 45 00 48 c7 c7 c0 a2 93 8a 48 c7 c6 60 9f 93 8a 48 c7 c2 00 a5 93 8a 31 c9 49 89 d9 31 c0 e8 16 58 41 fd <0f> 0b e9 9f 00 00 00 45 31 f6 ff 05 66 bd 9d 0c 43 8a 04 2f 84 c0
> > RSP: 0018:ffffc90000007ba0 EFLAGS: 00010246
> > RAX: b9c220867f01ad00 RBX: 0000000000000000 RCX: ffff88801b5b0000
> > RDX: 0000000080000101 RSI: 0000000080000101 RDI: 0000000000000000
> > RBP: ffffffff8a304d00 R08: ffffffff81664f72 R09: ffffed1017383f2c
> > R10: ffffed1017383f2c R11: 0000000000000000 R12: ffff888000137e18
> > R13: dffffc0000000000 R14: 1ffff11000026fc3 R15: ffff88805ec97ba0
> > FS:  0000000002131400(0000) GS:ffff8880b9c00000(0000) knlGS:0000000000000000
> > CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> > CR2: 000000001ffffc00 CR3: 00000000505bb000 CR4: 00000000001526f0
> > DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> > DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
> > Call Trace:
> >  <IRQ>
> >  debug_rcu_head_unqueue kernel/rcu/rcu.h:185 [inline]
> >  rcu_do_batch kernel/rcu/tree.c:2543 [inline]

This looks like a use-after-free in a structure that unions the rcu_head
structure with something else.

Would adding a mem_dump_obj() somewhere in the debug-object code be
helpful?  (Or propagate a return value out, similar to that of
debug_object_activate()?)

							Thanx, Paul

> >  rcu_core+0x8a6/0x14b0 kernel/rcu/tree.c:2785
> >  __do_softirq+0x372/0x783 kernel/softirq.c:558
> >  invoke_softirq kernel/softirq.c:432 [inline]
> >  __irq_exit_rcu+0x21b/0x260 kernel/softirq.c:636
> >  irq_exit_rcu+0x5/0x20 kernel/softirq.c:648
> >  sysvec_apic_timer_interrupt+0x91/0xb0 arch/x86/kernel/apic/apic.c:1100
> >  </IRQ>
> >  asm_sysvec_apic_timer_interrupt+0x12/0x20 arch/x86/include/asm/idtentry.h:638
> > RIP: 0010:finish_lock_switch+0xf0/0x1c0 kernel/sched/core.c:4436
> > Code: 61 0c 00 74 11 48 89 df be ff ff ff ff e8 18 33 80 08 85 c0 74 27 4d 85 ff 75 44 4c 89 f7 e8 a7 dd 82 08 e8 f2 40 2d 00 fb 5b <41> 5c 41 5d 41 5e 41 5f 5d c3 0f 0b 4d 85 ff 75 92 eb a8 0f 0b 4d
> > RSP: 0018:ffffc9000167fa30 EFLAGS: 00000282
> > RAX: b9c220867f01ad00 RBX: ffff8880902a54f4 RCX: ffffffff9070c703
> > RDX: dffffc0000000000 RSI: 0000000000000001 RDI: 0000000000000000
> > RBP: 1ffff1101738a400 R08: ffffffff8186a520 R09: ffffed101738a2a9
> > R10: ffffed101738a2a9 R11: 0000000000000000 R12: ffff8880b9c52000
> > R13: dffffc0000000000 R14: ffff8880b9c51540 R15: 0000000000000000
> >  finish_task_switch+0x140/0x630 kernel/sched/core.c:4553
> >  context_switch kernel/sched/core.c:4684 [inline]
> >  __schedule+0xc0f/0x11f0 kernel/sched/core.c:5938
> >  schedule+0x14b/0x210 kernel/sched/core.c:6017
> >  freezable_schedule include/linux/freezer.h:172 [inline]
> >  do_nanosleep+0x1b6/0x7b0 kernel/time/hrtimer.c:1896
> >  hrtimer_nanosleep+0x239/0x470 kernel/time/hrtimer.c:1949
> >  __do_sys_clock_nanosleep kernel/time/posix-timers.c:1267 [inline]
> >  __se_sys_clock_nanosleep kernel/time/posix-timers.c:1245 [inline]
> >  __x64_sys_clock_nanosleep+0x344/0x3d0 kernel/time/posix-timers.c:1245
> >  do_syscall_x64 arch/x86/entry/common.c:50 [inline]
> >  do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80
> >  entry_SYSCALL_64_after_hwframe+0x44/0xae
> > RIP: 0033:0x48a7c1
> > Code: 24 0c 89 3c 24 48 89 4c 24 18 e8 aa e7 ff ff 4c 8b 54 24 18 48 8b 54 24 10 41 89 c0 8b 74 24 0c 8b 3c 24 b8 e6 00 00 00 0f 05 <44> 89 c7 48 89 04 24 e8 e3 e7 ff ff 48 8b 04 24 eb 97 66 2e 0f 1f
> > RSP: 002b:00007ffe3a1cf3e0 EFLAGS: 00000293 ORIG_RAX: 00000000000000e6
> > RAX: ffffffffffffffda RBX: 00000000000019ce RCX: 000000000048a7c1
> > RDX: 00007ffe3a1cf420 RSI: 0000000000000000 RDI: 0000000000000000
> > RBP: 00007ffe3a1cf4bc R08: 0000000000000000 R09: 0000000000000010
> > R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000000032
> > R13: 00000000001f8f0a R14: 000000000000000b R15: 00007ffe3a1cf520
> > ----------------
> > Code disassembly (best guess), 1 bytes skipped:
> >    0:	0c 00                	or     $0x0,%al
> >    2:	74 11                	je     0x15
> >    4:	48 89 df             	mov    %rbx,%rdi
> >    7:	be ff ff ff ff       	mov    $0xffffffff,%esi
> >    c:	e8 18 33 80 08       	callq  0x8803329
> >   11:	85 c0                	test   %eax,%eax
> >   13:	74 27                	je     0x3c
> >   15:	4d 85 ff             	test   %r15,%r15
> >   18:	75 44                	jne    0x5e
> >   1a:	4c 89 f7             	mov    %r14,%rdi
> >   1d:	e8 a7 dd 82 08       	callq  0x882ddc9
> >   22:	e8 f2 40 2d 00       	callq  0x2d4119
> >   27:	fb                   	sti
> >   28:	5b                   	pop    %rbx
> > * 29:	41 5c                	pop    %r12 <-- trapping instruction
> >   2b:	41 5d                	pop    %r13
> >   2d:	41 5e                	pop    %r14
> >   2f:	41 5f                	pop    %r15
> >   31:	5d                   	pop    %rbp
> >   32:	c3                   	retq
> >   33:	0f 0b                	ud2
> >   35:	4d 85 ff             	test   %r15,%r15
> >   38:	75 92                	jne    0xffffffcc
> >   3a:	eb a8                	jmp    0xffffffe4
> >   3c:	0f 0b                	ud2
> >   3e:	4d                   	rex.WRB
> >
> >
> > ---
> > 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 syzkaller@...glegroups.com.
> >
> > syzbot will keep track of this issue. See:
> > https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ