Skip to content

Commit 44acac0

Browse files
efarmanfrankjaa
authored andcommitted
KVM: s390: vsie: Check alignment of BSCA header
The VSIE code currently checks that the BSCA struct fits within a page, and returns a validity exception 0x003b if it doesn't. The BSCA is pinned in memory rather than shadowed (see block comment at end of kvm_s390_cpu_feat_init()), so enforcing the CPU entries to be on the same pinned page makes sense. Except those entries aren't going to be used below the guest, and according to the definition of that validity exception only the header of the BSCA (everything but the CPU entries) needs to be within a page. Adjust the alignment check to account for that. Signed-off-by: Eric Farman <farman@linux.ibm.com> Reviewed-by: Christian Borntraeger <borntraeger@linux.ibm.com> Reviewed-by: Christoph Schlameuss <schlameuss@linux.ibm.com> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
1 parent 8e8678e commit 44acac0

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

arch/s390/kvm/vsie.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -782,7 +782,7 @@ static int pin_blocks(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
782782
else if ((gpa & ~0x1fffUL) == kvm_s390_get_prefix(vcpu))
783783
rc = set_validity_icpt(scb_s, 0x0011U);
784784
else if ((gpa & PAGE_MASK) !=
785-
((gpa + sizeof(struct bsca_block) - 1) & PAGE_MASK))
785+
((gpa + offsetof(struct bsca_block, cpu[0]) - 1) & PAGE_MASK))
786786
rc = set_validity_icpt(scb_s, 0x003bU);
787787
if (!rc) {
788788
rc = pin_guest_page(vcpu->kvm, gpa, &hpa);

0 commit comments

Comments
 (0)