diff options
| author | Eric Dumazet <edumazet@google.com> | 2015-11-24 11:39:54 -0800 |
|---|---|---|
| committer | Moyster <oysterized@gmail.com> | 2019-05-02 15:11:55 +0200 |
| commit | 4d73f508f305456768204db9a3091b651b7f27ee (patch) | |
| tree | cffd9e40ca1ad663891db1eaa21ebd9254df829a /include/linux/dynamic_debug.h | |
| parent | 23d0d66e029e827b33a899b79aa446aaff0ca9fb (diff) | |
pidns: fix NULL dereference in __task_pid_nr_ns()
I got a crash during a "perf top" session that was caused by a race in
__task_pid_nr_ns() :
pid_nr_ns() was inlined, but apparently compiler chose to read
task->pids[type].pid twice, and the pid->level dereference crashed
because we got a NULL pointer at the second read :
if (pid && ns->level <= pid->level) { // CRASH
Just use RCU API properly to solve this race, and not worry about "perf
top" crashing hosts :(
get_task_pid() can benefit from same fix.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/dynamic_debug.h')
0 files changed, 0 insertions, 0 deletions
