All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH linux-next v2] signal: clarify __send_signal_locked comment in do_notify_parent
@ 2025-07-29  7:27 fan.yu9
  2025-07-29 15:40 ` Oleg Nesterov
  2025-07-30 15:02 ` Oleg Nesterov
  0 siblings, 2 replies; 5+ messages in thread
From: fan.yu9 @ 2025-07-29  7:27 UTC (permalink / raw)
  To: tglx, frederic, peterz, oleg, brauner, iro, joel.granados,
	lorenzo.stoakes, akpm
  Cc: linux-kernel, xu.xin16, yang.yang29

From: Fan Yu <fan.yu9@zte.com.cn>

The original comment (introduced in commit 61e713bdca36 ("signal: Avoid
corrupting si_pid and si_uid in do_notify_parent")) stated that
__send_signal should be used because si_pid/si_uid are in the parent's
namespace, but it did not explain why send_signal_locked() is unsafe here.

This became more ambiguous after
  commit 157cc18122b4 ("signal: Rename send_signal send_signal_locked")
without updating the comment.

Explicitly clarify that:
1. send_signal_locked() may incorrectly modify si_pid/si_uid when crossing
   PID/user namespaces (e.g., reset si_pid to 0 or translate si_uid).
2. __send_signal_locked() preserves the original siginfo values, which is
   critical since they are already in the parent's namespace.

Signed-off-by: Fan Yu <fan.yu9@zte.com.cn>
---
Changes in V2:
- Some fixes according to
https://lore.kernel.org/all/878qk8pdkd.ffs@tglx/
https://lore.kernel.org/all/20250728155815.GB25567@redhat.com/
- Clarify why __send_signal_locked must be used

 kernel/signal.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/kernel/signal.c b/kernel/signal.c
index e2c928de7d2c..047b22837a36 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -2252,8 +2252,10 @@ bool do_notify_parent(struct task_struct *tsk, int sig)
 			sig = 0;
 	}
 	/*
-	 * Send with __send_signal as si_pid and si_uid are in the
-	 * parent's namespaces.
+	 * Use __send_signal_locked() instead of send_signal_locked()
+	 * because si_pid and si_uid are already in the parent's
+	 * namespace. send_signal_locked() would incorrectly modify
+	 * them when crossing PID/user namespaces.
 	 */
 	if (valid_signal(sig) && sig)
 		__send_signal_locked(sig, &info, tsk->parent, PIDTYPE_TGID, false);
-- 
2.25.1

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

end of thread, other threads:[~2025-07-31 14:39 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-29  7:27 [PATCH linux-next v2] signal: clarify __send_signal_locked comment in do_notify_parent fan.yu9
2025-07-29 15:40 ` Oleg Nesterov
2025-07-30 11:30   ` fan.yu9
2025-07-30 15:02 ` Oleg Nesterov
2025-07-31 14:39   ` fan.yu9

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.