android_kernel_oneplus_msm8998/arch/s390/kvm
Thomas Huth 126ed52d7c KVM: s390: Test for bad access register and size at the start of S390_MEM_OP
commit a13b03bbb4575b350b46090af4dfd30e735aaed1 upstream.

If the KVM_S390_MEM_OP ioctl is called with an access register >= 16,
then there is certainly a bug in the calling userspace application.
We check for wrong access registers, but only if the vCPU was already
in the access register mode before (i.e. the SIE block has recorded
it). The check is also buried somewhere deep in the calling chain (in
the function ar_translation()), so this is somewhat hard to find.

It's better to always report an error to the userspace in case this
field is set wrong, and it's safer in the KVM code if we block wrong
values here early instead of relying on a check somewhere deep down
the calling chain, so let's add another check to kvm_s390_guest_mem_op()
directly.

We also should check that the "size" is non-zero here (thanks to Janosch
Frank for the hint!). If we do not check the size, we could call vmalloc()
with this 0 value, and this will cause a kernel warning.

Signed-off-by: Thomas Huth <thuth@redhat.com>
Link: https://lkml.kernel.org/r/20190829122517.31042-1-thuth@redhat.com
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Janosch Frank <frankja@linux.ibm.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Cc: stable@vger.kernel.org
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-10-17 13:40:52 -07:00
..
diag.c KVM: s390: add more debug data for the pfault diagnoses 2015-07-29 11:02:34 +02:00
gaccess.c KVM: s390: Add MEMOP ioctls for reading/writing guest memory 2015-03-17 16:26:24 +01:00
gaccess.h KVM: s390: Add MEMOP ioctls for reading/writing guest memory 2015-03-17 16:26:24 +01:00
guestdbg.c KVM: s390: filter space-switch events when PER is enforced 2015-07-29 10:36:22 +02:00
intercept.c KVM: s390: use simple switch statement as multiplexer 2015-10-29 15:59:11 +01:00
interrupt.c KVM: s390: Do not leak kernel stack data in the KVM_S390_INTERRUPT ioctl 2019-09-21 07:12:43 +02:00
irq.h
Kconfig rcu: Make SRCU optional by using CONFIG_SRCU 2015-01-06 11:04:29 -08:00
kvm-s390.c KVM: s390: Test for bad access register and size at the start of S390_MEM_OP 2019-10-17 13:40:52 -07:00
kvm-s390.h KVM: s390: factor out reading of the guest TOD clock 2015-10-13 15:50:35 +02:00
Makefile
priv.c KVM: s390: fix pfmf intercept handler 2015-11-19 11:08:17 +01:00
sigp.c KVM: s390: fix wrong lookup of VCPUs by array index 2015-11-19 14:47:43 +01:00
trace-s390.h KVM: s390: more irq names for trace events 2015-07-29 11:02:34 +02:00
trace.h