All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] signal: always allocate siginfo for SI_TKILL
@ 2019-02-03  7:49 Jack Andersen
  2019-02-03  8:39 ` Christian Brauner
  2019-02-28  4:56   ` kernel test robot
  0 siblings, 2 replies; 12+ messages in thread
From: Jack Andersen @ 2019-02-03  7:49 UTC (permalink / raw)
  To: linux-kernel
  Cc: Andrew Morton, Eric W. Biederman, Christian Brauner,
	Thomas Gleixner, Oleg Nesterov, Jack Andersen

The patch titled
`signal: Never allocate siginfo for SIGKILL or SIGSTOP`
created a regression for users of PTRACE_GETSIGINFO needing to
discern signals that were raised via the tgkill syscall.

A notable user of this tgkill+ptrace combination is lldb while
debugging a multithreaded program. Without the ability to detect a
SIGSTOP originating from tgkill, lldb does not have a way to
synchronize on a per-thread basis and falls back to SIGSTOP-ing the
entire process.

This patch allocates the siginfo as it did previously whenever the
SI_TKILL code is present.

Signed-off-by: Jack Andersen <jackoalan@gmail.com>
---
 kernel/signal.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/kernel/signal.c b/kernel/signal.c
index 9a32bc2088c9..7a810aefb5df 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -1058,9 +1058,11 @@ static int __send_signal(int sig, struct kernel_siginfo *info, struct task_struc
 	result = TRACE_SIGNAL_DELIVERED;
 	/*
 	 * Skip useless siginfo allocation for SIGKILL SIGSTOP,
-	 * and kernel threads.
+	 * and kernel threads. SI_TKILL is an exception to allow
+	 * processes to discern signals originating from tgkill.
 	 */
-	if (sig_kernel_only(sig) || (t->flags & PF_KTHREAD))
+	if ((sig_kernel_only(sig) && info->si_code != SI_TKILL) ||
+	    (t->flags & PF_KTHREAD))
 		goto out_set;
 
 	/*
-- 
2.20.1


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

end of thread, other threads:[~2019-02-28  4:56 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-03  7:49 [PATCH] signal: always allocate siginfo for SI_TKILL Jack Andersen
2019-02-03  8:39 ` Christian Brauner
2019-02-03 18:33   ` Kees Cook
2019-02-04 15:10     ` Christian Brauner
2019-02-05  2:41     ` Eric W. Biederman
2019-02-05  6:37       ` Linus Torvalds
2019-02-05  6:46         ` Eric W. Biederman
2019-02-05 14:16           ` [PATCH] signal: Always attempt to allocate siginfo for SIGSTOP Eric W. Biederman
2019-02-05 14:49             ` Kees Cook
2019-02-05 11:23       ` [PATCH] signal: always allocate siginfo for SI_TKILL Christian Brauner
2019-02-28  4:56 ` [LKP] [signal] b3eedf8d5b: BUG:unable_to_handle_kernel kernel test robot
2019-02-28  4:56   ` kernel test robot

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.