linux-stable/arch/arm64/kvm
Will Deacon 9ad4da79c7 KVM: arm64: Ensure 'params' is initialised when looking up sys register
commit 1ce74e96c2 upstream.

Commit 4b927b94d5 ("KVM: arm/arm64: vgic: Introduce find_reg_by_id()")
introduced 'find_reg_by_id()', which looks up a system register only if
the 'id' index parameter identifies a valid system register. As part of
the patch, existing callers of 'find_reg()' were ported over to the new
interface, but this breaks 'index_to_sys_reg_desc()' in the case that the
initial lookup in the vCPU target table fails because we will then call
into 'find_reg()' for the system register table with an uninitialised
'param' as the key to the lookup.

GCC 10 is bright enough to spot this (amongst a tonne of false positives,
but hey!):

  | arch/arm64/kvm/sys_regs.c: In function ‘index_to_sys_reg_desc.part.0.isra’:
  | arch/arm64/kvm/sys_regs.c:983:33: warning: ‘params.Op2’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  |   983 |   (u32)(x)->CRn, (u32)(x)->CRm, (u32)(x)->Op2);
  | [...]

Revert the hunk of 4b927b94d5 which breaks 'index_to_sys_reg_desc()' so
that the old behaviour of checking the index upfront is restored.

Fixes: 4b927b94d5 ("KVM: arm/arm64: vgic: Introduce find_reg_by_id()")
Signed-off-by: Will Deacon <will@kernel.org>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20191212094049.12437-1-will@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-12-31 16:36:28 +01:00
..
hyp KVM: arm64: Set SCTLR_EL2.DSSBS if SSBD is forcefully disabled and !vhe 2019-10-11 18:21:30 +02:00
debug.c KVM: arm64: Repurpose vcpu_arch.debug_flags for general-purpose flags 2018-05-25 12:28:13 +01:00
fpsimd.c KVM: arm64: Avoid mistaken attempts to save SVE state for vcpus 2018-06-21 09:14:44 +01:00
guest.c arm64: KVM: Sanitize PSTATE.M when being set from userspace 2018-10-01 14:38:26 +01:00
handle_exit.c arm/arm64: KVM: Advertise SMCCC v1.1 2018-02-06 22:54:01 +00:00
hyp-init.S arm64: KVM: Cleanup tpidr_el2 init on non-VHE 2018-07-21 16:02:17 +01:00
hyp.S arm64: hyp-stub/KVM: Kill __hyp_get_vectors 2017-04-09 07:49:34 -07:00
inject_fault.c arm/arm64: KVM: Add KVM_GET/SET_VCPU_EVENTS 2018-07-21 16:02:30 +01:00
irq.h KVM: arm/arm64: Enable irqchip routing 2016-07-22 18:52:01 +01:00
Kconfig KVM: arm64: Optimise FPSIMD handling to reduce guest/host thrashing 2018-05-25 12:28:28 +01:00
Makefile KVM: arm64: Optimise FPSIMD handling to reduce guest/host thrashing 2018-05-25 12:28:28 +01:00
regmap.c arm64: KVM: regmap: Fix unexpected switch fall-through 2019-08-25 10:47:58 +02:00
reset.c KVM: arm64: Reset the PMU in preemptible context 2019-05-04 09:20:13 +02:00
sys_regs.c KVM: arm64: Ensure 'params' is initialised when looking up sys register 2019-12-31 16:36:28 +01:00
sys_regs.h KVM: arm64: Rewrite system register accessors to read/write functions 2018-03-19 10:53:16 +00:00
sys_regs_generic_v8.c KVM: arm64: Rewrite system register accessors to read/write functions 2018-03-19 10:53:16 +00:00
trace.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
va_layout.c arm64: KVM: Allow mapping of vectors outside of the RAM region 2018-03-19 13:06:46 +00:00
vgic-sys-reg-v3.c KVM: arm/arm64: Extract GICv3 max APRn index calculation 2017-09-05 17:33:39 +02:00