[3.13.y.z extended stable] Patch "KVM: PPC: Book3S PR: Take SRCU read lock around RTAS kvm_read_guest() call" has been added to staging queue
Kamal Mostafa
kamal at canonical.com
Mon Sep 15 22:07:45 UTC 2014
This is a note to let you know that I have just added a patch titled
KVM: PPC: Book3S PR: Take SRCU read lock around RTAS kvm_read_guest() call
to the linux-3.13.y-queue branch of the 3.13.y.z extended stable tree
which can be found at:
http://kernel.ubuntu.com/git?p=ubuntu/linux.git;a=shortlog;h=refs/heads/linux-3.13.y-queue
This patch is scheduled to be released in version 3.13.11.7.
If you, or anyone else, feels it should not be added to this tree, please
reply to this email.
For more information about the 3.13.y.z tree, see
https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable
Thanks.
-Kamal
------
>From a0fd9e0e327903141ee595f3845a999f5a2c7cac Mon Sep 17 00:00:00 2001
From: Paul Mackerras <paulus at samba.org>
Date: Sat, 19 Jul 2014 17:59:35 +1000
Subject: KVM: PPC: Book3S PR: Take SRCU read lock around RTAS kvm_read_guest()
call
commit ef1af2e29622ff3403926ae801a2b10da075a2de upstream.
This does for PR KVM what c9438092cae4 ("KVM: PPC: Book3S HV: Take SRCU
read lock around kvm_read_guest() call") did for HV KVM, that is,
eliminate a "suspicious rcu_dereference_check() usage!" warning by
taking the SRCU lock around the call to kvmppc_rtas_hcall().
It also fixes a return of RESUME_HOST to return EMULATE_FAIL instead,
since kvmppc_h_pr() is supposed to return EMULATE_* values.
Signed-off-by: Paul Mackerras <paulus at samba.org>
Signed-off-by: Alexander Graf <agraf at suse.de>
Signed-off-by: Kamal Mostafa <kamal at canonical.com>
---
arch/powerpc/kvm/book3s_pr_papr.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc/kvm/book3s_pr_papr.c b/arch/powerpc/kvm/book3s_pr_papr.c
index 5efa97b..7a801b5 100644
--- a/arch/powerpc/kvm/book3s_pr_papr.c
+++ b/arch/powerpc/kvm/book3s_pr_papr.c
@@ -258,6 +258,8 @@ static int kvmppc_h_pr_xics_hcall(struct kvm_vcpu *vcpu, u32 cmd)
int kvmppc_h_pr(struct kvm_vcpu *vcpu, unsigned long cmd)
{
+ int rc, idx;
+
switch (cmd) {
case H_ENTER:
return kvmppc_h_pr_enter(vcpu);
@@ -286,8 +288,11 @@ int kvmppc_h_pr(struct kvm_vcpu *vcpu, unsigned long cmd)
break;
case H_RTAS:
if (list_empty(&vcpu->kvm->arch.rtas_tokens))
- return RESUME_HOST;
- if (kvmppc_rtas_hcall(vcpu))
+ break;
+ idx = srcu_read_lock(&vcpu->kvm->srcu);
+ rc = kvmppc_rtas_hcall(vcpu);
+ srcu_read_unlock(&vcpu->kvm->srcu, idx);
+ if (rc)
break;
kvmppc_set_gpr(vcpu, 3, 0);
return EMULATE_DONE;
--
1.9.1
More information about the kernel-team
mailing list