提交 4422829e 编写于 作者: P Paolo Bonzini

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: NPaolo Bonzini <pbonzini@redhat.com>
上级 da27a83f
......@@ -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;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册