• Sean Christopherson's avatar
    x86/hyperv: Fix NULL deref in set_hv_tscchange_cb() if Hyper-V setup fails · daf97211
    Sean Christopherson authored
    Check for a valid hv_vp_index array prior to derefencing hv_vp_index when
    setting Hyper-V's TSC change callback.  If Hyper-V setup failed in
    hyperv_init(), the kernel will still report that it's running under
    Hyper-V, but will have silently disabled nearly all functionality.
    
      BUG: kernel NULL pointer dereference, address: 0000000000000010
      #PF: supervisor read access in kernel mode
      #PF: error_code(0x0000) - not-present page
      PGD 0 P4D 0
      Oops: 0000 [#1] SMP
      CPU: 4 PID: 1 Comm: swapper/0 Not tainted 5.15.0-rc2+ #75
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
      RIP: 0010:set_hv_tscchange_cb+0x15/0xa0
      Code: <8b> 04 82 8b 15 12 17 85 01 48 c1 e0 20 48 0d ee 00 01 00 f6 c6 08
      ...
      Call Trace:
       kvm_arch_init+0x17c/0x280
       kvm_init+0x31/0x330
       vmx_init+0xba/0x13a
       do_one_initcall+0x41/0x1c0
       kernel_init_freeable+0x1f2/0x23b
       kernel_init+0x16/0x120
       ret_from_fork+0x22/0x30
    
    Fixes: 93286261 ("x86/hyperv: Reenlightenment notifications support")
    Cc: stable@vger.kernel.org
    Cc: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
    Reviewed-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
    Link: https://lore.kernel.org/r/20211104182239.1302956-2-seanjc@google.comSigned-off-by: default avatarWei Liu <wei.liu@kernel.org>
    daf97211
hv_init.c 15.5 KB