• [kernel-hardening] [RFC V2 2/6] lib: vsprintf: whitelist stack trac

    From Will Deacon@21:1/5 to Tobin C. Harding on Mon Oct 2 12:50:04 2017
    On Sun, Oct 01, 2017 at 11:06:46AM +1100, Tobin C. Harding wrote:
    Use the %pP functionality to explicitly allow kernel
    pointers to be logged for stack traces.

    Signed-off-by: Tobin C. Harding <me@tobin.cc>
    ---
    arch/arm64/kernel/traps.c | 4 ++--
    kernel/printk/printk.c | 2 +-
    2 files changed, 3 insertions(+), 3 deletions(-)

    diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c
    index 5ea4b85..fe09660 100644
    --- a/arch/arm64/kernel/traps.c
    +++ b/arch/arm64/kernel/traps.c
    @@ -147,7 +147,7 @@ void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk)
    struct stackframe frame;
    int skip;

    - pr_debug("%s(regs = %p tsk = %p)\n", __func__, regs, tsk);
    + pr_debug("%s(regs = %pP tsk = %pP)\n", __func__, regs, tsk);

    Why do we care for pr_debug?

    if (!tsk)
    tsk = current;
    @@ -233,7 +233,7 @@ static int __die(const char *str, int err, struct pt_regs *regs)

    print_modules();
    __show_regs(regs);
    - pr_emerg("Process %.*s (pid: %d, stack limit = 0x%p)\n",
    + pr_emerg("Process %.*s (pid: %d, stack limit = 0x%pP)\n",
    TASK_COMM_LEN, tsk->comm, task_pid_nr(tsk),
    end_of_stack(tsk));

    diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
    index 512f7c2..af0bc8e 100644
    --- a/kernel/printk/printk.c
    +++ b/kernel/printk/printk.c

    It probably makes sense to keep this separate from arch/ changes

    Will

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)