* memory leak in do_eventfd @ 2020-05-21 1:12 syzbot 2020-06-05 4:24 ` Eric Biggers 0 siblings, 1 reply; 3+ messages in thread From: syzbot @ 2020-05-21 1:12 UTC (permalink / raw) To: linux-fsdevel, linux-kernel, syzkaller-bugs, viro Hello, syzbot found the following crash on: HEAD commit: 5a9ffb95 Merge tag '5.7-rc5-smb3-fixes' of git://git.samba.. git tree: upstream console output: https://syzkaller.appspot.com/x/log.txt?x=10b72a02100000 kernel config: https://syzkaller.appspot.com/x/.config?x=f8295ae5b3f8268d dashboard link: https://syzkaller.appspot.com/bug?extid=f196caa45793d6374707 compiler: gcc (GCC) 9.0.0 20181231 (experimental) syz repro: https://syzkaller.appspot.com/x/repro.syz?x=17585b76100000 C reproducer: https://syzkaller.appspot.com/x/repro.c?x=12500a02100000 IMPORTANT: if you fix the bug, please add the following tag to the commit: Reported-by: syzbot+f196caa45793d6374707@syzkaller.appspotmail.com BUG: memory leak unreferenced object 0xffff888117169ac0 (size 64): comm "syz-executor012", pid 6609, jiffies 4294942172 (age 13.720s) hex dump (first 32 bytes): 01 00 00 00 ff ff ff ff 00 00 00 00 00 c9 ff ff ................ d0 9a 16 17 81 88 ff ff d0 9a 16 17 81 88 ff ff ................ backtrace: [<00000000351bb234>] kmalloc include/linux/slab.h:555 [inline] [<00000000351bb234>] do_eventfd+0x35/0xf0 fs/eventfd.c:418 [<00000000c2f69a77>] __do_sys_eventfd fs/eventfd.c:443 [inline] [<00000000c2f69a77>] __se_sys_eventfd fs/eventfd.c:441 [inline] [<00000000c2f69a77>] __x64_sys_eventfd+0x14/0x20 fs/eventfd.c:441 [<0000000086d6f989>] do_syscall_64+0x6e/0x220 arch/x86/entry/common.c:295 [<000000006c5bcb63>] entry_SYSCALL_64_after_hwframe+0x44/0xa9 BUG: memory leak unreferenced object 0xffff888117169100 (size 64): comm "syz-executor012", pid 6609, jiffies 4294942172 (age 13.720s) hex dump (first 32 bytes): e8 99 dd 00 00 c9 ff ff e8 99 dd 00 00 c9 ff ff ................ 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 ... ............ backtrace: [<00000000436d2955>] kmalloc include/linux/slab.h:555 [inline] [<00000000436d2955>] kzalloc include/linux/slab.h:669 [inline] [<00000000436d2955>] kvm_assign_ioeventfd_idx+0x4f/0x270 arch/x86/kvm/../../../virt/kvm/eventfd.c:798 [<00000000e89390cc>] kvm_assign_ioeventfd arch/x86/kvm/../../../virt/kvm/eventfd.c:934 [inline] [<00000000e89390cc>] kvm_ioeventfd+0xbb/0x194 arch/x86/kvm/../../../virt/kvm/eventfd.c:961 [<00000000ba9f6732>] kvm_vm_ioctl+0x1e6/0x1030 arch/x86/kvm/../../../virt/kvm/kvm_main.c:3670 [<000000005da94937>] vfs_ioctl fs/ioctl.c:47 [inline] [<000000005da94937>] ksys_ioctl+0xa6/0xd0 fs/ioctl.c:771 [<00000000a583d097>] __do_sys_ioctl fs/ioctl.c:780 [inline] [<00000000a583d097>] __se_sys_ioctl fs/ioctl.c:778 [inline] [<00000000a583d097>] __x64_sys_ioctl+0x1a/0x20 fs/ioctl.c:778 [<0000000086d6f989>] do_syscall_64+0x6e/0x220 arch/x86/entry/common.c:295 [<000000006c5bcb63>] entry_SYSCALL_64_after_hwframe+0x44/0xa9 --- 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 syzkaller@googlegroups.com. 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 ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: memory leak in do_eventfd 2020-05-21 1:12 memory leak in do_eventfd syzbot @ 2020-06-05 4:24 ` Eric Biggers 2020-08-07 7:04 ` Rustam Kovhaev 0 siblings, 1 reply; 3+ messages in thread From: Eric Biggers @ 2020-06-05 4:24 UTC (permalink / raw) To: kvm; +Cc: syzbot, linux-fsdevel, linux-kernel, syzkaller-bugs, viro [+Cc kvm mailing list] On Wed, May 20, 2020 at 06:12:17PM -0700, syzbot wrote: > Hello, > > syzbot found the following crash on: > > HEAD commit: 5a9ffb95 Merge tag '5.7-rc5-smb3-fixes' of git://git.samba.. > git tree: upstream > console output: https://syzkaller.appspot.com/x/log.txt?x=10b72a02100000 > kernel config: https://syzkaller.appspot.com/x/.config?x=f8295ae5b3f8268d > dashboard link: https://syzkaller.appspot.com/bug?extid=f196caa45793d6374707 > compiler: gcc (GCC) 9.0.0 20181231 (experimental) > syz repro: https://syzkaller.appspot.com/x/repro.syz?x=17585b76100000 > C reproducer: https://syzkaller.appspot.com/x/repro.c?x=12500a02100000 > > IMPORTANT: if you fix the bug, please add the following tag to the commit: > Reported-by: syzbot+f196caa45793d6374707@syzkaller.appspotmail.com > > BUG: memory leak > unreferenced object 0xffff888117169ac0 (size 64): > comm "syz-executor012", pid 6609, jiffies 4294942172 (age 13.720s) > hex dump (first 32 bytes): > 01 00 00 00 ff ff ff ff 00 00 00 00 00 c9 ff ff ................ > d0 9a 16 17 81 88 ff ff d0 9a 16 17 81 88 ff ff ................ > backtrace: > [<00000000351bb234>] kmalloc include/linux/slab.h:555 [inline] > [<00000000351bb234>] do_eventfd+0x35/0xf0 fs/eventfd.c:418 > [<00000000c2f69a77>] __do_sys_eventfd fs/eventfd.c:443 [inline] > [<00000000c2f69a77>] __se_sys_eventfd fs/eventfd.c:441 [inline] > [<00000000c2f69a77>] __x64_sys_eventfd+0x14/0x20 fs/eventfd.c:441 > [<0000000086d6f989>] do_syscall_64+0x6e/0x220 arch/x86/entry/common.c:295 > [<000000006c5bcb63>] entry_SYSCALL_64_after_hwframe+0x44/0xa9 > > BUG: memory leak > unreferenced object 0xffff888117169100 (size 64): > comm "syz-executor012", pid 6609, jiffies 4294942172 (age 13.720s) > hex dump (first 32 bytes): > e8 99 dd 00 00 c9 ff ff e8 99 dd 00 00 c9 ff ff ................ > 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 ... ............ > backtrace: > [<00000000436d2955>] kmalloc include/linux/slab.h:555 [inline] > [<00000000436d2955>] kzalloc include/linux/slab.h:669 [inline] > [<00000000436d2955>] kvm_assign_ioeventfd_idx+0x4f/0x270 arch/x86/kvm/../../../virt/kvm/eventfd.c:798 > [<00000000e89390cc>] kvm_assign_ioeventfd arch/x86/kvm/../../../virt/kvm/eventfd.c:934 [inline] > [<00000000e89390cc>] kvm_ioeventfd+0xbb/0x194 arch/x86/kvm/../../../virt/kvm/eventfd.c:961 > [<00000000ba9f6732>] kvm_vm_ioctl+0x1e6/0x1030 arch/x86/kvm/../../../virt/kvm/kvm_main.c:3670 > [<000000005da94937>] vfs_ioctl fs/ioctl.c:47 [inline] > [<000000005da94937>] ksys_ioctl+0xa6/0xd0 fs/ioctl.c:771 > [<00000000a583d097>] __do_sys_ioctl fs/ioctl.c:780 [inline] > [<00000000a583d097>] __se_sys_ioctl fs/ioctl.c:778 [inline] > [<00000000a583d097>] __x64_sys_ioctl+0x1a/0x20 fs/ioctl.c:778 > [<0000000086d6f989>] do_syscall_64+0x6e/0x220 arch/x86/entry/common.c:295 > [<000000006c5bcb63>] entry_SYSCALL_64_after_hwframe+0x44/0xa9 > > > > --- > 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 syzkaller@googlegroups.com. > > 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 > > -- > You received this message because you are subscribed to the Google Groups "syzkaller-bugs" group. > To unsubscribe from this group and stop receiving emails from it, send an email to syzkaller-bugs+unsubscribe@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/msgid/syzkaller-bugs/0000000000001daa8d05a61e3440%40google.com. ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: memory leak in do_eventfd 2020-06-05 4:24 ` Eric Biggers @ 2020-08-07 7:04 ` Rustam Kovhaev 0 siblings, 0 replies; 3+ messages in thread From: Rustam Kovhaev @ 2020-08-07 7:04 UTC (permalink / raw) To: kvm, ebiggers; +Cc: linux-fsdevel, linux-kernel, syzkaller-bugs, viro On Thu, Jun 04, 2020 at 09:24:02PM -0700, Eric Biggers wrote: > [+Cc kvm mailing list] > > On Wed, May 20, 2020 at 06:12:17PM -0700, syzbot wrote: > > Hello, > > > > syzbot found the following crash on: > > > > HEAD commit: 5a9ffb95 Merge tag '5.7-rc5-smb3-fixes' of git://git.samba.. > > git tree: upstream > > console output: https://syzkaller.appspot.com/x/log.txt?x=10b72a02100000 > > kernel config: https://syzkaller.appspot.com/x/.config?x=f8295ae5b3f8268d > > dashboard link: https://syzkaller.appspot.com/bug?extid=f196caa45793d6374707 > > compiler: gcc (GCC) 9.0.0 20181231 (experimental) > > syz repro: https://syzkaller.appspot.com/x/repro.syz?x=17585b76100000 > > C reproducer: https://syzkaller.appspot.com/x/repro.c?x=12500a02100000 > > > > IMPORTANT: if you fix the bug, please add the following tag to the commit: > > Reported-by: syzbot+f196caa45793d6374707@syzkaller.appspotmail.com > > > > BUG: memory leak > > unreferenced object 0xffff888117169ac0 (size 64): > > comm "syz-executor012", pid 6609, jiffies 4294942172 (age 13.720s) > > hex dump (first 32 bytes): > > 01 00 00 00 ff ff ff ff 00 00 00 00 00 c9 ff ff ................ > > d0 9a 16 17 81 88 ff ff d0 9a 16 17 81 88 ff ff ................ > > backtrace: > > [<00000000351bb234>] kmalloc include/linux/slab.h:555 [inline] > > [<00000000351bb234>] do_eventfd+0x35/0xf0 fs/eventfd.c:418 > > [<00000000c2f69a77>] __do_sys_eventfd fs/eventfd.c:443 [inline] > > [<00000000c2f69a77>] __se_sys_eventfd fs/eventfd.c:441 [inline] > > [<00000000c2f69a77>] __x64_sys_eventfd+0x14/0x20 fs/eventfd.c:441 > > [<0000000086d6f989>] do_syscall_64+0x6e/0x220 arch/x86/entry/common.c:295 > > [<000000006c5bcb63>] entry_SYSCALL_64_after_hwframe+0x44/0xa9 > > > > BUG: memory leak > > unreferenced object 0xffff888117169100 (size 64): > > comm "syz-executor012", pid 6609, jiffies 4294942172 (age 13.720s) > > hex dump (first 32 bytes): > > e8 99 dd 00 00 c9 ff ff e8 99 dd 00 00 c9 ff ff ................ > > 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 ... ............ > > backtrace: > > [<00000000436d2955>] kmalloc include/linux/slab.h:555 [inline] > > [<00000000436d2955>] kzalloc include/linux/slab.h:669 [inline] > > [<00000000436d2955>] kvm_assign_ioeventfd_idx+0x4f/0x270 arch/x86/kvm/../../../virt/kvm/eventfd.c:798 > > [<00000000e89390cc>] kvm_assign_ioeventfd arch/x86/kvm/../../../virt/kvm/eventfd.c:934 [inline] > > [<00000000e89390cc>] kvm_ioeventfd+0xbb/0x194 arch/x86/kvm/../../../virt/kvm/eventfd.c:961 > > [<00000000ba9f6732>] kvm_vm_ioctl+0x1e6/0x1030 arch/x86/kvm/../../../virt/kvm/kvm_main.c:3670 > > [<000000005da94937>] vfs_ioctl fs/ioctl.c:47 [inline] > > [<000000005da94937>] ksys_ioctl+0xa6/0xd0 fs/ioctl.c:771 > > [<00000000a583d097>] __do_sys_ioctl fs/ioctl.c:780 [inline] > > [<00000000a583d097>] __se_sys_ioctl fs/ioctl.c:778 [inline] > > [<00000000a583d097>] __x64_sys_ioctl+0x1a/0x20 fs/ioctl.c:778 > > [<0000000086d6f989>] do_syscall_64+0x6e/0x220 arch/x86/entry/common.c:295 > > [<000000006c5bcb63>] entry_SYSCALL_64_after_hwframe+0x44/0xa9 > > i had to slightly change syzbot reproducer to reproduce this bug in my lab: root@syzkaller:~# diff repro_fixed.c repro_syz.c 371c371 < inject_fault(2); --- > inject_fault(4); the memleak happens when kmalloc() fails in kvm_io_bus_unregister_dev() i also confirmed the leak by running ftrace - eventfd_free_ctx() was not executed when we got to kvm_vm_release() it seems like we should call kvm_iodevice_destructor(), because there could be other devices linked to the bus that's being removed when that particular kmalloc() failure happens i did not want to modify callers of kvm_io_bus_unregister_dev() and i tested the patch below that fixed the leak, but i am not sure if it completely breaks other things in KVM, i would really appreciate if someone can review it: diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 0a68c9d3d3ab..b1996989d576 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -4268,7 +4268,7 @@ int kvm_io_bus_register_dev(struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr, void kvm_io_bus_unregister_dev(struct kvm *kvm, enum kvm_bus bus_idx, struct kvm_io_device *dev) { - int i; + int i, j; struct kvm_io_bus *new_bus, *bus; bus = kvm_get_bus(kvm, bus_idx); @@ -4298,6 +4298,13 @@ void kvm_io_bus_unregister_dev(struct kvm *kvm, enum kvm_bus bus_idx, broken: rcu_assign_pointer(kvm->buses[bus_idx], new_bus); synchronize_srcu_expedited(&kvm->srcu); + if (!new_bus) { + for (j = 0; j < bus->dev_count; j++) { + if (j == i) + continue; + kvm_iodevice_destructor(bus->range[j].dev); + } + } kfree(bus); return; } ^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-08-07 7:03 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-05-21 1:12 memory leak in do_eventfd syzbot 2020-06-05 4:24 ` Eric Biggers 2020-08-07 7:04 ` Rustam Kovhaev
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).