]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
powerpc/mm: Fix size of allocated PGDIR
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Thu, 8 Aug 2024 09:32:47 +0000 (11:32 +0200)
committerMichael Ellerman <mpe@ellerman.id.au>
Mon, 12 Aug 2024 11:49:53 +0000 (21:49 +1000)
Commit 6b0e82791bd0 ("powerpc/e500: switch to 64 bits PGD on 85xx
(32 bits)") increased the size of PGD entries but failed to increase
the PGD directory.

Use the size of pgd_t instead of the size of pointers to calculate
the allocated size.

Reported-by: Guenter Roeck <linux@roeck-us.net>
Fixes: 6b0e82791bd0 ("powerpc/e500: switch to 64 bits PGD on 85xx (32 bits)")
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/1cdaacb391cbd3e0240f0e0faf691202874e9422.1723109462.git.christophe.leroy@csgroup.eu
arch/powerpc/mm/init-common.c

index 9b4a675eb8f877ce313d125ca007f0ed3cde92a1..2978fcbe307eabf43984ce631e7faa1dbeaff9c0 100644 (file)
@@ -73,7 +73,7 @@ void setup_kup(void)
 
 #define CTOR(shift) static void ctor_##shift(void *addr) \
 {                                                      \
-       memset(addr, 0, sizeof(void *) << (shift));     \
+       memset(addr, 0, sizeof(pgd_t) << (shift));      \
 }
 
 CTOR(0); CTOR(1); CTOR(2); CTOR(3); CTOR(4); CTOR(5); CTOR(6); CTOR(7);
@@ -117,7 +117,7 @@ EXPORT_SYMBOL_GPL(pgtable_cache);   /* used by kvm_hv module */
 void pgtable_cache_add(unsigned int shift)
 {
        char *name;
-       unsigned long table_size = sizeof(void *) << shift;
+       unsigned long table_size = sizeof(pgd_t) << shift;
        unsigned long align = table_size;
 
        /* When batching pgtable pointers for RCU freeing, we store