powerpc/mm: Fix kernel RAM protection after freeing unused memory on PPC32
authorChristophe Leroy <christophe.leroy@c-s.fr>
Wed, 2 Aug 2017 13:51:03 +0000 (15:51 +0200)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 15 Aug 2017 12:55:56 +0000 (22:55 +1000)
commit3184cc4b6f6a1dc0c1745aafe2b14b1206ef3187
tree17341318eeeb4e3d4611620b8b6db846ab10e52d
parente611939fc8ec13387018df88083de7102a438730
powerpc/mm: Fix kernel RAM protection after freeing unused memory on PPC32

As seen below, allthough the init sections have been freed, the
associated memory area is still marked as executable in the
page tables.

~ dmesg
[    5.860093] Freeing unused kernel memory: 592K (c0570000 - c0604000)

~ cat /sys/kernel/debug/kernel_page_tables
---[ Start of kernel VM ]---
0xc0000000-0xc0497fff        4704K  rw  X  present dirty accessed shared
0xc0498000-0xc056ffff         864K  rw     present dirty accessed shared
0xc0570000-0xc059ffff         192K  rw  X  present dirty accessed shared
0xc05a0000-0xc7ffffff      125312K  rw     present dirty accessed shared
---[ vmalloc() Area ]---

This patch fixes that.

The implementation is done by reusing the change_page_attr()
function implemented for CONFIG_DEBUG_PAGEALLOC

Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/include/asm/pgtable.h
arch/powerpc/mm/pgtable_32.c