diff options
author | Jia He <[email protected]> | 2021-03-05 18:52:54 +0000 |
---|---|---|
committer | Paolo Bonzini <[email protected]> | 2021-03-06 04:18:41 -0500 |
commit | 357ad203d45c0f9d76a8feadbd5a1c5d460c638b (patch) | |
tree | a1a463e721b69500fe6e54cf2f3f493a57691216 | |
parent | 9739f6ef053f104a997165701c6e15582c4307ee (diff) |
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: [email protected]
Reported-by: Howard Zhang <[email protected]>
Acked-by: Will Deacon <[email protected]>
Signed-off-by: Jia He <[email protected]>
Fixes: b1e57de62cfb ("KVM: arm64: Add stand-alone page-table walker infrastructure")
[maz: rewrite commit message]
Signed-off-by: Marc Zyngier <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Message-Id: <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
-rw-r--r-- | arch/arm64/kvm/hyp/pgtable.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/arm64/kvm/hyp/pgtable.c b/arch/arm64/kvm/hyp/pgtable.c index 4d177ce1d536..926fc07074f5 100644 --- a/arch/arm64/kvm/hyp/pgtable.c +++ b/arch/arm64/kvm/hyp/pgtable.c @@ -223,6 +223,7 @@ static inline int __kvm_pgtable_visit(struct kvm_pgtable_walk_data *data, goto out; if (!table) { + data->addr = ALIGN_DOWN(data->addr, kvm_granule_size(level)); data->addr += kvm_granule_size(level); goto out; } |