On 23.08.2018 15:12, Christian Borntraeger wrote: > > > On 08/23/2018 12:25 PM, Pierre Morel wrote: >> Copy the key mask to the right offset inside the shadow CRYCB >> >> Signed-off-by: Pierre Morel <pmorel@xxxxxxxxxxxxx> >> Reviewed-by: David Hildenbrand <david@xxxxxxxxxx> >> Reviewed-by: Cornelia Huck <cohuck@xxxxxxxxxx> >> Reviewed-by: Janosch Frank <frankja@xxxxxxxxxxxxx> >> --- >> arch/s390/kvm/vsie.c | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/arch/s390/kvm/vsie.c b/arch/s390/kvm/vsie.c >> index 9175518..12b9707 100644 >> --- a/arch/s390/kvm/vsie.c >> +++ b/arch/s390/kvm/vsie.c >> @@ -173,7 +173,8 @@ static int shadow_crycb(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page) >> return set_validity_icpt(scb_s, 0x0039U); >> >> /* copy only the wrapping keys */ >> - if (read_guest_real(vcpu, crycb_addr + 72, &vsie_page->crycb, 56)) >> + if (read_guest_real(vcpu, crycb_addr + 72, >> + vsie_page->crycb.dea_wrapping_key_mask, 56)) > > When we fix that code.., dont we have to XOR the guest3 wrapping keys with > the guest2 ones? That's done further down in that function. > > >> return set_validity_icpt(scb_s, 0x0035U); >> >> scb_s->ecb3 |= ecb3_flags; >> > -- Thanks, David / dhildenb