Patch "drm/i915/kvmgt: Hold struct kvm reference" has been added to the 4.10-stable tree
This is a note to let you know that I've just added the patch titled
drm/i915/kvmgt: Hold struct kvm reference
to the 4.10-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
drm-i915-kvmgt-hold-struct-kvm-reference.patch
and it can be found in the queue-4.10 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
93a15b58cfb8a24e666ffca432f19fe65c1cd7d1Mon Sep 17 00:00:00 2001
From: Alex Williamson <[email protected]>
Date: Sun, 19 Mar 2017 20:38:40 -0600
Subject: drm/i915/kvmgt: Hold struct kvm reference
From: Alex Williamson <[email protected]>
commit 93a15b58cfb8a24e666ffca432f19fe65c1cd7d1 upstream.
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.
--- drivers/gpu/drm/i915/gvt/kvmgt.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/gpu/drm/i915/gvt/kvmgt.c +2 -0
@@ -1334,6 +1334,7 @@ static int kvmgt_guest_init(struct mdev_ vgpu->handle = (unsigned long )info; info->vgpu = vgpu; info->kvm = kvm; +kvm_get_kvm (info->kvm);kvmgt_protect_table_init (info);gvt_cache_init (vgpu);
@@ -1353,6 +1354,7 @@ static bool kvmgt_guest_exit(struct kvmg }kvm_page_track_unregister_notifier (info->kvm, &info->track_node); +kvm_put_kvm (info->kvm);kvmgt_protect_table_destroy (info);gvt_cache_destroy (info->vgpu);vfree (info);
Patches currently in stable-queue which might be from [email protected] are
queue-4.10/drm-i915-kvmgt-hold-struct-kvm-reference.patch