public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
  • * Re: general protection fault in __dentry_path
           [not found] <0000000000007e10c50580aa7684@google.com>
           [not found] ` <0000000000004a10840580ab4277@google.com>
    @ 2019-02-21  4:14 ` syzbot
      2019-02-26 19:19   ` Eric Biggers
      1 sibling, 1 reply; 11+ messages in thread
    From: syzbot @ 2019-02-21  4:14 UTC (permalink / raw)
      To: kvm, linux-fsdevel, linux-kernel, penguin-kernel, syzkaller-bugs,
    	viro
    
    syzbot has found a reproducer for the following crash on:
    
    HEAD commit:    2137397c92ae Merge tag 'sound-5.0' of git://git.kernel.org..
    git tree:       upstream
    console output: https://syzkaller.appspot.com/x/log.txt?x=1270bf78c00000
    kernel config:  https://syzkaller.appspot.com/x/.config?x=7132344728e7ec3f
    dashboard link: https://syzkaller.appspot.com/bug?extid=7857962b4d45e602b8ad
    compiler:       gcc (GCC) 9.0.0 20181231 (experimental)
    userspace arch: i386
    syz repro:      https://syzkaller.appspot.com/x/repro.syz?x=150bee14c00000
    C reproducer:   https://syzkaller.appspot.com/x/repro.c?x=12f401d4c00000
    
    IMPORTANT: if you fix the bug, please add the following tag to the commit:
    Reported-by: syzbot+7857962b4d45e602b8ad@syzkaller.appspotmail.com
    
    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: 12576 Comm: syz-executor696 Not tainted 5.0.0-rc7+ #81
    kobject: 'kvm' (00000000985ff3e6): kobject_uevent_env
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS  
    Google 01/01/2011
    RIP: 0010:__dentry_path+0x49e/0x7c0 fs/d_path.c:344
    Code: 89 fc 41 83 e4 01 44 89 e6 e8 fe e4 b2 ff 45 84 e4 0f 85 04 02 00 00  
    e8 b0 e3 b2 ff 48 8b 85 18 ff ff ff 44 89 bd 40 ff ff ff <80> 38 00 0f 85  
    f9 02 00 00 48 8b 85 38 ff ff ff 41 83 e7 01 44 89
    kobject: 'kvm' (00000000985ff3e6): fill_kobj_path: path  
    = '/devices/virtual/misc/kvm'
    RSP: 0018:ffff888096127c58 EFLAGS: 00010293
    RAX: dffffc0000000005 RBX: 0000000000000000 RCX: ffffffff81bcfdc2
    RDX: 0000000000000000 RSI: ffffffff81bcfdd0 RDI: 0000000000000001
    RBP: ffff888096127d48 R08: ffff88809b17c540 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
    R13: ffff888096127d20 R14: ffff888092473afe R15: 0000000000014e78
    FS:  0000000000000000(0000) GS:ffff8880ae800000(0063) knlGS:00000000f7fe4b40
    CS:  0010 DS: 002b ES: 002b CR0: 0000000080050033
    CR2: 00000000080fb028 CR3: 000000009de68000 CR4: 00000000001426f0
    kobject: 'kvm' (00000000985ff3e6): kobject_uevent_env
    Call Trace:
    kobject: 'kvm' (00000000985ff3e6): fill_kobj_path: path  
    = '/devices/virtual/misc/kvm'
      dentry_path_raw+0x26/0x30 fs/d_path.c:371
      kvm_uevent_notify_change.part.0+0x213/0x440  
    arch/x86/kvm/../../../virt/kvm/kvm_main.c:4051
      kvm_uevent_notify_change arch/x86/kvm/../../../virt/kvm/kvm_main.c:4018  
    [inline]
      kvm_dev_ioctl_create_vm arch/x86/kvm/../../../virt/kvm/kvm_main.c:3356  
    [inline]
      kvm_dev_ioctl+0x1132/0x1750 arch/x86/kvm/../../../virt/kvm/kvm_main.c:3378
      __do_compat_sys_ioctl fs/compat_ioctl.c:1052 [inline]
      __se_compat_sys_ioctl fs/compat_ioctl.c:998 [inline]
      __ia32_compat_sys_ioctl+0x197/0x620 fs/compat_ioctl.c:998
      do_syscall_32_irqs_on arch/x86/entry/common.c:326 [inline]
      do_fast_syscall_32+0x281/0xc98 arch/x86/entry/common.c:397
      entry_SYSENTER_compat+0x70/0x7f arch/x86/entry/entry_64_compat.S:139
    RIP: 0023:0xf7fe8869
    Code: 85 d2 74 02 89 0a 5b 5d c3 8b 04 24 c3 8b 14 24 c3 8b 3c 24 c3 90 90  
    90 90 90 90 90 90 90 90 90 90 51 52 55 89 e5 0f 34 cd 80 <5d> 5a 59 c3 90  
    90 90 90 eb 0d 90 90 90 90 90 90 90 90 90 90 90 90
    RSP: 002b:00000000f7fe41fc EFLAGS: 00000293 ORIG_RAX: 0000000000000036
    RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 000000000000ae01
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
    RBP: 00000000003d0f00 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
    R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
    Modules linked in:
    ---[ end trace 4fe494385b47fe74 ]---
    kobject: 'kvm' (00000000985ff3e6): kobject_uevent_env
    RIP: 0010:__dentry_path+0x49e/0x7c0 fs/d_path.c:344
    Code: 89 fc 41 83 e4 01 44 89 e6 e8 fe e4 b2 ff 45 84 e4 0f 85 04 02 00 00  
    e8 b0 e3 b2 ff 48 8b 85 18 ff ff ff 44 89 bd 40 ff ff ff <80> 38 00 0f 85  
    f9 02 00 00 48 8b 85 38 ff ff ff 41 83 e7 01 44 89
    RSP: 0018:ffff888096127c58 EFLAGS: 00010293
    RAX: dffffc0000000005 RBX: 0000000000000000 RCX: ffffffff81bcfdc2
    RDX: 0000000000000000 RSI: ffffffff81bcfdd0 RDI: 0000000000000001
    RBP: ffff888096127d48 R08: ffff88809b17c540 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
    R13: ffff888096127d20 R14: ffff888092473afe R15: 0000000000014e78
    kobject: 'kvm' (00000000985ff3e6): fill_kobj_path: path  
    = '/devices/virtual/misc/kvm'
    FS:  0000000000000000(0000) GS:ffff8880ae800000(0063) knlGS:00000000f7fe4b40
    CS:  0010 DS: 002b ES: 002b CR0: 0000000080050033
    CR2: 00000000080fb038 CR3: 000000009de68000 CR4: 00000000001426f0
    
    ^ permalink raw reply	[flat|nested] 11+ messages in thread
  • * [PATCH] kvm: properly check debugfs dentry before using it
    @ 2019-02-28 15:34 Greg Kroah-Hartman
      2019-02-28 16:58 ` Linus Torvalds
      2019-02-28 17:17 ` Eric Biggers
      0 siblings, 2 replies; 11+ messages in thread
    From: Greg Kroah-Hartman @ 2019-02-28 15:34 UTC (permalink / raw)
      To: Linus Torvalds
      Cc: Paolo Bonzini, Radim Krčmář, Eric Biggers, kvm,
    	syzbot, linux-fsdevel, linux-kernel, penguin-kernel,
    	syzkaller-bugs, viro
    
    debugfs can now report an error code if something went wrong instead of
    just NULL.  So if the return value is to be used as a "real" dentry, it
    needs to be checked if it is an error before dereferencing it.
    
    This is now happening because of ff9fb72bc077 ("debugfs: return error
    values, not NULL").  syzbot has found a way to trigger multiple debugfs
    files attempting to be created, which fails, and then the error code
    gets passed to dentry_path_raw() which obviously does not like it.
    
    Reported-by: Eric Biggers <ebiggers@kernel.org>
    Reported-and-tested-by: syzbot+7857962b4d45e602b8ad@syzkaller.appspotmail.com
    Cc: "Radim Krčmář" <rkrcmar@redhat.com>
    Cc: kvm@vger.kernel.org
    Acked-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    
    Linus, this should go in before 5.0-final is out, as it resolves a
    problem found by syzbot.  Paolo has given his ack for me to send this
    directly to you.  If you want this in [GIT PULL] format, I can do that
    as well.
    
     virt/kvm/kvm_main.c |    2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    --- a/virt/kvm/kvm_main.c
    +++ b/virt/kvm/kvm_main.c
    @@ -4044,7 +4044,7 @@ static void kvm_uevent_notify_change(uns
     	}
     	add_uevent_var(env, "PID=%d", kvm->userspace_pid);
     
    -	if (kvm->debugfs_dentry) {
    +	if (!IS_ERR_OR_NULL(kvm->debugfs_dentry)) {
     		char *tmp, *p = kmalloc(PATH_MAX, GFP_KERNEL);
     
     		if (p) {
    
    ^ permalink raw reply	[flat|nested] 11+ messages in thread

    end of thread, other threads:[~2019-02-28 18:04 UTC | newest]
    
    Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
    -- links below jump to the message on this page --
         [not found] <0000000000007e10c50580aa7684@google.com>
         [not found] ` <0000000000004a10840580ab4277@google.com>
    2019-01-30 13:49   ` general protection fault in __dentry_path Tetsuo Handa
    2019-02-21  4:14 ` syzbot
    2019-02-26 19:19   ` Eric Biggers
    2019-02-27  8:38     ` Greg Kroah-Hartman
    2019-02-28 15:08     ` [PATCH] kvm: properly check debugfs dentry before using it Greg Kroah-Hartman
    2019-02-28 15:14       ` Paolo Bonzini
    2019-02-28 15:32         ` Greg Kroah-Hartman
    2019-02-28 15:34 Greg Kroah-Hartman
    2019-02-28 16:58 ` Linus Torvalds
    2019-02-28 17:17 ` Eric Biggers
    2019-02-28 18:04   ` Greg Kroah-Hartman
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox