lkml.org 
[lkml]   [2020]   [May]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 36/45] powerpc/mm: Don't be too strict with _etext alignment on PPC32
    Date
    Similar to PPC64, accept to map RO data as ROX as a trade off between
    between security and memory usage.

    Having RO data executable is not a high risk as RO data can't be
    modified to forge an exploit.

    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    ---
    arch/powerpc/Kconfig | 26 --------------------------
    arch/powerpc/kernel/vmlinux.lds.S | 3 +--
    2 files changed, 1 insertion(+), 28 deletions(-)

    diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
    index 1d4ef4f27dec..d147d379b1b9 100644
    --- a/arch/powerpc/Kconfig
    +++ b/arch/powerpc/Kconfig
    @@ -778,32 +778,6 @@ config THREAD_SHIFT
    Used to define the stack size. The default is almost always what you
    want. Only change this if you know what you are doing.

    -config ETEXT_SHIFT_BOOL
    - bool "Set custom etext alignment" if STRICT_KERNEL_RWX && \
    - (PPC_BOOK3S_32 || PPC_8xx)
    - depends on ADVANCED_OPTIONS
    - help
    - This option allows you to set the kernel end of text alignment. When
    - RAM is mapped by blocks, the alignment needs to fit the size and
    - number of possible blocks. The default should be OK for most configs.
    -
    - Say N here unless you know what you are doing.
    -
    -config ETEXT_SHIFT
    - int "_etext shift" if ETEXT_SHIFT_BOOL
    - range 17 28 if STRICT_KERNEL_RWX && PPC_BOOK3S_32
    - range 19 23 if STRICT_KERNEL_RWX && PPC_8xx
    - default 17 if STRICT_KERNEL_RWX && PPC_BOOK3S_32
    - default 19 if STRICT_KERNEL_RWX && PPC_8xx
    - default PPC_PAGE_SHIFT
    - help
    - On Book3S 32 (603+), IBATs are used to map kernel text.
    - Smaller is the alignment, greater is the number of necessary IBATs.
    -
    - On 8xx, large pages (512kb or 8M) are used to map kernel linear
    - memory. Aligning to 8M reduces TLB misses as only 8M pages are used
    - in that case.
    -
    config DATA_SHIFT_BOOL
    bool "Set custom data alignment" if STRICT_KERNEL_RWX && \
    (PPC_BOOK3S_32 || PPC_8xx)
    diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
    index 31a0f201fb6f..54f23205c2b9 100644
    --- a/arch/powerpc/kernel/vmlinux.lds.S
    +++ b/arch/powerpc/kernel/vmlinux.lds.S
    @@ -15,7 +15,6 @@
    #include <asm/thread_info.h>

    #define STRICT_ALIGN_SIZE (1 << CONFIG_DATA_SHIFT)
    -#define ETEXT_ALIGN_SIZE (1 << CONFIG_ETEXT_SHIFT)

    ENTRY(_stext)

    @@ -116,7 +115,7 @@ SECTIONS

    } :text

    - . = ALIGN(ETEXT_ALIGN_SIZE);
    + . = ALIGN(PAGE_SIZE);
    _etext = .;
    PROVIDE32 (etext = .);

    --
    2.25.0
    \
     
     \ /
      Last update: 2020-05-19 07:51    [W:3.184 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site