summaryrefslogtreecommitdiff
path: root/scripts/basic
diff options
context:
space:
mode:
authorAmirmohammad Eftekhar <amirmohammad.eftekhar@cispa.de>2026-10-31 10:05:29 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2026-11-02 13:15:45 -0500
commitd21eef2084a9af87ac2a783bc7c2b175ba114e4e (patch)
treeaf066d30784ea97ebdb17fa2050c987562ffb486 /scripts/basic
parent0cb8f16f88337a8c995d333e74c8c5b4f1d8abc2 (diff)
downloadlinux-d21eef2084a9af87ac2a783bc7c2b175ba114e4e.tar.gz
linux-d21eef2084a9af87ac2a783bc7c2b175ba114e4e.zip
KVM: VMX: Add array_index_nospec() to evmcs_field_offset()
evmcs_field_offset() bounds-checks the guest-supplied field index against nr_evmcs_1_fields and then indexes vmcs_field_to_evmcs_1[] without an array_index_nospec() clamp, unlike its vmcs12 counterpart get_vmcs12_field_offset(). A regular VMREAD instruction is allowed while an enlightened VMCS is active since 6cbbaab60ff3 ("KVM: nVMX: Allow VMREAD when Enlightened VMCS is in use"), and it reaches evmcs_field_offset() with a guest-supplied field encoding. But because the index is not clamped, the guest may be able to speculatively access past the bound check and read out of bounds of vmcs_field_to_evmcs_1[] (Spectre v1). The leaked value is only the u16 'offset', so the exposure is limited. The other callers of evmcs_field_offset() are not under direct guest control, but the array_index_nospec() clamp does not hurt them. Clamp the index with array_index_nospec(), mirroring get_vmcs12_field_offset(). Fixes: 6cbbaab60ff3 ("KVM: nVMX: Allow VMREAD when Enlightened VMCS is in use") Signed-off-by: Amirmohammad Eftekhar <amirmohammad.eftekhar@cispa.de> Message-ID: <20261031090529.65240-1-amirmohammad.eftekhar@cispa.de> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'scripts/basic')
0 files changed, 0 insertions, 0 deletions