[PATCH 1/6] utrace_report_jctl: do not play with the group-stop state

Oleg Nesterov oleg at redhat.com
Fri Jul 31 01:06:46 UTC 2009


(depends on
 signals-tracehook_notify_jctl-change-do_signal_stop-do-not-call-tracehook_notify_jctl-in-task_stopped-state.patch)

Now that do_signal_stop() calls tracehook_notify_jctl() in TASK_RUNNING
we can simplify utrace_report_jctl(), task_is_stopped() case is not
possible.

Signed-off-by: Oleg Nesterov <oleg at redhat.com>
----

 kernel/utrace.c |   20 --------------------
 1 file changed, 20 deletions(-)

--- __UTRACE/kernel/utrace.c~1_REPORT_JCTL	2009-07-29 03:11:19.000000000 +0200
+++ __UTRACE/kernel/utrace.c	2009-07-31 01:54:29.000000000 +0200
@@ -1607,18 +1607,7 @@ void utrace_report_jctl(int notify, int 
 	struct task_struct *task = current;
 	struct utrace *utrace = task_utrace_struct(task);
 	INIT_REPORT(report);
-	bool stop = task_is_stopped(task);
 
-	/*
-	 * We have to come out of TASK_STOPPED in case the event report
-	 * hooks might block.  Since we held the siglock throughout, it's
-	 * as if we were never in TASK_STOPPED yet at all.
-	 */
-	if (stop) {
-		__set_current_state(TASK_RUNNING);
-		task->signal->flags &= ~SIGNAL_STOP_STOPPED;
-		++task->signal->group_stop_count;
-	}
 	spin_unlock_irq(&task->sighand->siglock);
 
 	/*
@@ -1647,16 +1636,7 @@ void utrace_report_jctl(int notify, int 
 	REPORT(task, utrace, &report, UTRACE_EVENT(JCTL),
 	       report_jctl, what, notify);
 
-	/*
-	 * Retake the lock, and go back into TASK_STOPPED
-	 * unless the stop was just cleared.
-	 */
 	spin_lock_irq(&task->sighand->siglock);
-	if (stop && task->signal->group_stop_count > 0) {
-		__set_current_state(TASK_STOPPED);
-		if (--task->signal->group_stop_count == 0)
-			task->signal->flags |= SIGNAL_STOP_STOPPED;
-	}
 }
 
 /*




More information about the utrace-devel mailing list