arm64: fix warning about swapper_pg_dir overflow
authorArnd Bergmann <arnd@arndb.de>
Tue, 14 Feb 2017 21:27:01 +0000 (22:27 +0100)
committerWill Deacon <will.deacon@arm.com>
Wed, 15 Feb 2017 11:32:18 +0000 (11:32 +0000)
With 4 levels of 16KB pages, we get this warning about the fact that we are
copying a whole page into an array that is declared as having only two pointers
for the top level of the page table:

arch/arm64/mm/mmu.c: In function 'paging_init':
arch/arm64/mm/mmu.c:528:2: error: 'memcpy' writing 16384 bytes into a region of size 16 overflows the destination [-Werror=stringop-overflow=]

This is harmless since we actually reserve a whole page in the definition of the
array that comes from, and just the extern declaration is short. The pgdir
is initialized to zero either way, so copying the actual entries here seems
like the best solution.

Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/mm/mmu.c

index 2131521ddc243d294e378f9f1b442512b22b1bd4..b805c017f7899ea9012046e024ac8c9951d2dd8c 100644 (file)
@@ -525,7 +525,7 @@ void __init paging_init(void)
         * To do this we need to go via a temporary pgd.
         */
        cpu_replace_ttbr1(__va(pgd_phys));
-       memcpy(swapper_pg_dir, pgd, PAGE_SIZE);
+       memcpy(swapper_pg_dir, pgd, PGD_SIZE);
        cpu_replace_ttbr1(lm_alias(swapper_pg_dir));
 
        pgd_clear_fixmap();