From: Cornelia Huck <cornelia.huck@de.ibm.com>
To: Avi Kivity <avi@redhat.com>, Marcelo Tosatti <mtosatti@redhat.com>
Cc: Christian Borntraeger <borntraeger@de.ibm.com>,
Carsten Otte <cotte@de.ibm.com>, Alexander Graf <agraf@suse.de>,
Heiko Carstens <heiko.carstens@de.ibm.com>,
Martin Schwidefsky <schwidefsky@de.ibm.com>,
KVM <kvm@vger.kernel.org>,
linux-s390 <linux-s390@vger.kernel.org>
Subject: [PATCH 4/6] KVM: s390: fix sigp set prefix status stored cases
Date: Tue, 26 Jun 2012 16:06:39 +0200 [thread overview]
Message-ID: <1340719601-11867-5-git-send-email-cornelia.huck@de.ibm.com> (raw)
In-Reply-To: <1340719601-11867-1-git-send-email-cornelia.huck@de.ibm.com>
From: Heiko Carstens <heiko.carstens@de.ibm.com>
If an invalid parameter is passed or the addressed cpu is in an
incorrect state sigp set prefix will store a status.
This status must only have bits set as defined by the architecture.
The current kvm implementation missed to clear bits and also did
not set the intended status bit ("and" instead of "or" operation).
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
---
arch/s390/kvm/sigp.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/arch/s390/kvm/sigp.c b/arch/s390/kvm/sigp.c
index caccc0e..ca544d5 100644
--- a/arch/s390/kvm/sigp.c
+++ b/arch/s390/kvm/sigp.c
@@ -207,6 +207,7 @@ static int __sigp_set_prefix(struct kvm_vcpu *vcpu, u16 cpu_addr, u32 address,
address = address & 0x7fffe000u;
if (copy_from_guest_absolute(vcpu, &tmp, address, 1) ||
copy_from_guest_absolute(vcpu, &tmp, address + PAGE_SIZE, 1)) {
+ *reg &= 0xffffffff00000000UL;
*reg |= SIGP_STATUS_INVALID_PARAMETER;
return 1; /* invalid parameter */
}
@@ -220,8 +221,9 @@ static int __sigp_set_prefix(struct kvm_vcpu *vcpu, u16 cpu_addr, u32 address,
li = fi->local_int[cpu_addr];
if (li == NULL) {
+ *reg &= 0xffffffff00000000UL;
+ *reg |= SIGP_STATUS_INCORRECT_STATE;
rc = 1; /* incorrect state */
- *reg &= SIGP_STATUS_INCORRECT_STATE;
kfree(inti);
goto out_fi;
}
@@ -229,8 +231,9 @@ static int __sigp_set_prefix(struct kvm_vcpu *vcpu, u16 cpu_addr, u32 address,
spin_lock_bh(&li->lock);
/* cpu must be in stopped state */
if (!(atomic_read(li->cpuflags) & CPUSTAT_STOPPED)) {
+ *reg &= 0xffffffff00000000UL;
+ *reg |= SIGP_STATUS_INCORRECT_STATE;
rc = 1; /* incorrect state */
- *reg &= SIGP_STATUS_INCORRECT_STATE;
kfree(inti);
goto out_li;
}
--
1.7.10.4
next prev parent reply other threads:[~2012-06-26 14:06 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-26 14:06 [PATCH 0/6] kvm/s390: sigp related changes for 3.6 Cornelia Huck
2012-06-26 14:06 ` [PATCH 1/6] s390/smp: remove redundant check Cornelia Huck
2012-06-26 14:06 ` [PATCH 2/6] s390/smp/kvm: unifiy sigp definitions Cornelia Huck
2012-06-26 14:06 ` [PATCH 3/6] KVM: s390: fix sigp sense running condition code handling Cornelia Huck
2012-06-26 14:52 ` Alexander Graf
2012-06-26 15:33 ` Cornelia Huck
2012-06-26 15:36 ` Alexander Graf
2012-06-26 15:57 ` Cornelia Huck
2012-06-26 16:03 ` Alexander Graf
2012-06-26 14:06 ` Cornelia Huck [this message]
2012-06-26 14:56 ` [PATCH 4/6] KVM: s390: fix sigp set prefix status stored cases Alexander Graf
2012-06-26 15:39 ` Cornelia Huck
2012-06-26 15:42 ` Alexander Graf
2012-06-26 14:06 ` [PATCH 5/6] KVM: s390: use sigp condition code defines Cornelia Huck
2012-06-26 14:06 ` [PATCH 6/6] KVM: s390: Fix sigp sense handling Cornelia Huck
2012-06-29 23:19 ` [PATCH 0/6] kvm/s390: sigp related changes for 3.6 Marcelo Tosatti
2012-07-02 10:00 ` Martin Schwidefsky
2012-07-02 23:16 ` Marcelo Tosatti
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1340719601-11867-5-git-send-email-cornelia.huck@de.ibm.com \
--to=cornelia.huck@de.ibm.com \
--cc=agraf@suse.de \
--cc=avi@redhat.com \
--cc=borntraeger@de.ibm.com \
--cc=cotte@de.ibm.com \
--cc=heiko.carstens@de.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=mtosatti@redhat.com \
--cc=schwidefsky@de.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).