Le 01/05/2019 à 09:04, Russell Currey a écrit :
On Wed, 2019-04-24 at 09:14 +0200, Christophe Leroy wrote:

Le 24/04/2019 à 08:39, Russell Currey a écrit :
Implement code to walk all pages and warn if any are found to be
both
writable and executable.  Depends on STRICT_KERNEL_RWX enabled, and
is
behind the DEBUG_WX config option.

This only runs on boot and has no runtime performance implications.

Very heavily influenced (and in some cases copied verbatim) from
the
ARM64 code written by Laura Abbott (thanks!), since our ptdump
infrastructure is similar.

Signed-off-by: Russell Currey <rus...@russell.cc>
---
   arch/powerpc/Kconfig.debug         | 19 +++++++++++++++
   arch/powerpc/include/asm/pgtable.h |  5 ++++
   arch/powerpc/mm/pgtable_32.c       |  5 ++++
   arch/powerpc/mm/pgtable_64.c       |  5 ++++
   arch/powerpc/mm/ptdump/ptdump.c    | 38
++++++++++++++++++++++++++++++
   5 files changed, 72 insertions(+)

diff --git a/arch/powerpc/Kconfig.debug
b/arch/powerpc/Kconfig.debug
index 4e00cb0a5464..a4160ff02ed4 100644
--- a/arch/powerpc/Kconfig.debug
+++ b/arch/powerpc/Kconfig.debug
@@ -361,6 +361,25 @@ config PPC_PTDUMP
If you are unsure, say N. +config DEBUG_WX

I would call it PPC_DEBUG_WX to avoid confusion.

It's the same functionality as on other architectures and is an arch-
local thing, I personally think it should be left as-is but given we
already put the PPC prefix on PTDUMP, I'll add it so it's consistent

<snip>

+       if (radix_enabled())
+               st.start_address = PAGE_OFFSET;
+       else
+               st.start_address = KERN_VIRT_START;

KERN_VIRT_START doesn't exist on PPC32.

Christophe

Thanks a lot for the review!  Applied all your suggestions.  What
should I use on PPC32 instead?

Indeed it looks like KERN_VIRT_START is defined as 0 for PPC32 at the top of ptdump.c, which look strange to me.

I guess PAGE_OFFSET should be the good value for KERN_VIRT_START on PPC32.

Christophe


- Russell

Reply via email to