mirror of https://gitee.com/openkylin/linux.git
KVM: s390: Check for access exceptions during TPI
When a guest calls the TPI instruction, the second operand address could point to an invalid location. In this case the problem should be signaled to the guest by throwing an access exception. Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com> Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
93e1750f5e
commit
133608f392
|
@ -146,9 +146,10 @@ static int handle_tpi(struct kvm_vcpu *vcpu)
|
|||
* Store the two-word I/O interruption code into the
|
||||
* provided area.
|
||||
*/
|
||||
put_guest(vcpu, inti->io.subchannel_id, (u16 __user *) addr);
|
||||
put_guest(vcpu, inti->io.subchannel_nr, (u16 __user *) (addr + 2));
|
||||
put_guest(vcpu, inti->io.io_int_parm, (u32 __user *) (addr + 4));
|
||||
if (put_guest(vcpu, inti->io.subchannel_id, (u16 __user *)addr)
|
||||
|| put_guest(vcpu, inti->io.subchannel_nr, (u16 __user *)(addr + 2))
|
||||
|| put_guest(vcpu, inti->io.io_int_parm, (u32 __user *)(addr + 4)))
|
||||
return kvm_s390_inject_program_int(vcpu, PGM_ADDRESSING);
|
||||
} else {
|
||||
/*
|
||||
* Store the three-word I/O interruption code into
|
||||
|
|
Loading…
Reference in New Issue