aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2021-06-09 01:49:13 -0400
committerPaolo Bonzini <pbonzini@redhat.com>2021-06-09 01:49:13 -0400
commit4422829e8053068e0225e4d0ef42dc41ea7c9ef5 (patch)
tree4604b6646782e727dc5d16b506d12e282eded269
parentda27a83fd6cc7780fea190e1f5c19e87019da65c (diff)
downloadlinux-4422829e8053068e0225e4d0ef42dc41ea7c9ef5.tar.gz
kvm: fix previous commit for 32-bit builds
array_index_nospec does not work for uint64_t on 32-bit builds. However, the size of a memory slot must be less than 20 bits wide on those system, since the memory slot must fit in the user address space. So just store it in an unsigned long. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--include/linux/kvm_host.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index 74995f0a2a3cbc..8583ed3ff3447d 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -1191,8 +1191,8 @@ __gfn_to_hva_memslot(const struct kvm_memory_slot *slot, gfn_t gfn)
* table walks, do not let the processor speculate loads outside
* the guest's registered memslots.
*/
- unsigned long offset = array_index_nospec(gfn - slot->base_gfn,
- slot->npages);
+ unsigned long offset = gfn - slot->base_gfn;
+ offset = array_index_nospec(offset, slot->npages);
return slot->userspace_addr + offset * PAGE_SIZE;
}