• Alex Williamson's avatar
    drm/i915/kvmgt: Hold struct kvm reference · 93a15b58
    Alex Williamson authored
    The kvmgt code keeps a pointer to the struct kvm associated with the
    device, but doesn't actually hold a reference to it.  If we do unclean
    shutdown testing (ie. killing the user process), then we can see the
    kvm association to the device unset, which causes kvmgt to trigger a
    device release via a work queue.  Naturally we cannot guarantee that
    the cached struct kvm pointer is still valid at this point without
    holding a reference.  The observed failure in this case is a stuck
    cpu trying to acquire the spinlock from the invalid reference, but
    other failure modes are clearly possible.  Hold a reference to avoid
    this.
    Signed-off-by: default avatarAlex Williamson <alex.williamson@redhat.com>
    Cc: stable@vger.kernel.org #v4.10
    Cc: Jike Song <jike.song@intel.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Zhenyu Wang <zhenyuw@linux.intel.com>
    Cc: Zhi Wang <zhi.a.wang@intel.com>
    Reviewed-by: default avatarJike Song <jike.song@intel.com>
    Signed-off-by: default avatarZhenyu Wang <zhenyuw@linux.intel.com>
    93a15b58
kvmgt.c 34.2 KB