lkml.org 
[lkml]   [2022]   [Aug]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.19 0044/1157] KVM: x86/xen: Initialize Xen timer only once
    Date
    From: Coleman Dietsch <dietschc@csp.edu>

    commit af735db31285fa699384c649be72a9f32ecbb665 upstream.

    Add a check for existing xen timers before initializing a new one.

    Currently kvm_xen_init_timer() is called on every
    KVM_XEN_VCPU_ATTR_TYPE_TIMER, which is causing the following ODEBUG
    crash when vcpu->arch.xen.timer is already set.

    ODEBUG: init active (active state 0)
    object type: hrtimer hint: xen_timer_callbac0
    RIP: 0010:debug_print_object+0x16e/0x250 lib/debugobjects.c:502
    Call Trace:
    __debug_object_init
    debug_hrtimer_init
    debug_init
    hrtimer_init
    kvm_xen_init_timer
    kvm_xen_vcpu_set_attr
    kvm_arch_vcpu_ioctl
    kvm_vcpu_ioctl
    vfs_ioctl

    Fixes: 536395260582 ("KVM: x86/xen: handle PV timers oneshot mode")
    Cc: stable@vger.kernel.org
    Link: https://syzkaller.appspot.com/bug?id=8234a9dfd3aafbf092cc5a7cd9842e3ebc45fc42
    Reported-by: syzbot+e54f930ed78eb0f85281@syzkaller.appspotmail.com
    Signed-off-by: Coleman Dietsch <dietschc@csp.edu>
    Reviewed-by: Sean Christopherson <seanjc@google.com>
    Message-Id: <20220808190607.323899-2-dietschc@csp.edu>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/x86/kvm/xen.c | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    --- a/arch/x86/kvm/xen.c
    +++ b/arch/x86/kvm/xen.c
    @@ -713,7 +713,9 @@ int kvm_xen_vcpu_set_attr(struct kvm_vcp
    break;
    }
    vcpu->arch.xen.timer_virq = data->u.timer.port;
    - kvm_xen_init_timer(vcpu);
    +
    + if (!vcpu->arch.xen.timer.function)
    + kvm_xen_init_timer(vcpu);

    /* Restart the timer if it's set */
    if (data->u.timer.expires_ns)

    \
     
     \ /
      Last update: 2022-08-15 23:57    [W:4.051 / U:0.212 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site