Skip to content

Commit 357ad20

Browse files
justin-hebonzini
authored andcommitted
KVM: arm64: Fix range alignment when walking page tables
When walking the page tables at a given level, and if the start address for the range isn't aligned for that level, we propagate the misalignment on each iteration at that level. This results in the walker ignoring a number of entries (depending on the original misalignment) on each subsequent iteration. Properly aligning the address before the next iteration addresses this issue. Cc: stable@vger.kernel.org Reported-by: Howard Zhang <Howard.Zhang@arm.com> Acked-by: Will Deacon <will@kernel.org> Signed-off-by: Jia He <justin.he@arm.com> Fixes: b1e57de ("KVM: arm64: Add stand-alone page-table walker infrastructure") [maz: rewrite commit message] Signed-off-by: Marc Zyngier <maz@kernel.org> Link: https://lore.kernel.org/r/20210303024225.2591-1-justin.he@arm.com Message-Id: <20210305185254.3730990-9-maz@kernel.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
1 parent 9739f6e commit 357ad20

1 file changed

Lines changed: 1 addition & 0 deletions

File tree

arch/arm64/kvm/hyp/pgtable.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,7 @@ static inline int __kvm_pgtable_visit(struct kvm_pgtable_walk_data *data,
223223
goto out;
224224

225225
if (!table) {
226+
data->addr = ALIGN_DOWN(data->addr, kvm_granule_size(level));
226227
data->addr += kvm_granule_size(level);
227228
goto out;
228229
}

0 commit comments

Comments
 (0)