From: "Jason J. Herne" <[email protected]>

EXTERNAL_CALL and EMERGENCY type interrupts need to preserve their interrupt
code parameter when being injected from user space.

Signed-off-by: Jason J. Herne <[email protected]>
Reviewed-by: Cornelia Huck <[email protected]>
Signed-off-by: Martin Schwidefsky <[email protected]>
Signed-off-by: Christian Borntraeger <[email protected]>
---
 arch/s390/kvm/interrupt.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c
index 7556231..744ac1b 100644
--- a/arch/s390/kvm/interrupt.c
+++ b/arch/s390/kvm/interrupt.c
@@ -631,10 +631,27 @@ int kvm_s390_inject_vcpu(struct kvm_vcpu *vcpu,
                break;
        case KVM_S390_SIGP_STOP:
        case KVM_S390_RESTART:
+               VCPU_EVENT(vcpu, 3, "inject: type %x", s390int->type);
+               inti->type = s390int->type;
+               break;
        case KVM_S390_INT_EXTERNAL_CALL:
+               if (s390int->parm & 0xffff0000) {
+                       kfree(inti);
+                       return -EINVAL;
+               }
+               VCPU_EVENT(vcpu, 3, "inject: external call source-cpu:%u",
+                          s390int->parm);
+               inti->type = s390int->type;
+               inti->extcall.code = s390int->parm;
+               break;
        case KVM_S390_INT_EMERGENCY:
-               VCPU_EVENT(vcpu, 3, "inject: type %x", s390int->type);
+               if (s390int->parm & 0xffff0000) {
+                       kfree(inti);
+                       return -EINVAL;
+               }
+               VCPU_EVENT(vcpu, 3, "inject: emergency %u\n", s390int->parm);
                inti->type = s390int->type;
+               inti->emerg.code = s390int->parm;
                break;
        case KVM_S390_INT_VIRTIO:
        case KVM_S390_INT_SERVICE:
-- 
1.7.11.7

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to