diff mbox

KVM: x86: cleanup the page tracking SRCU instance

Message ID 1490688894-23596-1-git-send-email-pbonzini@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Paolo Bonzini March 28, 2017, 8:14 a.m. UTC
Suggested-by: Dmitry Vyukov <dvyukov@google.com>
Cc: stable@vger.kernel.org
Fixes: 0eb05bf290cfe8610d9680b49abef37febd1c38a
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 arch/x86/include/asm/kvm_page_track.h | 1 +
 arch/x86/kvm/page_track.c             | 8 ++++++++
 arch/x86/kvm/x86.c                    | 1 +
 3 files changed, 10 insertions(+)

Comments

Greg KH March 28, 2017, 9:13 a.m. UTC | #1
On Tue, Mar 28, 2017 at 10:14:54AM +0200, Paolo Bonzini wrote:
> Suggested-by: Dmitry Vyukov <dvyukov@google.com>
> Cc: stable@vger.kernel.org
> Fixes: 0eb05bf290cfe8610d9680b49abef37febd1c38a
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

A stable patch with no changelog text at all?  That's not ok, please
provide some information at the least to justify this patch for Linus's
tree, and especially for a reason to be backported to a stable kernel...

thanks,

greg k-h
Paolo Bonzini March 28, 2017, 9:16 a.m. UTC | #2
On 28/03/2017 11:13, Greg KH wrote:
>> Suggested-by: Dmitry Vyukov <dvyukov@google.com>
>> Cc: stable@vger.kernel.org
>> Fixes: 0eb05bf290cfe8610d9680b49abef37febd1c38a
>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> A stable patch with no changelog text at all?  That's not ok, please
> provide some information at the least to justify this patch for Linus's
> tree, and especially for a reason to be backported to a stable kernel...

The reason I had no changelog text is that the bug is brown-paper-worthy
and I thought the patch was pretty self-commenting.  But I will fix
before pushing and also add Reported-by in addition to Suggested-by.

Paolo
diff mbox

Patch

diff --git a/arch/x86/include/asm/kvm_page_track.h b/arch/x86/include/asm/kvm_page_track.h
index d74747b031ec..c4eda791f877 100644
--- a/arch/x86/include/asm/kvm_page_track.h
+++ b/arch/x86/include/asm/kvm_page_track.h
@@ -46,6 +46,7 @@  struct kvm_page_track_notifier_node {
 };
 
 void kvm_page_track_init(struct kvm *kvm);
+void kvm_page_track_cleanup(struct kvm *kvm);
 
 void kvm_page_track_free_memslot(struct kvm_memory_slot *free,
 				 struct kvm_memory_slot *dont);
diff --git a/arch/x86/kvm/page_track.c b/arch/x86/kvm/page_track.c
index 37942e419c32..60168cdd0546 100644
--- a/arch/x86/kvm/page_track.c
+++ b/arch/x86/kvm/page_track.c
@@ -160,6 +160,14 @@  bool kvm_page_track_is_active(struct kvm_vcpu *vcpu, gfn_t gfn,
 	return !!ACCESS_ONCE(slot->arch.gfn_track[mode][index]);
 }
 
+void kvm_page_track_cleanup(struct kvm *kvm)
+{
+	struct kvm_page_track_notifier_head *head;
+
+	head = &kvm->arch.track_notifier_head;
+	cleanup_srcu_struct(&head->track_srcu);
+}
+
 void kvm_page_track_init(struct kvm *kvm)
 {
 	struct kvm_page_track_notifier_head *head;
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 64697fe475c3..f2379673912a 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -8070,6 +8070,7 @@  void kvm_arch_sync_events(struct kvm *kvm)
 	cancel_delayed_work_sync(&kvm->arch.kvmclock_update_work);
 	kvm_free_all_assigned_devices(kvm);
 	kvm_free_pit(kvm);
+	kvm_page_track_cleanup(kvm);
 }
 
 int __x86_set_memory_region(struct kvm *kvm, int id, gpa_t gpa, u32 size)