Skip to content

ABI CHANGE!!! Remove questionable remote SP reads

Andy Lutomirski linux-api lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest3 patches 16 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/3proc: Stop reporting eip and esp in /proc/PID/statfs/proc/array.c+5 -412 replies
2/3proc: Stop trying to report thread stacksDocumentation/filesystems/proc.txt fs/proc/task_mmu.c fs/proc/task_nommu.c+20 -630 replies
3/3mm: Change vm_is_stack_for_task() to vm_is_stack_for_current()include/linux/mm.h mm/util.c security/selinux/hooks.c+5 -30 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 0/3] ABI CHANGE!!! Remove questionable remote SP reads

Jann Horn noticed that KSTK_ESP + eager task stack freeing was a bad combination and could crash. I could very easily fix it to not crash, but I think that using KSTK_ESP on a remote task is questionable in general. Therefore, I propose to get rid of the major users for 4.9.

This series makes two ABI changes:

- /proc/PID/stat will show 0 0 instead of esp eip. I don't think that the esp and eip fields were ever reliable unless the target task was being ptraced by the reading task, and ptrace(2) gives a far better interface to the same thing in this case. On the flip side, these fields could leak kernel addresses under some circumstances on some arches if the target task is running or was interrupted (on a remote CPU or preempted on the local CPU) in an inconvenient place.

I suspect it made sense when everything was single-CPU and non- preemptible, which implied that the target task *had* to be sleeping in something resembling normal kernel code, but that hasn't been the case for a long time.

- /proc/PID/task/TID/maps did some interesting things to guess which vma was the stack. This behavior is recent and IMO dangerously racy. I'd like to get rid of it.

This is a little late so, if there is significant objection, I'll just do the easy fix for 4.9 and resubmit for 4.10.

Andy Lutomirski (3):
proc: Stop reporting eip and esp in /proc/PID/stat
proc: Stop trying to report thread stacks
mm: Change vm_is_stack_for_task() to vm_is_stack_for_current()

 Documentation/filesystems/proc.txt | 26 --------------------------
 fs/proc/array.c                    |  9 +++++----
 fs/proc/task_mmu.c                 | 29 ++++++++++-------------------
 fs/proc/task_nommu.c               | 28 ++++++++++------------------
 include/linux/mm.h                 |  2 +-
 mm/util.c                          |  4 +++-
 security/selinux/hooks.c           |  2 +-
 7 files changed, 30 insertions(+), 70 deletions(-)
Signature · 1 line
2.7.4