Re: [kernel-hardening] [RFC V2 2/6] lib: vsprintf: whitelist stack traces

From: Will Deacon
Date: Mon Oct 02 2017 - 06:42:12 EST


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@xxxxxxxx>
> ---
> 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