Commit facee1be authored by David Brazdil's avatar David Brazdil Committed by Marc Zyngier
Browse files

KVM: arm64: Fix off-by-one in range_is_memory



Hyp checks whether an address range only covers RAM by checking the
start/endpoints against a list of memblock_region structs. However,
the endpoint here is exclusive but internally is treated as inclusive.
Fix the off-by-one error that caused valid address ranges to be
rejected.

Cc: Quentin Perret <qperret@google.com>
Fixes: 90134ac9 ("KVM: arm64: Protect the .hyp sections from the host")
Signed-off-by: default avatarDavid Brazdil <dbrazdil@google.com>
Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20210728153232.1018911-2-dbrazdil@google.com
parent 5cf17746
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -193,7 +193,7 @@ static bool range_is_memory(u64 start, u64 end)
{
	struct kvm_mem_range r1, r2;

	if (!find_mem_range(start, &r1) || !find_mem_range(end, &r2))
	if (!find_mem_range(start, &r1) || !find_mem_range(end - 1, &r2))
		return false;
	if (r1.start != r2.start)
		return false;