Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 133608f3 authored by Thomas Huth's avatar Thomas Huth Committed by Paolo Bonzini
Browse files

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: default avatarThomas Huth <thuth@linux.vnet.ibm.com>
Acked-by: default avatarCornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: default avatarCornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 93e1750f
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -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