Commit 5a00a5e7 authored by Christian Borntraeger's avatar Christian Borntraeger Committed by Avi Kivity

KVM: s390: Fix possible host kernel bug on lctl(g) handling

The lctl(g) instructions require a specific alignment for the parameters.
The architecture requires a specification program check if these alignments
are not used. Enforcing this alignment also removes a possible host BUG,
since the get_guest functions check for proper alignment and emits a BUG.
Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: default avatarAvi Kivity <avi@qumranet.com>
parent f5e10b09
...@@ -38,6 +38,9 @@ static int handle_lctlg(struct kvm_vcpu *vcpu) ...@@ -38,6 +38,9 @@ static int handle_lctlg(struct kvm_vcpu *vcpu)
if (base2) if (base2)
useraddr += vcpu->arch.guest_gprs[base2]; useraddr += vcpu->arch.guest_gprs[base2];
if (useraddr & 7)
return kvm_s390_inject_program_int(vcpu, PGM_SPECIFICATION);
reg = reg1; reg = reg1;
VCPU_EVENT(vcpu, 5, "lctlg r1:%x, r3:%x,b2:%x,d2:%x", reg1, reg3, base2, VCPU_EVENT(vcpu, 5, "lctlg r1:%x, r3:%x,b2:%x,d2:%x", reg1, reg3, base2,
...@@ -74,6 +77,9 @@ static int handle_lctl(struct kvm_vcpu *vcpu) ...@@ -74,6 +77,9 @@ static int handle_lctl(struct kvm_vcpu *vcpu)
if (base2) if (base2)
useraddr += vcpu->arch.guest_gprs[base2]; useraddr += vcpu->arch.guest_gprs[base2];
if (useraddr & 3)
return kvm_s390_inject_program_int(vcpu, PGM_SPECIFICATION);
VCPU_EVENT(vcpu, 5, "lctl r1:%x, r3:%x,b2:%x,d2:%x", reg1, reg3, base2, VCPU_EVENT(vcpu, 5, "lctl r1:%x, r3:%x,b2:%x,d2:%x", reg1, reg3, base2,
disp2); disp2);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment