lkml.org 
[lkml]   [2017]   [Oct]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/3] sh/boot: Add static stack-protector to pre-kernel
    Date
    The sh decompressor code triggers stack-protector code generation when
    using CONFIG_CC_STACKPROTECTOR_STRONG. As done for arm and mips, add a
    simple static stack-protector canary. As this wasn't protected before, the
    risk of using a weak canary is minimized. Once the kernel is actually up,
    a better canary is chosen.

    Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
    Cc: Rich Felker <dalias@libc.org>
    Cc: linux-sh@vger.kernel.org
    Signed-off-by: Kees Cook <keescook@chromium.org>
    ---
    arch/sh/boot/compressed/misc.c | 14 ++++++++++++++
    1 file changed, 14 insertions(+)

    diff --git a/arch/sh/boot/compressed/misc.c b/arch/sh/boot/compressed/misc.c
    index ae1dfdb0013b..f4bdc5d00c04 100644
    --- a/arch/sh/boot/compressed/misc.c
    +++ b/arch/sh/boot/compressed/misc.c
    @@ -103,6 +103,18 @@ static void error(char *x)
    while(1); /* Halt */
    }

    +unsigned long __stack_chk_guard;
    +
    +void __stack_chk_guard_setup(void)
    +{
    + __stack_chk_guard = 0x000a0dff;
    +}
    +
    +void __stack_chk_fail(void)
    +{
    + error("stack-protector: Kernel stack is corrupted\n");
    +}
    +
    #ifdef CONFIG_SUPERH64
    #define stackalign 8
    #else
    @@ -117,6 +129,8 @@ void decompress_kernel(void)
    {
    unsigned long output_addr;

    + __stack_chk_guard_setup();
    +
    #ifdef CONFIG_SUPERH64
    output_addr = (CONFIG_MEMORY_START + 0x2000);
    #else
    --
    2.7.4
    \
     
     \ /
      Last update: 2017-10-02 21:21    [W:2.139 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site