We changed loops with memset in the 5e9ebbd87a99 commit (x86/boot:
Micro-optimize reset_early_page_tables()). The base for size of
memset was size of pud_p/pmd_p, but the they are actually
represented as pointers, although they have the same sizes.

Signed-off-by: Alexander Kuleshov <[email protected]>
---
based on x86/tip/boot

 arch/x86/kernel/head64.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
index 35843ca..7793a17 100644
--- a/arch/x86/kernel/head64.c
+++ b/arch/x86/kernel/head64.c
@@ -75,7 +75,7 @@ again:
                }
 
                pud_p = (pudval_t *)early_dynamic_pgts[next_early_pgt++];
-               memset(pud_p, 0, sizeof(pud_p) * PTRS_PER_PUD);
+               memset(pud_p, 0, sizeof(*pud_p) * PTRS_PER_PUD);
                *pgd_p = (pgdval_t)pud_p - __START_KERNEL_map + phys_base + 
_KERNPG_TABLE;
        }
        pud_p += pud_index(address);
@@ -90,7 +90,7 @@ again:
                }
 
                pmd_p = (pmdval_t *)early_dynamic_pgts[next_early_pgt++];
-               memset(pmd_p, 0, sizeof(pmd_p) * PTRS_PER_PMD);
+               memset(pmd_p, 0, sizeof(*pmd_p) * PTRS_PER_PMD);
                *pud_p = (pudval_t)pmd_p - __START_KERNEL_map + phys_base + 
_KERNPG_TABLE;
        }
        pmd = (physaddr & PMD_MASK) + early_pmd_flags;
-- 
2.7.0.25.gfc10eb5

Reply via email to