• A
    drm/i915/kvmgt: Hold struct kvm reference · 93a15b58
    Alex Williamson 提交于
    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: NAlex 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: NJike Song <jike.song@intel.com>
    Signed-off-by: NZhenyu Wang <zhenyuw@linux.intel.com>
    93a15b58
kvmgt.c 34.2 KB