• Wanpeng Li's avatar
    KVM: X86: Fix dereference null cpufreq policy · 9a11997e
    Wanpeng Li authored
    Naresh Kamboju reported:
    
       Linux version 5.6.0-rc4 (oe-user@oe-host) (gcc version
      (GCC)) #1 SMP Sun Mar 1 22:59:08 UTC 2020
       kvm: no hardware support
       BUG: kernel NULL pointer dereference, address: 000000000000028c
       #PF: supervisor read access in kernel mode
       #PF: error_code(0x0000) - not-present page
       PGD 0 P4D 0
       Oops: 0000 [#1] SMP NOPTI
       CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.6.0-rc4 #1
       Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
      04/01/2014
       RIP: 0010:kobject_put+0x12/0x1c0
       Call Trace:
        cpufreq_cpu_put+0x15/0x20
        kvm_arch_init+0x1f6/0x2b0
        kvm_init+0x31/0x290
        ? svm_check_processor_compat+0xd/0xd
        ? svm_check_processor_compat+0xd/0xd
        svm_init+0x21/0x23
        do_one_initcall+0x61/0x2f0
        ? rdinit_setup+0x30/0x30
        ? rcu_read_lock_sched_held+0x4f/0x80
        kernel_init_freeable+0x219/0x279
        ? rest_init+0x250/0x250
        kernel_init+0xe/0x110
        ret_from_fork+0x27/0x50
       Modules linked in:
       CR2: 000000000000028c
       ---[ end trace 239abf40c55c409b ]---
       RIP: 0010:kobject_put+0x12/0x1c0
    
    cpufreq policy which is get by cpufreq_cpu_get() can be NULL if it is failure,
    this patch takes care of it.
    
    Fixes: aaec7c03 (KVM: x86: avoid useless copy of cpufreq policy)
    Reported-by: default avatarNaresh Kamboju <naresh.kamboju@linaro.org>
    Cc: Naresh Kamboju <naresh.kamboju@linaro.org>
    Signed-off-by: default avatarWanpeng Li <wanpengli@tencent.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    9a11997e
x86.c 274 KB