KVM: s390: Return error on SIDA memop on normal guest
authorJanis Schoetterl-Glausch <scgl@linux.ibm.com>
Fri, 28 Jan 2022 14:06:43 +0000 (15:06 +0100)
committerSalvatore Bonaccorso <carnil@debian.org>
Mon, 28 Feb 2022 11:23:03 +0000 (11:23 +0000)
Origin: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit?id=b62267b8b06e9b8bb429ae8f962ee431e6535d60
Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2022-0516

commit 2c212e1baedcd782b2535a3f86bc491977677c0e upstream.

Refuse SIDA memops on guests which are not protected.
For normal guests, the secure instruction data address designation,
which determines the location we access, is not under control of KVM.

Fixes: 19e122776886 (KVM: S390: protvirt: Introduce instruction data area bounce buffer)
Signed-off-by: Janis Schoetterl-Glausch <scgl@linux.ibm.com>
Cc: stable@vger.kernel.org
Signed-off-by: Christian Borntraeger <borntraeger@linux.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Gbp-Pq: Topic bugfix/s390x
Gbp-Pq: Name KVM-s390-Return-error-on-SIDA-memop-on-normal-guest.patch

arch/s390/kvm/kvm-s390.c

index 00f03f363c9b0b848a83174b5074df5c52acf47c..516c0f1829af08ff832d8afb153772d18713dc19 100644 (file)
@@ -4649,6 +4649,8 @@ static long kvm_s390_guest_sida_op(struct kvm_vcpu *vcpu,
                return -EINVAL;
        if (mop->size + mop->sida_offset > sida_size(vcpu->arch.sie_block))
                return -E2BIG;
+       if (!kvm_s390_pv_cpu_is_protected(vcpu))
+               return -EINVAL;
 
        switch (mop->op) {
        case KVM_S390_MEMOP_SIDA_READ: