]> git.hungrycats.org Git - linux/commitdiff
KVM: s390: vsie: zero stale crypto bits
authorChristian Borntraeger <borntraeger@linux.ibm.com>
Tue, 11 Aug 2026 15:37:36 +0000 (17:37 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 2 Sep 2026 12:31:51 +0000 (14:31 +0200)
commit 34d5b5b646c91cfb9338d7a12c955a70ffb8c66b upstream.

When shadowing crypto access bits from a format0 apcb (crycb 0 or 1),
the bits 64..255 are unchanged from whatever is in the vsie page in the
crycb and thus in the apcb. This gives a nested guest potential access
to a device no longer available. Zero out the remaining bits.

Fixes: 6b79de4b056e ("KVM: s390: vsie: allow guest FORMAT-1 CRYCB on host FORMAT-2")
Cc: stable@vger.kernel.org
Signed-off-by: Christian Borntraeger <borntraeger@linux.ibm.com>
Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Message-ID: <20260811153738.206885-3-borntraeger@linux.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/s390/kvm/vsie.c

index 347268f89f2f186bea623a3adff7376cabc305b2..56e82253bb7df4e26c4fa2d66139bb2ca527a7df 100644 (file)
@@ -184,6 +184,7 @@ static int setup_apcb10(struct kvm_vcpu *vcpu, struct kvm_s390_apcb1 *apcb_s,
                            sizeof(struct kvm_s390_apcb0)))
                return -EFAULT;
 
+       memset(apcb_s, 0, sizeof(*apcb_s));
        apcb_s->apm[0] = apcb_h->apm[0] & tmp.apm[0];
        apcb_s->aqm[0] = apcb_h->aqm[0] & tmp.aqm[0] & 0xffff000000000000UL;
        apcb_s->adm[0] = apcb_h->adm[0] & tmp.adm[0] & 0xffff000000000000UL;