get_ttb() returns an uint64_t * which means that with

get_ttb() + idx * GRANULE_SIZE

the distance between two PTEs is wrongly calculated as 0x8000 bytes
instead of 0x1000 bytes. With this we leave the space allocated for PTEs
quite fast and the available space check also doesn't work.

Fix this by explicitly casting to void *.

Signed-off-by: Sascha Hauer <s.ha...@pengutronix.de>
---
 arch/arm/cpu/mmu_64.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/cpu/mmu_64.c b/arch/arm/cpu/mmu_64.c
index 716e717c72..d62527809e 100644
--- a/arch/arm/cpu/mmu_64.c
+++ b/arch/arm/cpu/mmu_64.c
@@ -45,7 +45,7 @@ static uint64_t *alloc_pte(void)
        if (idx * GRANULE_SIZE >= ARM_EARLY_PAGETABLE_SIZE)
                return NULL;
 
-       return get_ttb() + idx * GRANULE_SIZE;
+       return (void *)get_ttb() + idx * GRANULE_SIZE;
 }
 #else
 static uint64_t *alloc_pte(void)
-- 
2.39.2


Reply via email to