All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] lib/syscall: Clear return values when no stack
@ 2017-03-23 22:46 Kees Cook
  2017-03-23 23:03 ` Andy Lutomirski
  2017-03-24  6:45 ` [tip:core/urgent] " tip-bot for Kees Cook
  0 siblings, 2 replies; 3+ messages in thread
From: Kees Cook @ 2017-03-23 22:46 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Robert Święcki, Andy Lutomirski, linux-kernel

Commit aa1f1a639621 ("lib/syscall: Pin the task stack in collect_syscall()")
added logic to handle a process stack not existing, but left sp and pc
uninitialized, which can be later reported via /proc/$pid/syscall for zombie
processes, potentially exposing kernel memory to userspace.

Zombie /proc/$pid/syscall before:
-1 0xffffffff9a060100 0xffff92f42d6ad900

Zombie /proc/$pid/syscall after:
-1 0x0 0x0

Reported-by: Robert Święcki <robert@swiecki.net>
Fixes: aa1f1a639621 ("lib/syscall: Pin the task stack in collect_syscall()")
Cc: stable@vger.kernel.org # v4.9+
Signed-off-by: Kees Cook <keescook@chromium.org>
---
 lib/syscall.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lib/syscall.c b/lib/syscall.c
index 17d5ff5fa6a3..2c6cd1b5c3ea 100644
--- a/lib/syscall.c
+++ b/lib/syscall.c
@@ -12,6 +12,7 @@ static int collect_syscall(struct task_struct *target, long *callno,
 
 	if (!try_get_task_stack(target)) {
 		/* Task has no stack, so the task isn't in a syscall. */
+		*sp = *pc = 0;
 		*callno = -1;
 		return 0;
 	}
-- 
2.7.4


-- 
Kees Cook
Pixel Security

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-03-24  6:52 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-03-23 22:46 [PATCH] lib/syscall: Clear return values when no stack Kees Cook
2017-03-23 23:03 ` Andy Lutomirski
2017-03-24  6:45 ` [tip:core/urgent] " tip-bot for Kees Cook

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.