mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 05:04:02 +02:00
signal: avoid shared siginfo namespace rewrites
send_signal_locked() rewrites sender ids for the target namespace. Group
sends reuse the same siginfo, so one recipient can affect the next.
Copy the siginfo before changing it.
Link: https://lore.kernel.org/86a8857d58d43ee26a8b365b837fd24830343494.1782159692.git.include@grrlz.net
Fixes: 7a0cf09494 ("signal: Correct namespace fixups of si_pid and si_uid")
Signed-off-by: Bradley Morgan <include@grrlz.net>
Acked-by: Oleg Nesterov <oleg@redhat.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Adrian Huang <adrianhuang0701@gmail.com>
Cc: Aleksandr Nogikh <nogikh@google.com>
Cc: Christian Brauner <brauner@kernel.org>
Cc: Marco Elver <elver@google.com>
Cc: "Masami Hiramatsu (Google)" <mhiramat@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
5fc2358263
commit
d19cdc167e
|
|
@ -1181,6 +1181,7 @@ static inline bool has_si_pid_and_uid(struct kernel_siginfo *info)
|
|||
int send_signal_locked(int sig, struct kernel_siginfo *info,
|
||||
struct task_struct *t, enum pid_type type)
|
||||
{
|
||||
struct kernel_siginfo rewritten;
|
||||
/* Should SIGKILL or SIGSTOP be received by a pid namespace init? */
|
||||
bool force = false;
|
||||
|
||||
|
|
@ -1194,6 +1195,9 @@ int send_signal_locked(int sig, struct kernel_siginfo *info,
|
|||
/* SIGKILL and SIGSTOP is special or has ids */
|
||||
struct user_namespace *t_user_ns;
|
||||
|
||||
rewritten = *info;
|
||||
info = &rewritten;
|
||||
|
||||
rcu_read_lock();
|
||||
t_user_ns = task_cred_xxx(t, user_ns);
|
||||
if (current_user_ns() != t_user_ns) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user