lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  PHC 
Open Source and information security mailing list archives
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 24 Sep 2021 14:54:24 +0100
From:   Mark Rutland <>
To:     Kees Cook <>
Cc:     Vito Caputo <>, Jann Horn <>,
        Thomas Gleixner <>,
        Josh Poimboeuf <>,
        Ingo Molnar <>, Borislav Petkov <>,
        "H. Peter Anvin" <>, Jens Axboe <>,
        Peter Zijlstra <>,
        Stefan Metzmacher <>,
        Andy Lutomirski <>,
        Lai Jiangshan <>,
        Christian Brauner <>,
        Andrew Morton <>,
        "" <>,
        Daniel Bristot de Oliveira <>,
        Michael WeiƟ <>,
        Anand K Mistry <>,
        Alexey Gladkov <>,
        Michal Hocko <>, Helge Deller <>,
        Dave Hansen <>,
        Andrea Righi <>,
        Ohhoon Kwon <>,
        Kalesh Singh <>,
        YiFei Zhu <>,
        "Eric W. Biederman" <>,,,,
Subject: Re: [PATCH] proc: Disable /proc/$pid/wchan

On Thu, Sep 23, 2021 at 06:16:16PM -0700, Kees Cook wrote:
> On Thu, Sep 23, 2021 at 05:22:30PM -0700, Vito Caputo wrote:
> > Instead of unwinding stacks maybe the kernel should be sticking an
> > entrypoint address in the current task struct for get_wchan() to
> > access, whenever userspace enters the kernel?
> wchan is supposed to show where the kernel is at the instant the
> get_wchan() happens. (i.e. recording it at syscall entry would just
> always show syscall entry.)

It's supposed to show where a blocked task is blocked; the "wait

I'd wanted to remove get_wchan since it requires cross-task stack
walking, which is generally painful. 

We could instead have the scheduler entrypoints snapshot their caller
into a field in task_struct. If there are sufficiently few callers, that
could be an inline wrapper that passes a __func__ string. Otherwise, we
still need to symbolize.


Powered by blists - more mailing lists