• Paolo Bonzini's avatar
    kvm: x86: avoid warning on repeated KVM_SET_TSS_ADDR · b21629da
    Paolo Bonzini authored
    Found by syzkaller:
    
        WARNING: CPU: 3 PID: 15175 at arch/x86/kvm/x86.c:7705 __x86_set_memory_region+0x1dc/0x1f0 [kvm]()
        CPU: 3 PID: 15175 Comm: a.out Tainted: G        W       4.4.6-300.fc23.x86_64 #1
        Hardware name: LENOVO 2325F51/2325F51, BIOS G2ET32WW (1.12 ) 05/30/2012
         0000000000000286 00000000950899a7 ffff88011ab3fbf0 ffffffff813b542e
         0000000000000000 ffffffffa0966496 ffff88011ab3fc28 ffffffff810a40f2
         00000000000001fd 0000000000003000 ffff88014fc50000 0000000000000000
        Call Trace:
         [<ffffffff813b542e>] dump_stack+0x63/0x85
         [<ffffffff810a40f2>] warn_slowpath_common+0x82/0xc0
         [<ffffffff810a423a>] warn_slowpath_null+0x1a/0x20
         [<ffffffffa09251cc>] __x86_set_memory_region+0x1dc/0x1f0 [kvm]
         [<ffffffffa092521b>] x86_set_memory_region+0x3b/0x60 [kvm]
         [<ffffffffa09bb61c>] vmx_set_tss_addr+0x3c/0x150 [kvm_intel]
         [<ffffffffa092f4d4>] kvm_arch_vm_ioctl+0x654/0xbc0 [kvm]
         [<ffffffffa091d31a>] kvm_vm_ioctl+0x9a/0x6f0 [kvm]
         [<ffffffff81241248>] do_vfs_ioctl+0x298/0x480
         [<ffffffff812414a9>] SyS_ioctl+0x79/0x90
         [<ffffffff817a04ee>] entry_SYSCALL_64_fastpath+0x12/0x71
    
    Testcase:
    
        #include <unistd.h>
        #include <sys/ioctl.h>
        #include <fcntl.h>
        #include <string.h>
        #include <linux/kvm.h>
    
        long r[8];
    
        int main()
        {
            memset(r, -1, sizeof(r));
    	r[2] = open("/dev/kvm", O_RDONLY|O_TRUNC);
            r[3] = ioctl(r[2], KVM_CREATE_VM, 0x0ul);
            r[5] = ioctl(r[3], KVM_SET_TSS_ADDR, 0x20000000ul);
            r[7] = ioctl(r[3], KVM_SET_TSS_ADDR, 0x20000000ul);
            return 0;
        }
    Reported-by: default avatarDmitry Vyukov <dvyukov@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: default avatarRadim Krčmář <rkrcmar@redhat.com>
    b21629da
x86.c 215 KB