All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Eric W. Biederman" <ebiederm@xmission.com>
To: linux-kernel@vger.kernel.org
Cc: rjw@rjwysocki.net, Oleg Nesterov <oleg@redhat.com>,
	mingo@kernel.org, vincent.guittot@linaro.org,
	dietmar.eggemann@arm.com, rostedt@goodmis.org, mgorman@suse.de,
	bigeasy@linutronix.de, Will Deacon <will@kernel.org>,
	tj@kernel.org, linux-pm@vger.kernel.org,
	Peter Zijlstra <peterz@infradead.org>,
	Richard Weinberger <richard@nod.at>,
	Anton Ivanov <anton.ivanov@cambridgegreys.com>,
	Johannes Berg <johannes@sipsolutions.net>,
	linux-um@lists.infradead.org, Chris Zankel <chris@zankel.net>,
	Max Filippov <jcmvbkbc@gmail.com>,
	linux-xtensa@linux-xtensa.org, Kees Cook <keescook@chromium.org>,
	Jann Horn <jannh@google.com>,
	linux-ia64@vger.kernel.org,
	"Eric W. Biederman" <ebiederm@xmission.com>
Subject: [PATCH v3 09/11] ptrace: Don't change __state
Date: Wed,  4 May 2022 17:40:56 -0500	[thread overview]
Message-ID: <20220504224058.476193-9-ebiederm@xmission.com> (raw)
In-Reply-To: <87k0b0apne.fsf_-_@email.froward.int.ebiederm.org>

Stop playing with tsk->__state to remove TASK_WAKEKILL while a ptrace
command is executing.

Instead remove TASK_WAKEKILL from the definition of TASK_TRACED, and
implemention a new jobctl flag TASK_PTRACE_FROZEN.  This new flag is
set in jobctl_freeze_task and cleared when ptrace_stop is awoken or in
jobctl_unfreeze_task (when ptrace_stop remains asleep).

In signal_wake_up add __TASK_TRACED to state along with TASK_WAKEKILL
when the wake up is for a fatal signal.  Skip adding __TASK_TRACED
when TASK_PTRACE_FROZEN is not set.  This has the same effect as
changing TASK_TRACED to __TASK_TRACED as all of the wake_ups that use
TASK_KILLABLE go through signal_wake_up.

Handle a ptrace_stop being called with a pending fatal signal.
Previously it would have been handled by schedule simply failing to
sleep.  As TASK_WAKEKILL is no longer part of TASK_TRACED schedule
will sleep with a fatal_signal_pending.   The code in signal_wake_up
guarantees that the code will be awaked by any fatal signal that
codes after TASK_TRACED is set.

Previously the __state value of __TASK_TRACED was changed to
TASK_RUNNING when woken up or back to TASK_TRACED when the code was
left in ptrace_stop.  Now when woken up ptrace_stop now clears
JOBCTL_PTRACE_FROZEN and when left sleeping ptrace_unfreezed_traced
clears JOBCTL_PTRACE_FROZEN.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
---
 include/linux/sched.h        |  2 +-
 include/linux/sched/jobctl.h |  2 ++
 include/linux/sched/signal.h |  5 +++--
 kernel/ptrace.c              | 21 ++++++++-------------
 kernel/sched/core.c          |  5 +----
 kernel/signal.c              | 10 +++++++---
 6 files changed, 22 insertions(+), 23 deletions(-)

diff --git a/include/linux/sched.h b/include/linux/sched.h
index d5e3c00b74e1..610f2fdb1e2c 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -103,7 +103,7 @@ struct task_group;
 /* Convenience macros for the sake of set_current_state: */
 #define TASK_KILLABLE			(TASK_WAKEKILL | TASK_UNINTERRUPTIBLE)
 #define TASK_STOPPED			(TASK_WAKEKILL | __TASK_STOPPED)
-#define TASK_TRACED			(TASK_WAKEKILL | __TASK_TRACED)
+#define TASK_TRACED			__TASK_TRACED
 
 #define TASK_IDLE			(TASK_UNINTERRUPTIBLE | TASK_NOLOAD)
 
diff --git a/include/linux/sched/jobctl.h b/include/linux/sched/jobctl.h
index fa067de9f1a9..d556c3425963 100644
--- a/include/linux/sched/jobctl.h
+++ b/include/linux/sched/jobctl.h
@@ -19,6 +19,7 @@ struct task_struct;
 #define JOBCTL_TRAPPING_BIT	21	/* switching to TRACED */
 #define JOBCTL_LISTENING_BIT	22	/* ptracer is listening for events */
 #define JOBCTL_TRAP_FREEZE_BIT	23	/* trap for cgroup freezer */
+#define JOBCTL_PTRACE_FROZEN_BIT	24	/* frozen for ptrace */
 
 #define JOBCTL_STOP_DEQUEUED	(1UL << JOBCTL_STOP_DEQUEUED_BIT)
 #define JOBCTL_STOP_PENDING	(1UL << JOBCTL_STOP_PENDING_BIT)
@@ -28,6 +29,7 @@ struct task_struct;
 #define JOBCTL_TRAPPING		(1UL << JOBCTL_TRAPPING_BIT)
 #define JOBCTL_LISTENING	(1UL << JOBCTL_LISTENING_BIT)
 #define JOBCTL_TRAP_FREEZE	(1UL << JOBCTL_TRAP_FREEZE_BIT)
+#define JOBCTL_PTRACE_FROZEN	(1UL << JOBCTL_PTRACE_FROZEN_BIT)
 
 #define JOBCTL_TRAP_MASK	(JOBCTL_TRAP_STOP | JOBCTL_TRAP_NOTIFY)
 #define JOBCTL_PENDING_MASK	(JOBCTL_STOP_PENDING | JOBCTL_TRAP_MASK)
diff --git a/include/linux/sched/signal.h b/include/linux/sched/signal.h
index 3c8b34876744..e66948abbee4 100644
--- a/include/linux/sched/signal.h
+++ b/include/linux/sched/signal.h
@@ -435,9 +435,10 @@ extern void calculate_sigpending(void);
 
 extern void signal_wake_up_state(struct task_struct *t, unsigned int state);
 
-static inline void signal_wake_up(struct task_struct *t, bool resume)
+static inline void signal_wake_up(struct task_struct *t, bool fatal)
 {
-	signal_wake_up_state(t, resume ? TASK_WAKEKILL : 0);
+	fatal = fatal && !(t->jobctl & JOBCTL_PTRACE_FROZEN);
+	signal_wake_up_state(t, fatal ? TASK_WAKEKILL | __TASK_TRACED : 0);
 }
 static inline void ptrace_signal_wake_up(struct task_struct *t, bool resume)
 {
diff --git a/kernel/ptrace.c b/kernel/ptrace.c
index 05953ac9f7bd..83ed28262708 100644
--- a/kernel/ptrace.c
+++ b/kernel/ptrace.c
@@ -197,7 +197,7 @@ static bool ptrace_freeze_traced(struct task_struct *task)
 	spin_lock_irq(&task->sighand->siglock);
 	if (task_is_traced(task) && !looks_like_a_spurious_pid(task) &&
 	    !__fatal_signal_pending(task)) {
-		WRITE_ONCE(task->__state, __TASK_TRACED);
+		task->jobctl |= JOBCTL_PTRACE_FROZEN;
 		ret = true;
 	}
 	spin_unlock_irq(&task->sighand->siglock);
@@ -207,23 +207,19 @@ static bool ptrace_freeze_traced(struct task_struct *task)
 
 static void ptrace_unfreeze_traced(struct task_struct *task)
 {
-	if (READ_ONCE(task->__state) != __TASK_TRACED)
-		return;
-
-	WARN_ON(!task->ptrace || task->parent != current);
+	unsigned long flags;
 
 	/*
-	 * PTRACE_LISTEN can allow ptrace_trap_notify to wake us up remotely.
-	 * Recheck state under the lock to close this race.
+	 * The child may be awake and may have cleared
+	 * JOBCTL_PTRACE_FROZEN (see ptrace_resume).  The child will
+	 * not set JOBCTL_PTRACE_FROZEN or enter __TASK_TRACED anew.
 	 */
-	spin_lock_irq(&task->sighand->siglock);
-	if (READ_ONCE(task->__state) == __TASK_TRACED) {
+	if (lock_task_sighand(task, &flags)) {
+		task->jobctl &= ~JOBCTL_PTRACE_FROZEN;
 		if (__fatal_signal_pending(task))
 			wake_up_state(task, __TASK_TRACED);
-		else
-			WRITE_ONCE(task->__state, TASK_TRACED);
+		unlock_task_sighand(task, &flags);
 	}
-	spin_unlock_irq(&task->sighand->siglock);
 }
 
 /**
@@ -256,7 +252,6 @@ static int ptrace_check_attach(struct task_struct *child, bool ignore_state)
 	 */
 	read_lock(&tasklist_lock);
 	if (child->ptrace && child->parent == current) {
-		WARN_ON(READ_ONCE(child->__state) == __TASK_TRACED);
 		/*
 		 * child->sighand can't be NULL, release_task()
 		 * does ptrace_unlink() before __exit_signal().
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index d575b4914925..3c351707e830 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -6304,10 +6304,7 @@ static void __sched notrace __schedule(unsigned int sched_mode)
 
 	/*
 	 * We must load prev->state once (task_struct::state is volatile), such
-	 * that:
-	 *
-	 *  - we form a control dependency vs deactivate_task() below.
-	 *  - ptrace_{,un}freeze_traced() can change ->state underneath us.
+	 * that we form a control dependency vs deactivate_task() below.
 	 */
 	prev_state = READ_ONCE(prev->__state);
 	if (!(sched_mode & SM_MASK_PREEMPT) && prev_state) {
diff --git a/kernel/signal.c b/kernel/signal.c
index 16828fde5424..e0b416b21ad3 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -2210,9 +2210,13 @@ static int ptrace_stop(int exit_code, int why, unsigned long message,
 	}
 
 	/*
-	 * schedule() will not sleep if there is a pending signal that
-	 * can awaken the task.
+	 * After this point signal_wake_up will clear TASK_TRACED
+	 * if a fatal signal comes in.  Handle previous fatal signals
+	 * here to prevent ptrace_stop sleeping in schedule.
 	 */
+	if (__fatal_signal_pending(current))
+		return exit_code;
+
 	set_special_state(TASK_TRACED);
 
 	/*
@@ -2300,7 +2304,7 @@ static int ptrace_stop(int exit_code, int why, unsigned long message,
 	current->exit_code = 0;
 
 	/* LISTENING can be set only during STOP traps, clear it */
-	current->jobctl &= ~JOBCTL_LISTENING;
+	current->jobctl &= ~(JOBCTL_LISTENING | JOBCTL_PTRACE_FROZEN);
 
 	/*
 	 * Queued signals ignored us while we were stopped for tracing.
-- 
2.35.3


WARNING: multiple messages have this Message-ID (diff)
From: "Eric W. Biederman" <ebiederm@xmission.com>
To: linux-kernel@vger.kernel.org
Cc: rjw@rjwysocki.net, Oleg Nesterov <oleg@redhat.com>,
	mingo@kernel.org, vincent.guittot@linaro.org,
	dietmar.eggemann@arm.com, rostedt@goodmis.org, mgorman@suse.de,
	bigeasy@linutronix.de, Will Deacon <will@kernel.org>,
	tj@kernel.org, linux-pm@vger.kernel.org,
	Peter Zijlstra <peterz@infradead.org>,
	Richard Weinberger <richard@nod.at>,
	Anton Ivanov <anton.ivanov@cambridgegreys.com>,
	Johannes Berg <johannes@sipsolutions.net>,
	linux-um@lists.infradead.org, Chris Zankel <chris@zankel.net>,
	Max Filippov <jcmvbkbc@gmail.com>,
	linux-xtensa@linux-xtensa.org, Kees Cook <keescook@chromium.org>,
	Jann Horn <jannh@google.com>,
	linux-ia64@vger.kernel.org,
	"Eric W. Biederman" <ebiederm@xmission.com>
Subject: [PATCH v3 09/11] ptrace: Don't change __state
Date: Wed,  4 May 2022 17:40:56 -0500	[thread overview]
Message-ID: <20220504224058.476193-9-ebiederm@xmission.com> (raw)
In-Reply-To: <87k0b0apne.fsf_-_@email.froward.int.ebiederm.org>

Stop playing with tsk->__state to remove TASK_WAKEKILL while a ptrace
command is executing.

Instead remove TASK_WAKEKILL from the definition of TASK_TRACED, and
implemention a new jobctl flag TASK_PTRACE_FROZEN.  This new flag is
set in jobctl_freeze_task and cleared when ptrace_stop is awoken or in
jobctl_unfreeze_task (when ptrace_stop remains asleep).

In signal_wake_up add __TASK_TRACED to state along with TASK_WAKEKILL
when the wake up is for a fatal signal.  Skip adding __TASK_TRACED
when TASK_PTRACE_FROZEN is not set.  This has the same effect as
changing TASK_TRACED to __TASK_TRACED as all of the wake_ups that use
TASK_KILLABLE go through signal_wake_up.

Handle a ptrace_stop being called with a pending fatal signal.
Previously it would have been handled by schedule simply failing to
sleep.  As TASK_WAKEKILL is no longer part of TASK_TRACED schedule
will sleep with a fatal_signal_pending.   The code in signal_wake_up
guarantees that the code will be awaked by any fatal signal that
codes after TASK_TRACED is set.

Previously the __state value of __TASK_TRACED was changed to
TASK_RUNNING when woken up or back to TASK_TRACED when the code was
left in ptrace_stop.  Now when woken up ptrace_stop now clears
JOBCTL_PTRACE_FROZEN and when left sleeping ptrace_unfreezed_traced
clears JOBCTL_PTRACE_FROZEN.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
---
 include/linux/sched.h        |  2 +-
 include/linux/sched/jobctl.h |  2 ++
 include/linux/sched/signal.h |  5 +++--
 kernel/ptrace.c              | 21 ++++++++-------------
 kernel/sched/core.c          |  5 +----
 kernel/signal.c              | 10 +++++++---
 6 files changed, 22 insertions(+), 23 deletions(-)

diff --git a/include/linux/sched.h b/include/linux/sched.h
index d5e3c00b74e1..610f2fdb1e2c 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -103,7 +103,7 @@ struct task_group;
 /* Convenience macros for the sake of set_current_state: */
 #define TASK_KILLABLE			(TASK_WAKEKILL | TASK_UNINTERRUPTIBLE)
 #define TASK_STOPPED			(TASK_WAKEKILL | __TASK_STOPPED)
-#define TASK_TRACED			(TASK_WAKEKILL | __TASK_TRACED)
+#define TASK_TRACED			__TASK_TRACED
 
 #define TASK_IDLE			(TASK_UNINTERRUPTIBLE | TASK_NOLOAD)
 
diff --git a/include/linux/sched/jobctl.h b/include/linux/sched/jobctl.h
index fa067de9f1a9..d556c3425963 100644
--- a/include/linux/sched/jobctl.h
+++ b/include/linux/sched/jobctl.h
@@ -19,6 +19,7 @@ struct task_struct;
 #define JOBCTL_TRAPPING_BIT	21	/* switching to TRACED */
 #define JOBCTL_LISTENING_BIT	22	/* ptracer is listening for events */
 #define JOBCTL_TRAP_FREEZE_BIT	23	/* trap for cgroup freezer */
+#define JOBCTL_PTRACE_FROZEN_BIT	24	/* frozen for ptrace */
 
 #define JOBCTL_STOP_DEQUEUED	(1UL << JOBCTL_STOP_DEQUEUED_BIT)
 #define JOBCTL_STOP_PENDING	(1UL << JOBCTL_STOP_PENDING_BIT)
@@ -28,6 +29,7 @@ struct task_struct;
 #define JOBCTL_TRAPPING		(1UL << JOBCTL_TRAPPING_BIT)
 #define JOBCTL_LISTENING	(1UL << JOBCTL_LISTENING_BIT)
 #define JOBCTL_TRAP_FREEZE	(1UL << JOBCTL_TRAP_FREEZE_BIT)
+#define JOBCTL_PTRACE_FROZEN	(1UL << JOBCTL_PTRACE_FROZEN_BIT)
 
 #define JOBCTL_TRAP_MASK	(JOBCTL_TRAP_STOP | JOBCTL_TRAP_NOTIFY)
 #define JOBCTL_PENDING_MASK	(JOBCTL_STOP_PENDING | JOBCTL_TRAP_MASK)
diff --git a/include/linux/sched/signal.h b/include/linux/sched/signal.h
index 3c8b34876744..e66948abbee4 100644
--- a/include/linux/sched/signal.h
+++ b/include/linux/sched/signal.h
@@ -435,9 +435,10 @@ extern void calculate_sigpending(void);
 
 extern void signal_wake_up_state(struct task_struct *t, unsigned int state);
 
-static inline void signal_wake_up(struct task_struct *t, bool resume)
+static inline void signal_wake_up(struct task_struct *t, bool fatal)
 {
-	signal_wake_up_state(t, resume ? TASK_WAKEKILL : 0);
+	fatal = fatal && !(t->jobctl & JOBCTL_PTRACE_FROZEN);
+	signal_wake_up_state(t, fatal ? TASK_WAKEKILL | __TASK_TRACED : 0);
 }
 static inline void ptrace_signal_wake_up(struct task_struct *t, bool resume)
 {
diff --git a/kernel/ptrace.c b/kernel/ptrace.c
index 05953ac9f7bd..83ed28262708 100644
--- a/kernel/ptrace.c
+++ b/kernel/ptrace.c
@@ -197,7 +197,7 @@ static bool ptrace_freeze_traced(struct task_struct *task)
 	spin_lock_irq(&task->sighand->siglock);
 	if (task_is_traced(task) && !looks_like_a_spurious_pid(task) &&
 	    !__fatal_signal_pending(task)) {
-		WRITE_ONCE(task->__state, __TASK_TRACED);
+		task->jobctl |= JOBCTL_PTRACE_FROZEN;
 		ret = true;
 	}
 	spin_unlock_irq(&task->sighand->siglock);
@@ -207,23 +207,19 @@ static bool ptrace_freeze_traced(struct task_struct *task)
 
 static void ptrace_unfreeze_traced(struct task_struct *task)
 {
-	if (READ_ONCE(task->__state) != __TASK_TRACED)
-		return;
-
-	WARN_ON(!task->ptrace || task->parent != current);
+	unsigned long flags;
 
 	/*
-	 * PTRACE_LISTEN can allow ptrace_trap_notify to wake us up remotely.
-	 * Recheck state under the lock to close this race.
+	 * The child may be awake and may have cleared
+	 * JOBCTL_PTRACE_FROZEN (see ptrace_resume).  The child will
+	 * not set JOBCTL_PTRACE_FROZEN or enter __TASK_TRACED anew.
 	 */
-	spin_lock_irq(&task->sighand->siglock);
-	if (READ_ONCE(task->__state) == __TASK_TRACED) {
+	if (lock_task_sighand(task, &flags)) {
+		task->jobctl &= ~JOBCTL_PTRACE_FROZEN;
 		if (__fatal_signal_pending(task))
 			wake_up_state(task, __TASK_TRACED);
-		else
-			WRITE_ONCE(task->__state, TASK_TRACED);
+		unlock_task_sighand(task, &flags);
 	}
-	spin_unlock_irq(&task->sighand->siglock);
 }
 
 /**
@@ -256,7 +252,6 @@ static int ptrace_check_attach(struct task_struct *child, bool ignore_state)
 	 */
 	read_lock(&tasklist_lock);
 	if (child->ptrace && child->parent == current) {
-		WARN_ON(READ_ONCE(child->__state) == __TASK_TRACED);
 		/*
 		 * child->sighand can't be NULL, release_task()
 		 * does ptrace_unlink() before __exit_signal().
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index d575b4914925..3c351707e830 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -6304,10 +6304,7 @@ static void __sched notrace __schedule(unsigned int sched_mode)
 
 	/*
 	 * We must load prev->state once (task_struct::state is volatile), such
-	 * that:
-	 *
-	 *  - we form a control dependency vs deactivate_task() below.
-	 *  - ptrace_{,un}freeze_traced() can change ->state underneath us.
+	 * that we form a control dependency vs deactivate_task() below.
 	 */
 	prev_state = READ_ONCE(prev->__state);
 	if (!(sched_mode & SM_MASK_PREEMPT) && prev_state) {
diff --git a/kernel/signal.c b/kernel/signal.c
index 16828fde5424..e0b416b21ad3 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -2210,9 +2210,13 @@ static int ptrace_stop(int exit_code, int why, unsigned long message,
 	}
 
 	/*
-	 * schedule() will not sleep if there is a pending signal that
-	 * can awaken the task.
+	 * After this point signal_wake_up will clear TASK_TRACED
+	 * if a fatal signal comes in.  Handle previous fatal signals
+	 * here to prevent ptrace_stop sleeping in schedule.
 	 */
+	if (__fatal_signal_pending(current))
+		return exit_code;
+
 	set_special_state(TASK_TRACED);
 
 	/*
@@ -2300,7 +2304,7 @@ static int ptrace_stop(int exit_code, int why, unsigned long message,
 	current->exit_code = 0;
 
 	/* LISTENING can be set only during STOP traps, clear it */
-	current->jobctl &= ~JOBCTL_LISTENING;
+	current->jobctl &= ~(JOBCTL_LISTENING | JOBCTL_PTRACE_FROZEN);
 
 	/*
 	 * Queued signals ignored us while we were stopped for tracing.
-- 
2.35.3


_______________________________________________
linux-um mailing list
linux-um@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-um


WARNING: multiple messages have this Message-ID (diff)
From: "Eric W. Biederman" <ebiederm@xmission.com>
To: linux-kernel@vger.kernel.org
Cc: rjw@rjwysocki.net, Oleg Nesterov <oleg@redhat.com>,
	mingo@kernel.org, vincent.guittot@linaro.org,
	dietmar.eggemann@arm.com, rostedt@goodmis.org, mgorman@suse.de,
	bigeasy@linutronix.de, Will Deacon <will@kernel.org>,
	tj@kernel.org, linux-pm@vger.kernel.org,
	Peter Zijlstra <peterz@infradead.org>,
	Richard Weinberger <richard@nod.at>,
	Anton Ivanov <anton.ivanov@cambridgegreys.com>,
	Johannes Berg <johannes@sipsolutions.net>,
	linux-um@lists.infradead.org, Chris Zankel <chris@zankel.net>,
	Max Filippov <jcmvbkbc@gmail.com>,
	linux-xtensa@linux-xtensa.org, Kees Cook <keescook@chromium.org>,
	Jann Horn <jannh@google.com>,
	linux-ia64@vger.kernel.org,
	"Eric W. Biederman" <ebiederm@xmission.com>
Subject: [PATCH v3 09/11] ptrace: Don't change __state
Date: Wed, 04 May 2022 22:40:56 +0000	[thread overview]
Message-ID: <20220504224058.476193-9-ebiederm@xmission.com> (raw)
In-Reply-To: <87k0b0apne.fsf_-_@email.froward.int.ebiederm.org>

Stop playing with tsk->__state to remove TASK_WAKEKILL while a ptrace
command is executing.

Instead remove TASK_WAKEKILL from the definition of TASK_TRACED, and
implemention a new jobctl flag TASK_PTRACE_FROZEN.  This new flag is
set in jobctl_freeze_task and cleared when ptrace_stop is awoken or in
jobctl_unfreeze_task (when ptrace_stop remains asleep).

In signal_wake_up add __TASK_TRACED to state along with TASK_WAKEKILL
when the wake up is for a fatal signal.  Skip adding __TASK_TRACED
when TASK_PTRACE_FROZEN is not set.  This has the same effect as
changing TASK_TRACED to __TASK_TRACED as all of the wake_ups that use
TASK_KILLABLE go through signal_wake_up.

Handle a ptrace_stop being called with a pending fatal signal.
Previously it would have been handled by schedule simply failing to
sleep.  As TASK_WAKEKILL is no longer part of TASK_TRACED schedule
will sleep with a fatal_signal_pending.   The code in signal_wake_up
guarantees that the code will be awaked by any fatal signal that
codes after TASK_TRACED is set.

Previously the __state value of __TASK_TRACED was changed to
TASK_RUNNING when woken up or back to TASK_TRACED when the code was
left in ptrace_stop.  Now when woken up ptrace_stop now clears
JOBCTL_PTRACE_FROZEN and when left sleeping ptrace_unfreezed_traced
clears JOBCTL_PTRACE_FROZEN.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
---
 include/linux/sched.h        |  2 +-
 include/linux/sched/jobctl.h |  2 ++
 include/linux/sched/signal.h |  5 +++--
 kernel/ptrace.c              | 21 ++++++++-------------
 kernel/sched/core.c          |  5 +----
 kernel/signal.c              | 10 +++++++---
 6 files changed, 22 insertions(+), 23 deletions(-)

diff --git a/include/linux/sched.h b/include/linux/sched.h
index d5e3c00b74e1..610f2fdb1e2c 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -103,7 +103,7 @@ struct task_group;
 /* Convenience macros for the sake of set_current_state: */
 #define TASK_KILLABLE			(TASK_WAKEKILL | TASK_UNINTERRUPTIBLE)
 #define TASK_STOPPED			(TASK_WAKEKILL | __TASK_STOPPED)
-#define TASK_TRACED			(TASK_WAKEKILL | __TASK_TRACED)
+#define TASK_TRACED			__TASK_TRACED
 
 #define TASK_IDLE			(TASK_UNINTERRUPTIBLE | TASK_NOLOAD)
 
diff --git a/include/linux/sched/jobctl.h b/include/linux/sched/jobctl.h
index fa067de9f1a9..d556c3425963 100644
--- a/include/linux/sched/jobctl.h
+++ b/include/linux/sched/jobctl.h
@@ -19,6 +19,7 @@ struct task_struct;
 #define JOBCTL_TRAPPING_BIT	21	/* switching to TRACED */
 #define JOBCTL_LISTENING_BIT	22	/* ptracer is listening for events */
 #define JOBCTL_TRAP_FREEZE_BIT	23	/* trap for cgroup freezer */
+#define JOBCTL_PTRACE_FROZEN_BIT	24	/* frozen for ptrace */
 
 #define JOBCTL_STOP_DEQUEUED	(1UL << JOBCTL_STOP_DEQUEUED_BIT)
 #define JOBCTL_STOP_PENDING	(1UL << JOBCTL_STOP_PENDING_BIT)
@@ -28,6 +29,7 @@ struct task_struct;
 #define JOBCTL_TRAPPING		(1UL << JOBCTL_TRAPPING_BIT)
 #define JOBCTL_LISTENING	(1UL << JOBCTL_LISTENING_BIT)
 #define JOBCTL_TRAP_FREEZE	(1UL << JOBCTL_TRAP_FREEZE_BIT)
+#define JOBCTL_PTRACE_FROZEN	(1UL << JOBCTL_PTRACE_FROZEN_BIT)
 
 #define JOBCTL_TRAP_MASK	(JOBCTL_TRAP_STOP | JOBCTL_TRAP_NOTIFY)
 #define JOBCTL_PENDING_MASK	(JOBCTL_STOP_PENDING | JOBCTL_TRAP_MASK)
diff --git a/include/linux/sched/signal.h b/include/linux/sched/signal.h
index 3c8b34876744..e66948abbee4 100644
--- a/include/linux/sched/signal.h
+++ b/include/linux/sched/signal.h
@@ -435,9 +435,10 @@ extern void calculate_sigpending(void);
 
 extern void signal_wake_up_state(struct task_struct *t, unsigned int state);
 
-static inline void signal_wake_up(struct task_struct *t, bool resume)
+static inline void signal_wake_up(struct task_struct *t, bool fatal)
 {
-	signal_wake_up_state(t, resume ? TASK_WAKEKILL : 0);
+	fatal = fatal && !(t->jobctl & JOBCTL_PTRACE_FROZEN);
+	signal_wake_up_state(t, fatal ? TASK_WAKEKILL | __TASK_TRACED : 0);
 }
 static inline void ptrace_signal_wake_up(struct task_struct *t, bool resume)
 {
diff --git a/kernel/ptrace.c b/kernel/ptrace.c
index 05953ac9f7bd..83ed28262708 100644
--- a/kernel/ptrace.c
+++ b/kernel/ptrace.c
@@ -197,7 +197,7 @@ static bool ptrace_freeze_traced(struct task_struct *task)
 	spin_lock_irq(&task->sighand->siglock);
 	if (task_is_traced(task) && !looks_like_a_spurious_pid(task) &&
 	    !__fatal_signal_pending(task)) {
-		WRITE_ONCE(task->__state, __TASK_TRACED);
+		task->jobctl |= JOBCTL_PTRACE_FROZEN;
 		ret = true;
 	}
 	spin_unlock_irq(&task->sighand->siglock);
@@ -207,23 +207,19 @@ static bool ptrace_freeze_traced(struct task_struct *task)
 
 static void ptrace_unfreeze_traced(struct task_struct *task)
 {
-	if (READ_ONCE(task->__state) != __TASK_TRACED)
-		return;
-
-	WARN_ON(!task->ptrace || task->parent != current);
+	unsigned long flags;
 
 	/*
-	 * PTRACE_LISTEN can allow ptrace_trap_notify to wake us up remotely.
-	 * Recheck state under the lock to close this race.
+	 * The child may be awake and may have cleared
+	 * JOBCTL_PTRACE_FROZEN (see ptrace_resume).  The child will
+	 * not set JOBCTL_PTRACE_FROZEN or enter __TASK_TRACED anew.
 	 */
-	spin_lock_irq(&task->sighand->siglock);
-	if (READ_ONCE(task->__state) = __TASK_TRACED) {
+	if (lock_task_sighand(task, &flags)) {
+		task->jobctl &= ~JOBCTL_PTRACE_FROZEN;
 		if (__fatal_signal_pending(task))
 			wake_up_state(task, __TASK_TRACED);
-		else
-			WRITE_ONCE(task->__state, TASK_TRACED);
+		unlock_task_sighand(task, &flags);
 	}
-	spin_unlock_irq(&task->sighand->siglock);
 }
 
 /**
@@ -256,7 +252,6 @@ static int ptrace_check_attach(struct task_struct *child, bool ignore_state)
 	 */
 	read_lock(&tasklist_lock);
 	if (child->ptrace && child->parent = current) {
-		WARN_ON(READ_ONCE(child->__state) = __TASK_TRACED);
 		/*
 		 * child->sighand can't be NULL, release_task()
 		 * does ptrace_unlink() before __exit_signal().
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index d575b4914925..3c351707e830 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -6304,10 +6304,7 @@ static void __sched notrace __schedule(unsigned int sched_mode)
 
 	/*
 	 * We must load prev->state once (task_struct::state is volatile), such
-	 * that:
-	 *
-	 *  - we form a control dependency vs deactivate_task() below.
-	 *  - ptrace_{,un}freeze_traced() can change ->state underneath us.
+	 * that we form a control dependency vs deactivate_task() below.
 	 */
 	prev_state = READ_ONCE(prev->__state);
 	if (!(sched_mode & SM_MASK_PREEMPT) && prev_state) {
diff --git a/kernel/signal.c b/kernel/signal.c
index 16828fde5424..e0b416b21ad3 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -2210,9 +2210,13 @@ static int ptrace_stop(int exit_code, int why, unsigned long message,
 	}
 
 	/*
-	 * schedule() will not sleep if there is a pending signal that
-	 * can awaken the task.
+	 * After this point signal_wake_up will clear TASK_TRACED
+	 * if a fatal signal comes in.  Handle previous fatal signals
+	 * here to prevent ptrace_stop sleeping in schedule.
 	 */
+	if (__fatal_signal_pending(current))
+		return exit_code;
+
 	set_special_state(TASK_TRACED);
 
 	/*
@@ -2300,7 +2304,7 @@ static int ptrace_stop(int exit_code, int why, unsigned long message,
 	current->exit_code = 0;
 
 	/* LISTENING can be set only during STOP traps, clear it */
-	current->jobctl &= ~JOBCTL_LISTENING;
+	current->jobctl &= ~(JOBCTL_LISTENING | JOBCTL_PTRACE_FROZEN);
 
 	/*
 	 * Queued signals ignored us while we were stopped for tracing.
-- 
2.35.3

  parent reply	other threads:[~2022-05-04 22:42 UTC|newest]

Thread overview: 572+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-21 15:02 [PATCH v2 0/5] ptrace-vs-PREEMPT_RT and freezer rewrite Peter Zijlstra
2022-04-21 15:02 ` [PATCH v2 1/5] sched,signal,ptrace: Rework TASK_TRACED, TASK_STOPPED state Peter Zijlstra
2022-04-26 23:34   ` Eric W. Biederman
2022-04-28 10:00     ` Peter Zijlstra
2022-04-21 15:02 ` [PATCH v2 2/5] sched,ptrace: Fix ptrace_check_attach() vs PREEMPT_RT Peter Zijlstra
2022-04-21 18:23   ` Oleg Nesterov
2022-04-21 19:58     ` Peter Zijlstra
2022-04-21 18:40   ` Eric W. Biederman
2022-04-26 22:50     ` [PATCH 0/9] ptrace: cleaning up ptrace_stop Eric W. Biederman
2022-04-26 22:50       ` Eric W. Biederman
2022-04-26 22:52       ` [PATCH 1/9] signal: Rename send_signal send_signal_locked Eric W. Biederman
2022-04-26 22:52         ` Eric W. Biederman
2022-04-28 10:27         ` Peter Zijlstra
2022-04-28 10:27           ` Peter Zijlstra
2022-04-26 22:52       ` [PATCH 2/9] signal: Replace __group_send_sig_info with send_signal_locked Eric W. Biederman
2022-04-26 22:52         ` Eric W. Biederman
2022-04-26 22:52       ` [PATCH 3/9] ptrace/um: Replace PT_DTRACE with TIF_SINGLESTEP Eric W. Biederman
2022-04-26 22:52         ` Eric W. Biederman
2022-04-27  7:10         ` Johannes Berg
2022-04-27  7:10           ` Johannes Berg
2022-04-27 13:50           ` Eric W. Biederman
2022-04-27 13:50             ` Eric W. Biederman
2022-04-26 22:52       ` [PATCH 4/9] ptrace/xtensa: Replace PT_SINGLESTEP " Eric W. Biederman
2022-04-26 22:52         ` Eric W. Biederman
2022-04-26 23:33         ` Max Filippov
2022-04-26 23:33           ` Max Filippov
2022-04-26 22:52       ` [PATCH 5/9] signal: Protect parent child relationships by childs siglock Eric W. Biederman
2022-04-26 22:52         ` Eric W. Biederman
2022-04-27  6:40         ` Sebastian Andrzej Siewior
2022-04-27  6:40           ` Sebastian Andrzej Siewior
2022-04-27 13:35           ` Eric W. Biederman
2022-04-27 13:35             ` Eric W. Biederman
2022-04-26 22:52       ` [PATCH 6/9] signal: Always call do_notify_parent_cldstop with siglock held Eric W. Biederman
2022-04-26 22:52         ` Eric W. Biederman
2022-04-27 14:10         ` Oleg Nesterov
2022-04-27 14:10           ` Oleg Nesterov
2022-04-27 14:20           ` Eric W. Biederman
2022-04-27 14:20             ` Eric W. Biederman
2022-04-27 14:43             ` Oleg Nesterov
2022-04-27 14:43               ` Oleg Nesterov
2022-04-27 14:47             ` Eric W. Biederman
2022-04-27 14:47               ` Eric W. Biederman
2022-04-28 17:44               ` Peter Zijlstra
2022-04-28 17:44                 ` Peter Zijlstra
2022-04-28 18:22                 ` Oleg Nesterov
2022-04-28 18:22                   ` Oleg Nesterov
2022-04-28 18:37                 ` Eric W. Biederman
2022-04-28 18:37                   ` Eric W. Biederman
2022-04-28 20:49                   ` Eric W. Biederman
2022-04-28 20:49                     ` Eric W. Biederman
2022-04-28 22:19                     ` Peter Zijlstra
2022-04-28 22:19                       ` Peter Zijlstra
2022-04-27 14:56         ` Oleg Nesterov
2022-04-27 14:56           ` Oleg Nesterov
2022-04-27 15:00           ` Oleg Nesterov
2022-04-27 15:00             ` Oleg Nesterov
2022-04-27 21:52             ` Eric W. Biederman
2022-04-27 21:52               ` Eric W. Biederman
2022-04-28 10:38         ` Peter Zijlstra
2022-04-28 10:38           ` Peter Zijlstra
2022-04-26 22:52       ` [PATCH 7/9] ptrace: Simplify the wait_task_inactive call in ptrace_check_attach Eric W. Biederman
2022-04-26 22:52         ` Eric W. Biederman
2022-04-27 13:42         ` Eric W. Biederman
2022-04-27 13:42           ` Eric W. Biederman
2022-04-27 14:27           ` Eric W. Biederman
2022-04-27 14:27             ` Eric W. Biederman
2022-04-27 15:14         ` Oleg Nesterov
2022-04-27 15:14           ` Oleg Nesterov
2022-04-28 10:42           ` Peter Zijlstra
2022-04-28 10:42             ` Peter Zijlstra
2022-04-28 11:19             ` Oleg Nesterov
2022-04-28 11:19               ` Oleg Nesterov
2022-04-28 13:54               ` Peter Zijlstra
2022-04-28 13:54                 ` Peter Zijlstra
2022-04-28 14:57                 ` Oleg Nesterov
2022-04-28 14:57                   ` Oleg Nesterov
2022-04-28 16:09                   ` Peter Zijlstra
2022-04-28 16:09                     ` Peter Zijlstra
2022-04-28 16:19                     ` Oleg Nesterov
2022-04-28 16:19                       ` Oleg Nesterov
2022-04-26 22:52       ` [PATCH 8/9] ptrace: Use siglock instead of tasklist_lock " Eric W. Biederman
2022-04-26 22:52         ` Eric W. Biederman
2022-04-27 15:20         ` Oleg Nesterov
2022-04-27 15:20           ` Oleg Nesterov
2022-04-26 22:52       ` [PATCH 9/9] ptrace: Don't change __state Eric W. Biederman
2022-04-26 22:52         ` Eric W. Biederman
2022-04-27 15:41         ` Oleg Nesterov
2022-04-27 15:41           ` Oleg Nesterov
2022-04-27 22:35           ` Eric W. Biederman
2022-04-27 22:35             ` Eric W. Biederman
2022-04-27 16:09         ` Oleg Nesterov
2022-04-27 16:33           ` Eric W. Biederman
2022-04-27 17:18             ` Oleg Nesterov
2022-04-27 17:18               ` Oleg Nesterov
2022-04-27 17:21               ` Oleg Nesterov
2022-04-27 17:21                 ` Oleg Nesterov
2022-04-27 17:31                 ` Eric W. Biederman
2022-04-27 17:31                   ` Eric W. Biederman
2022-04-27 23:05         ` Eric W. Biederman
2022-04-27 23:05           ` Eric W. Biederman
2022-04-28 15:11           ` Oleg Nesterov
2022-04-28 15:11             ` Oleg Nesterov
2022-04-28 16:50             ` Eric W. Biederman
2022-04-28 16:50               ` Eric W. Biederman
2022-04-28 18:53               ` Oleg Nesterov
2022-04-28 18:53                 ` Oleg Nesterov
2022-04-28 10:07       ` [PATCH 0/9] ptrace: cleaning up ptrace_stop Peter Zijlstra
2022-04-28 10:07         ` Peter Zijlstra
2022-04-29 21:46       ` [PATCH 0/12] " Eric W. Biederman
2022-04-29 21:46         ` Eric W. Biederman
2022-04-29 21:46         ` Eric W. Biederman
2022-04-29 21:48         ` [PATCH v2 01/12] signal: Rename send_signal send_signal_locked Eric W. Biederman
2022-04-29 21:48           ` Eric W. Biederman
2022-04-29 21:48           ` Eric W. Biederman
2022-05-02  7:50           ` Sebastian Andrzej Siewior
2022-05-02  7:50             ` Sebastian Andrzej Siewior
2022-05-02  7:50             ` Sebastian Andrzej Siewior
2022-04-29 21:48         ` [PATCH v2 02/12] signal: Replace __group_send_sig_info with send_signal_locked Eric W. Biederman
2022-04-29 21:48           ` Eric W. Biederman
2022-04-29 21:48           ` Eric W. Biederman
2022-05-02  7:58           ` Sebastian Andrzej Siewior
2022-05-02  7:58             ` Sebastian Andrzej Siewior
2022-05-02  7:58             ` Sebastian Andrzej Siewior
2022-04-29 21:48         ` [PATCH v2 03/12] ptrace/um: Replace PT_DTRACE with TIF_SINGLESTEP Eric W. Biederman
2022-04-29 21:48           ` Eric W. Biederman
2022-04-29 21:48           ` Eric W. Biederman
2022-04-29 21:48         ` [PATCH v2 04/12] ptrace/xtensa: Replace PT_SINGLESTEP " Eric W. Biederman
2022-04-29 21:48           ` Eric W. Biederman
2022-04-29 21:48           ` Eric W. Biederman
2022-04-29 21:48         ` [PATCH v2 05/12] signal: Use lockdep_assert_held instead of assert_spin_locked Eric W. Biederman
2022-04-29 21:48           ` Eric W. Biederman
2022-04-29 21:48           ` Eric W. Biederman
2022-04-29 21:48         ` [PATCH v2 06/12] ptrace: Reimplement PTRACE_KILL by always sending SIGKILL Eric W. Biederman
2022-04-29 21:48           ` Eric W. Biederman
2022-04-29 21:48           ` Eric W. Biederman
2022-05-02 14:37           ` Oleg Nesterov
2022-05-02 14:37             ` Oleg Nesterov
2022-05-02 14:37             ` Oleg Nesterov
2022-05-03 19:36             ` Eric W. Biederman
2022-05-03 19:36               ` Eric W. Biederman
2022-05-03 19:36               ` Eric W. Biederman
2022-04-29 21:48         ` [PATCH v2 07/12] ptrace: Don't change __state Eric W. Biederman
2022-04-29 21:48           ` Eric W. Biederman
2022-04-29 21:48           ` Eric W. Biederman
2022-04-29 22:27           ` Peter Zijlstra
2022-04-29 22:27             ` Peter Zijlstra
2022-04-29 22:27             ` Peter Zijlstra
2022-05-02  8:59           ` Sebastian Andrzej Siewior
2022-05-02  8:59             ` Sebastian Andrzej Siewior
2022-05-02  8:59             ` Sebastian Andrzej Siewior
2022-05-02 15:39           ` Oleg Nesterov
2022-05-02 15:39             ` Oleg Nesterov
2022-05-02 15:39             ` Oleg Nesterov
2022-05-02 16:35             ` Eric W. Biederman
2022-05-02 16:35               ` Eric W. Biederman
2022-05-02 16:35               ` Eric W. Biederman
2022-05-03 13:41               ` Oleg Nesterov
2022-05-03 13:41                 ` Oleg Nesterov
2022-05-03 13:41                 ` Oleg Nesterov
2022-05-03 20:45                 ` Eric W. Biederman
2022-05-03 20:45                   ` Eric W. Biederman
2022-05-03 20:45                   ` Eric W. Biederman
2022-05-04 14:02                   ` Oleg Nesterov
2022-05-04 14:02                     ` Oleg Nesterov
2022-05-04 14:02                     ` Oleg Nesterov
2022-05-04 17:37                     ` Eric W. Biederman
2022-05-04 17:37                       ` Eric W. Biederman
2022-05-04 17:37                       ` Eric W. Biederman
2022-05-04 18:28                       ` Eric W. Biederman
2022-05-04 18:28                         ` Eric W. Biederman
2022-05-04 18:28                         ` Eric W. Biederman
2022-05-02 15:47           ` Oleg Nesterov
2022-05-02 15:47             ` Oleg Nesterov
2022-05-02 15:47             ` Oleg Nesterov
2022-04-29 21:48         ` [PATCH v2 08/12] ptrace: Remove arch_ptrace_attach Eric W. Biederman
2022-04-29 21:48           ` Eric W. Biederman
2022-04-29 21:48           ` Eric W. Biederman
2022-04-29 21:48         ` [PATCH v2 09/12] ptrace: Always take siglock in ptrace_resume Eric W. Biederman
2022-04-29 21:48           ` Eric W. Biederman
2022-04-29 21:48           ` Eric W. Biederman
2022-04-29 21:48         ` [PATCH v2 10/12] ptrace: Only return signr from ptrace_stop if it was provided Eric W. Biederman
2022-04-29 21:48           ` Eric W. Biederman
2022-04-29 21:48           ` Eric W. Biederman
2022-05-02 10:08           ` Sebastian Andrzej Siewior
2022-05-02 10:08             ` Sebastian Andrzej Siewior
2022-05-02 10:08             ` Sebastian Andrzej Siewior
2022-04-29 21:48         ` [PATCH v2 11/12] ptrace: Always call schedule in ptrace_stop Eric W. Biederman
2022-04-29 21:48           ` Eric W. Biederman
2022-04-29 21:48           ` Eric W. Biederman
2022-04-29 21:48         ` [PATCH v2 12/12] sched,signal,ptrace: Rework TASK_TRACED, TASK_STOPPED state Eric W. Biederman
2022-04-29 21:48           ` Eric W. Biederman
2022-04-29 21:48           ` [PATCH v2 12/12] sched, signal, ptrace: " Eric W. Biederman
2022-05-02 10:18           ` [PATCH v2 12/12] sched,signal,ptrace: " Sebastian Andrzej Siewior
2022-05-02 10:18             ` Sebastian Andrzej Siewior
2022-05-02 10:18             ` Sebastian Andrzej Siewior
2022-05-02 13:38         ` [PATCH 0/12] ptrace: cleaning up ptrace_stop Sebastian Andrzej Siewior
2022-05-02 13:38           ` Sebastian Andrzej Siewior
2022-05-02 13:38           ` Sebastian Andrzej Siewior
2022-05-04 22:39         ` [PATCH v3 0/11] " Eric W. Biederman
2022-05-04 22:39           ` Eric W. Biederman
2022-05-04 22:39           ` Eric W. Biederman
2022-05-04 22:40           ` [PATCH v3 01/11] signal: Rename send_signal send_signal_locked Eric W. Biederman
2022-05-04 22:40             ` Eric W. Biederman
2022-05-04 22:40             ` Eric W. Biederman
2022-05-04 22:40           ` [PATCH v3 02/11] signal: Replace __group_send_sig_info with send_signal_locked Eric W. Biederman
2022-05-04 22:40             ` Eric W. Biederman
2022-05-04 22:40             ` Eric W. Biederman
2022-05-04 22:40           ` [PATCH v3 03/11] ptrace/um: Replace PT_DTRACE with TIF_SINGLESTEP Eric W. Biederman
2022-05-04 22:40             ` Eric W. Biederman
2022-05-04 22:40             ` Eric W. Biederman
2022-05-04 22:40           ` [PATCH v3 04/11] ptrace/xtensa: Replace PT_SINGLESTEP " Eric W. Biederman
2022-05-04 22:40             ` Eric W. Biederman
2022-05-04 22:40             ` Eric W. Biederman
2022-05-04 22:40           ` [PATCH v3 05/11] ptrace: Remove arch_ptrace_attach Eric W. Biederman
2022-05-04 22:40             ` Eric W. Biederman
2022-05-04 22:40             ` Eric W. Biederman
2022-05-04 22:40           ` [PATCH v3 06/11] signal: Use lockdep_assert_held instead of assert_spin_locked Eric W. Biederman
2022-05-04 22:40             ` Eric W. Biederman
2022-05-04 22:40             ` Eric W. Biederman
2022-05-04 22:40           ` [PATCH v3 07/11] ptrace: Reimplement PTRACE_KILL by always sending SIGKILL Eric W. Biederman
2022-05-04 22:40             ` Eric W. Biederman
2022-05-04 22:40             ` Eric W. Biederman
2022-05-04 22:40           ` [PATCH v3 08/11] ptrace: Admit ptrace_stop can generate spuriuos SIGTRAPs Eric W. Biederman
2022-05-04 22:40             ` Eric W. Biederman
2022-05-04 22:40             ` Eric W. Biederman
2022-05-05 14:57             ` Oleg Nesterov
2022-05-05 14:57               ` Oleg Nesterov
2022-05-05 14:57               ` Oleg Nesterov
2022-05-05 16:59               ` Eric W. Biederman
2022-05-05 16:59                 ` Eric W. Biederman
2022-05-05 16:59                 ` Eric W. Biederman
2022-05-05 15:01             ` Oleg Nesterov
2022-05-05 15:01               ` Oleg Nesterov
2022-05-05 15:01               ` Oleg Nesterov
2022-05-05 17:21               ` Eric W. Biederman
2022-05-05 17:21                 ` Eric W. Biederman
2022-05-05 17:21                 ` Eric W. Biederman
2022-05-05 17:27                 ` Oleg Nesterov
2022-05-05 17:27                   ` Oleg Nesterov
2022-05-05 17:27                   ` Oleg Nesterov
2022-05-05 15:28             ` Oleg Nesterov
2022-05-05 15:28               ` Oleg Nesterov
2022-05-05 15:28               ` Oleg Nesterov
2022-05-05 17:53               ` Eric W. Biederman
2022-05-05 17:53                 ` Eric W. Biederman
2022-05-05 17:53                 ` Eric W. Biederman
2022-05-05 18:10                 ` Oleg Nesterov
2022-05-05 18:10                   ` Oleg Nesterov
2022-05-05 18:10                   ` Oleg Nesterov
2022-05-04 22:40           ` Eric W. Biederman [this message]
2022-05-04 22:40             ` [PATCH v3 09/11] ptrace: Don't change __state Eric W. Biederman
2022-05-04 22:40             ` Eric W. Biederman
2022-05-05 12:50             ` Sebastian Andrzej Siewior
2022-05-05 12:50               ` Sebastian Andrzej Siewior
2022-05-05 12:50               ` Sebastian Andrzej Siewior
2022-05-05 16:48               ` Eric W. Biederman
2022-05-05 16:48                 ` Eric W. Biederman
2022-05-05 16:48                 ` Eric W. Biederman
2022-05-04 22:40           ` [PATCH v3 10/11] ptrace: Always take siglock in ptrace_resume Eric W. Biederman
2022-05-04 22:40             ` Eric W. Biederman
2022-05-04 22:40             ` Eric W. Biederman
2022-05-04 22:40           ` [PATCH v3 11/11] sched,signal,ptrace: Rework TASK_TRACED, TASK_STOPPED state Eric W. Biederman
2022-05-04 22:40             ` Eric W. Biederman
2022-05-04 22:40             ` [PATCH v3 11/11] sched, signal, ptrace: " Eric W. Biederman
2022-05-05 18:25           ` [PATCH v4 0/12] ptrace: cleaning up ptrace_stop Eric W. Biederman
2022-05-05 18:25             ` Eric W. Biederman
2022-05-05 18:25             ` Eric W. Biederman
2022-05-05 18:26             ` [PATCH v4 01/12] signal: Rename send_signal send_signal_locked Eric W. Biederman
2022-05-05 18:26               ` Eric W. Biederman
2022-05-05 18:26               ` Eric W. Biederman
2022-05-05 18:26             ` [PATCH v4 02/12] signal: Replace __group_send_sig_info with send_signal_locked Eric W. Biederman
2022-05-05 18:26               ` Eric W. Biederman
2022-05-05 18:26               ` Eric W. Biederman
2022-05-05 18:26             ` [PATCH v4 03/12] ptrace/um: Replace PT_DTRACE with TIF_SINGLESTEP Eric W. Biederman
2022-05-05 18:26               ` Eric W. Biederman
2022-05-05 18:26               ` Eric W. Biederman
2022-05-05 18:26             ` [PATCH v4 04/12] ptrace/xtensa: Replace PT_SINGLESTEP " Eric W. Biederman
2022-05-05 18:26               ` Eric W. Biederman
2022-05-05 18:26               ` Eric W. Biederman
2022-05-05 18:26             ` [PATCH v4 05/12] ptrace: Remove arch_ptrace_attach Eric W. Biederman
2022-05-05 18:26               ` Eric W. Biederman
2022-05-05 18:26               ` Eric W. Biederman
2022-05-05 18:26             ` [PATCH v4 06/12] signal: Use lockdep_assert_held instead of assert_spin_locked Eric W. Biederman
2022-05-05 18:26               ` Eric W. Biederman
2022-05-05 18:26               ` Eric W. Biederman
2022-05-05 18:26             ` [PATCH v4 07/12] ptrace: Reimplement PTRACE_KILL by always sending SIGKILL Eric W. Biederman
2022-05-05 18:26               ` Eric W. Biederman
2022-05-05 18:26               ` Eric W. Biederman
2022-05-05 18:26             ` [PATCH v4 08/12] ptrace: Document that wait_task_inactive can't fail Eric W. Biederman
2022-05-05 18:26               ` Eric W. Biederman
2022-05-05 18:26               ` Eric W. Biederman
2022-05-06  6:55               ` Sebastian Andrzej Siewior
2022-05-06  6:55                 ` Sebastian Andrzej Siewior
2022-05-06  6:55                 ` Sebastian Andrzej Siewior
2022-05-05 18:26             ` [PATCH v4 09/12] ptrace: Admit ptrace_stop can generate spuriuos SIGTRAPs Eric W. Biederman
2022-05-05 18:26               ` Eric W. Biederman
2022-05-05 18:26               ` Eric W. Biederman
2022-05-05 18:26             ` [PATCH v4 10/12] ptrace: Don't change __state Eric W. Biederman
2022-05-05 18:26               ` Eric W. Biederman
2022-05-05 18:26               ` Eric W. Biederman
2022-05-06 15:09               ` Oleg Nesterov
2022-05-06 15:09                 ` Oleg Nesterov
2022-05-06 15:09                 ` Oleg Nesterov
2022-05-06 19:42                 ` Eric W. Biederman
2022-05-06 19:42                   ` Eric W. Biederman
2022-05-06 19:42                   ` Eric W. Biederman
2022-05-10 14:23               ` Oleg Nesterov
2022-05-10 14:23                 ` Oleg Nesterov
2022-05-10 14:23                 ` Oleg Nesterov
2022-05-10 15:17                 ` Eric W. Biederman
2022-05-10 15:17                   ` Eric W. Biederman
2022-05-10 15:17                   ` Eric W. Biederman
2022-05-10 15:34                   ` Oleg Nesterov
2022-05-10 15:34                     ` Oleg Nesterov
2022-05-10 15:34                     ` Oleg Nesterov
2022-05-05 18:26             ` [PATCH v4 11/12] ptrace: Always take siglock in ptrace_resume Eric W. Biederman
2022-05-05 18:26               ` Eric W. Biederman
2022-05-05 18:26               ` Eric W. Biederman
2022-05-05 18:26             ` [PATCH v4 12/12] sched,signal,ptrace: Rework TASK_TRACED, TASK_STOPPED state Eric W. Biederman
2022-05-05 18:26               ` Eric W. Biederman
2022-05-05 18:26               ` [PATCH v4 12/12] sched, signal, ptrace: " Eric W. Biederman
2022-06-21 13:00               ` [PATCH v4 12/12] sched,signal,ptrace: " Alexander Gordeev
2022-06-21 13:00                 ` Alexander Gordeev
2022-06-21 13:00                 ` Alexander Gordeev
2022-06-21 14:02                 ` Eric W. Biederman
2022-06-21 14:02                   ` Eric W. Biederman
2022-06-21 15:15                   ` Alexander Gordeev
2022-06-21 15:15                     ` Alexander Gordeev
2022-06-21 15:15                     ` Alexander Gordeev
2022-06-21 17:47                     ` Eric W. Biederman
2022-06-21 17:47                       ` Eric W. Biederman
2022-06-21 17:47                       ` Eric W. Biederman
2022-06-25 16:34                     ` Eric W. Biederman
2022-06-25 16:34                       ` Eric W. Biederman
2022-06-25 16:34                       ` Eric W. Biederman
2022-06-28 18:36                       ` Alexander Gordeev
2022-06-28 18:36                         ` Alexander Gordeev
2022-06-28 18:36                         ` Alexander Gordeev
2022-06-28 22:42                         ` Eric W. Biederman
2022-06-28 22:42                           ` Eric W. Biederman
2022-06-28 22:48                           ` Steven Rostedt
2022-06-28 22:48                             ` Steven Rostedt
2022-06-29  3:39                             ` Eric W. Biederman
2022-06-29  3:39                               ` Eric W. Biederman
2022-06-29  3:39                               ` Eric W. Biederman
2022-06-29 20:25                               ` Alexander Gordeev
2022-06-29 20:25                                 ` Alexander Gordeev
2022-06-29 20:25                                 ` Alexander Gordeev
2022-07-05 15:44                               ` Peter Zijlstra
2022-07-05 15:44                                 ` Peter Zijlstra
2022-07-05 15:44                                 ` Peter Zijlstra
2022-07-06  6:56                                 ` Alexander Gordeev
2022-07-06  6:56                                   ` Alexander Gordeev
2022-07-06  6:56                                   ` Alexander Gordeev
2022-06-28 23:15                     ` Steven Rostedt
2022-06-28 23:15                       ` Steven Rostedt
2022-06-28 23:15                       ` Steven Rostedt
2022-07-05 13:47                       ` Sven Schnelle
2022-07-05 13:47                         ` Sven Schnelle
2022-07-05 13:47                         ` Sven Schnelle
2022-07-05 17:28                         ` Sven Schnelle
2022-07-05 17:28                           ` Sven Schnelle
2022-07-05 17:28                           ` Sven Schnelle
2022-07-05 19:25                           ` Peter Zijlstra
2022-07-05 19:25                             ` Peter Zijlstra
2022-07-05 19:25                             ` Peter Zijlstra
2022-07-06  7:58                             ` Sven Schnelle
2022-07-06  7:58                               ` Sven Schnelle
2022-07-06  7:58                               ` Sven Schnelle
2022-07-06  8:59                               ` Peter Zijlstra
2022-07-06  8:59                                 ` Peter Zijlstra
2022-07-06  8:59                                 ` Peter Zijlstra
2022-07-06  9:27                                 ` Sven Schnelle
2022-07-06  9:27                                   ` Sven Schnelle
2022-07-06  9:27                                   ` Sven Schnelle
2022-07-06 10:11                                   ` Peter Zijlstra
2022-07-06 10:11                                     ` Peter Zijlstra
2022-05-06 14:14             ` [PATCH v4 0/12] ptrace: cleaning up ptrace_stop Oleg Nesterov
2022-05-06 14:14               ` Oleg Nesterov
2022-05-06 14:14               ` Oleg Nesterov
2022-05-06 14:38               ` Eric W. Biederman
2022-05-06 14:38                 ` Eric W. Biederman
2022-05-06 14:38                 ` Eric W. Biederman
2022-05-06 21:26             ` Kees Cook
2022-05-06 21:26               ` Kees Cook
2022-05-06 21:59               ` Eric W. Biederman
2022-05-06 21:59                 ` Eric W. Biederman
2022-05-06 21:59                 ` Eric W. Biederman
2022-05-10 14:11             ` Oleg Nesterov
2022-05-10 14:11               ` Oleg Nesterov
2022-05-10 14:11               ` Oleg Nesterov
2022-05-10 14:26               ` Eric W. Biederman
2022-05-10 14:26                 ` Eric W. Biederman
2022-05-10 14:26                 ` Eric W. Biederman
2022-05-10 14:45                 ` Sebastian Andrzej Siewior
2022-05-10 14:45                   ` Sebastian Andrzej Siewior
2022-05-10 14:45                   ` Sebastian Andrzej Siewior
2022-05-10 15:18                   ` Eric W. Biederman
2022-05-10 15:18                     ` Eric W. Biederman
2022-05-10 15:18                     ` Eric W. Biederman
2022-05-11 20:00                 ` Eric W. Biederman
2022-05-11 20:00                   ` Eric W. Biederman
2022-05-11 20:00                   ` Eric W. Biederman
2022-05-18 22:49             ` [PATCH 00/16] ptrace: cleanups and calling do_cldstop with only siglock Eric W. Biederman
2022-05-18 22:49               ` Eric W. Biederman
2022-05-18 22:49               ` Eric W. Biederman
2022-05-18 22:53               ` [PATCH 01/16] signal/alpha: Remove unused definition of TASK_REAL_PARENT Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53               ` [PATCH 02/16] signal/ia64: Remove unused definition of IA64_TASK_REAL_PARENT_OFFSET Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53               ` [PATCH 03/16] kdb: Use real_parent when displaying a list of processes Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-19  7:56                 ` Peter Zijlstra
2022-05-19  7:56                   ` Peter Zijlstra
2022-05-19  7:56                   ` Peter Zijlstra
2022-05-19 18:06                   ` Eric W. Biederman
2022-05-19 18:06                     ` Eric W. Biederman
2022-05-19 18:06                     ` Eric W. Biederman
2022-05-19 20:52                 ` Doug Anderson
2022-05-19 20:52                   ` Doug Anderson
2022-05-19 20:52                   ` Doug Anderson
2022-05-19 23:48                   ` Eric W. Biederman
2022-05-19 23:48                     ` Eric W. Biederman
2022-05-19 23:48                     ` Eric W. Biederman
2022-05-20 23:01                     ` Doug Anderson
2022-05-20 23:01                       ` Doug Anderson
2022-05-20 23:01                       ` Doug Anderson
2022-05-18 22:53               ` [PATCH 04/16] powerpc/xmon: " Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53               ` [PATCH 05/16] ptrace: Remove dead code from __ptrace_detach Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-24 11:42                 ` Oleg Nesterov
2022-05-24 11:42                   ` Oleg Nesterov
2022-05-24 11:42                   ` Oleg Nesterov
2022-05-25 14:33                   ` Oleg Nesterov
2022-05-25 14:33                     ` Oleg Nesterov
2022-05-25 14:33                     ` Oleg Nesterov
2022-06-06 16:06                     ` Eric W. Biederman
2022-06-06 16:06                       ` Eric W. Biederman
2022-06-06 16:06                       ` Eric W. Biederman
2022-05-18 22:53               ` [PATCH 06/16] ptrace: Remove unnecessary locking in ptrace_(get|set)siginfo Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-24 13:25                 ` Oleg Nesterov
2022-05-24 13:25                   ` Oleg Nesterov
2022-05-24 13:25                   ` Oleg Nesterov
2022-05-18 22:53               ` [PATCH 07/16] signal: Wake up the designated parent Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-24 13:25                 ` Oleg Nesterov
2022-05-24 13:25                   ` Oleg Nesterov
2022-05-24 13:25                   ` Oleg Nesterov
2022-05-24 16:28                   ` Oleg Nesterov
2022-05-24 16:28                     ` Oleg Nesterov
2022-05-24 16:28                     ` Oleg Nesterov
2022-05-25 14:28                     ` Oleg Nesterov
2022-05-25 14:28                       ` Oleg Nesterov
2022-05-25 14:28                       ` Oleg Nesterov
2022-06-06 22:10                       ` Eric W. Biederman
2022-06-06 22:10                         ` Eric W. Biederman
2022-06-06 22:10                         ` Eric W. Biederman
2022-06-07 15:26                         ` Oleg Nesterov
2022-06-07 15:26                           ` Oleg Nesterov
2022-06-07 15:26                           ` Oleg Nesterov
2022-05-18 22:53               ` [PATCH 08/16] ptrace: Only populate last_siginfo from ptrace Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-24 15:27                 ` Oleg Nesterov
2022-05-24 15:27                   ` Oleg Nesterov
2022-05-24 15:27                   ` Oleg Nesterov
2022-06-06 22:16                   ` Eric W. Biederman
2022-06-06 22:16                     ` Eric W. Biederman
2022-06-06 22:16                     ` Eric W. Biederman
2022-06-07 15:29                     ` Oleg Nesterov
2022-06-07 15:29                       ` Oleg Nesterov
2022-06-07 15:29                       ` Oleg Nesterov
2022-05-18 22:53               ` [PATCH 09/16] ptrace: In ptrace_setsiginfo deal with invalid si_signo Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53               ` [PATCH 10/16] ptrace: In ptrace_signal look at what the debugger did with siginfo Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53               ` [PATCH 11/16] ptrace: Use si_sino as the signal number to resume with Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53               ` [PATCH 12/16] ptrace: Stop protecting ptrace_set_signr with tasklist_lock Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53               ` [PATCH 13/16] ptrace: Document why ptrace_setoptions does not need a lock Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53               ` [PATCH 14/16] signal: Protect parent child relationships by childs siglock Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53               ` [PATCH 15/16] ptrace: Use siglock instead of tasklist_lock in ptrace_check_attach Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53               ` [PATCH 16/16] signal: Always call do_notify_parent_cldstop with siglock held Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-18 22:53                 ` Eric W. Biederman
2022-05-20 16:19                 ` kernel test robot
2022-05-20 16:19                   ` kernel test robot
2022-05-20 16:19                   ` kernel test robot
     [not found]               ` <CALWUPBdFDLuT7JaNGSJ_UXbHf8y9uKdC-SkAqzd=FQC0MX4nNQ@mail.gmail.com>
2022-05-19  6:19                 ` [PATCH 00/16] ptrace: cleanups and calling do_cldstop with only siglock Sebastian Andrzej Siewior
2022-05-19  6:19                   ` Sebastian Andrzej Siewior
2022-05-19  6:19                   ` Sebastian Andrzej Siewior
2022-05-19 18:05                   ` Eric W. Biederman
2022-05-19 18:05                     ` Eric W. Biederman
2022-05-19 18:05                     ` Eric W. Biederman
2022-05-20  5:24                     ` Kyle Huey
2022-05-20  5:24                       ` Kyle Huey
2022-05-20  5:24                       ` Kyle Huey
2022-06-06 16:12                       ` Eric W. Biederman
2022-06-06 16:12                         ` Eric W. Biederman
2022-06-09 19:59                         ` Kyle Huey
2022-06-09 19:59                           ` Kyle Huey
2022-06-09 19:59                           ` Kyle Huey
2022-05-20  7:33               ` Sebastian Andrzej Siewior
2022-05-20  7:33                 ` Sebastian Andrzej Siewior
2022-05-20  7:33                 ` Sebastian Andrzej Siewior
2022-05-20 19:32                 ` Eric W. Biederman
2022-05-20 19:32                   ` Eric W. Biederman
2022-05-20 19:32                   ` Eric W. Biederman
2022-05-20 19:58                   ` Peter Zijlstra
2022-05-20 19:58                     ` Peter Zijlstra
2022-05-20 19:58                     ` Peter Zijlstra
2022-05-20  9:19               ` Sebastian Andrzej Siewior
2022-05-20  9:19                 ` Sebastian Andrzej Siewior
2022-05-20  9:19                 ` Sebastian Andrzej Siewior
2022-06-22 16:43             ` [PATCH 0/3] ptrace: Stop supporting SIGKILL for PTRACE_EVENT_EXIT Eric W. Biederman
2022-06-22 16:45               ` [PATCH 1/3] signal: Ensure SIGNAL_GROUP_EXIT gets set in do_group_exit Eric W. Biederman
2022-06-22 16:46               ` [PATCH 2/3] signal: Guarantee that SIGNAL_GROUP_EXIT is set on process exit Eric W. Biederman
2022-06-23  7:49                 ` kernel test robot
2022-06-22 16:47               ` [PATCH 3/3] signal: Drop signals received after a fatal signal has been processed Eric W. Biederman
2022-06-23 15:12               ` [PATCH 0/3] ptrace: Stop supporting SIGKILL for PTRACE_EVENT_EXIT Alexander Gordeev
2022-06-23 21:55                 ` Eric W. Biederman
2022-07-08 22:25               ` Eric W. Biederman
2022-07-08 23:22                 ` Keno Fischer
2022-07-12 20:03                   ` Eric W. Biederman
2022-07-16 21:29                     ` Eric W. Biederman
2022-07-16 23:21                       ` Kyle Huey
2022-04-25 14:35   ` [PATCH v2 2/5] sched,ptrace: Fix ptrace_check_attach() vs PREEMPT_RT Oleg Nesterov
2022-04-25 18:33     ` Peter Zijlstra
2022-04-26  0:38       ` Eric W. Biederman
2022-04-26  5:51         ` Oleg Nesterov
2022-04-26 17:19           ` Eric W. Biederman
2022-04-26 18:11             ` Oleg Nesterov
2022-04-25 17:47   ` Oleg Nesterov
2022-04-27  0:24     ` Eric W. Biederman
2022-04-28 20:29       ` Peter Zijlstra
2022-04-28 20:59         ` Oleg Nesterov
2022-04-28 22:21           ` Peter Zijlstra
2022-04-28 22:50             ` Oleg Nesterov
2022-04-27 15:53   ` Oleg Nesterov
2022-04-27 21:57     ` Eric W. Biederman
2022-04-21 15:02 ` [PATCH v2 3/5] freezer: Have {,un}lock_system_sleep() save/restore flags Peter Zijlstra
2022-04-21 15:02 ` [PATCH v2 4/5] freezer,umh: Clean up freezer/initrd interaction Peter Zijlstra
2022-04-21 15:02 ` [PATCH v2 5/5] freezer,sched: Rewrite core freezer logic Peter Zijlstra
2022-04-21 17:26   ` Eric W. Biederman
2022-04-21 17:57     ` Oleg Nesterov
2022-04-21 19:55     ` Peter Zijlstra
2022-04-21 20:07       ` Peter Zijlstra
2022-04-22 15:52         ` Eric W. Biederman
2022-04-22 17:43 ` [PATCH v2 0/5] ptrace-vs-PREEMPT_RT and freezer rewrite Sebastian Andrzej Siewior
2022-04-22 19:15   ` Eric W. Biederman
2022-04-22 21:13     ` Sebastian Andrzej Siewior

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220504224058.476193-9-ebiederm@xmission.com \
    --to=ebiederm@xmission.com \
    --cc=anton.ivanov@cambridgegreys.com \
    --cc=bigeasy@linutronix.de \
    --cc=chris@zankel.net \
    --cc=dietmar.eggemann@arm.com \
    --cc=jannh@google.com \
    --cc=jcmvbkbc@gmail.com \
    --cc=johannes@sipsolutions.net \
    --cc=keescook@chromium.org \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-um@lists.infradead.org \
    --cc=linux-xtensa@linux-xtensa.org \
    --cc=mgorman@suse.de \
    --cc=mingo@kernel.org \
    --cc=oleg@redhat.com \
    --cc=peterz@infradead.org \
    --cc=richard@nod.at \
    --cc=rjw@rjwysocki.net \
    --cc=rostedt@goodmis.org \
    --cc=tj@kernel.org \
    --cc=vincent.guittot@linaro.org \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.