[PATCH v2 0/6] wchan: Fix ORC support and leaky fallback

From: Kees Cook
Date: Wed Sep 29 2021 - 18:03:09 EST


Hi,

This attempts to solve the issues from the discussion here[1]. Specifically:

1) wchan leaking raw addresses since 152c432b128c (v5.12).

patch 1 fixes this with a revert.

2) wchan has been broken under ORC, seen as a failure to stack walk
resulting in _usually_ a 0 value, since ee9f8fce9964 (v4.14).

patches 2-5 fixes this with Qi Zheng's new get_wchan() and changes to
the /proc code to use the new helper suggested by Peter to do the stack
walk only if the process can be kept blocked:
https://lore.kernel.org/lkml/20210929194026.GA4323@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/

Peter, can you take this via -tip?

Thanks!

-Kees

[1] https://lore.kernel.org/lkml/20210924054647.v6x6risoa4jhuu6s@xxxxxxxxxxxxxxxxxxxxxxxx/

v1: https://lore.kernel.org/lkml/20210924062006.231699-3-keescook@xxxxxxxxxxxx/

Kees Cook (5):
Revert "proc/wchan: use printk format instead of lookup_symbol_name()"
sched: Add wrapper for get_wchan() to keep task blocked
proc: Use task_is_running() for wchan in /proc/$pid/stat
proc: Only report /proc/$pid/wchan when process is blocked
leaking_addresses: Always print a trailing newline

Qi Zheng (1):
x86: Fix get_wchan() to support the ORC unwinder

arch/x86/kernel/process.c | 51 +++---------------------------------
fs/proc/array.c | 7 ++---
fs/proc/base.c | 20 ++++++++------
include/linux/sched.h | 1 +
kernel/sched/core.c | 16 +++++++++++
scripts/leaking_addresses.pl | 3 ++-
6 files changed, 36 insertions(+), 62 deletions(-)

--
2.30.2