Merge tag 'kvm-s390-20140730' of git://git.kernel.org/pub/scm/linux/kernel/git/kvms39...
authorPaolo Bonzini <pbonzini@redhat.com>
Thu, 31 Jul 2014 14:31:49 +0000 (16:31 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 31 Jul 2014 14:31:49 +0000 (16:31 +0200)
Two fixes for recently introduced regressions
- a memory leak on busy SIGP
- pontentially lost SIGP stop in rare situations (shutdown loops)

The first issue is not part of a released kernel. The 2nd issue is
present in all KVM versions, but did not trigger before commit
7dfc63cf977447e09b1072911c2 (KVM: s390: allow only one SIGP STOP
(AND STORE STATUS) at a time) with Linux as a guest.
So no need for cc stable

arch/s390/kvm/interrupt.c
arch/s390/kvm/sigp.c

index 1be3d8da49e91d6fb16807e459a8867a9d7be879..92528a0bdda6c0063de80e4a5d22fdefef7edd25 100644 (file)
@@ -158,6 +158,9 @@ static void __reset_intercept_indicators(struct kvm_vcpu *vcpu)
                                               LCTL_CR10 | LCTL_CR11);
                vcpu->arch.sie_block->ictl |= (ICTL_STCTL | ICTL_PINT);
        }
+
+       if (vcpu->arch.local_int.action_bits & ACTION_STOP_ON_STOP)
+               atomic_set_mask(CPUSTAT_STOP_INT, &vcpu->arch.sie_block->cpuflags);
 }
 
 static void __set_cpuflag(struct kvm_vcpu *vcpu, u32 flag)
index c6f1c2bc9753919f1dc87df96d2f263db297a4d1..cf243ba3d50f2907277ce18a1af88944ff5efc55 100644 (file)
@@ -139,6 +139,7 @@ static int __inject_sigp_stop(struct kvm_vcpu *dst_vcpu, int action)
        spin_lock(&li->lock);
        if (li->action_bits & ACTION_STOP_ON_STOP) {
                /* another SIGP STOP is pending */
+               kfree(inti);
                rc = SIGP_CC_BUSY;
                goto out;
        }
This page took 0.026187 seconds and 5 git commands to generate.