[PATCH 2/3] utrace_control: don't mark_engine_detached() before engine_wants_stop()

Oleg Nesterov oleg at redhat.com
Tue Sep 1 18:22:44 UTC 2009


mark_engine_detached() removes ENGINE_STOP from engine->flags, this means
utrace_control(UTRACE_DETACH) can never seer engine_wants_stop() == T.

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

 kernel/utrace.c |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

--- __UTRACE/kernel/utrace.c~1_FIX_DETACH_BEFORE_WANT_STOP	2009-09-01 20:02:26.000000000 +0200
+++ __UTRACE/kernel/utrace.c	2009-09-01 20:03:25.000000000 +0200
@@ -1086,7 +1086,6 @@ int utrace_control(struct task_struct *t
 		break;
 
 	case UTRACE_DETACH:
-		mark_engine_detached(engine);
 		reset = reset || utrace_do_stop(target, utrace);
 		if (!reset) {
 			/*
@@ -1106,9 +1105,9 @@ int utrace_control(struct task_struct *t
 			 * We need utrace_reset() to check if anyone else
 			 * still wants this target to stay stopped.
 			 */
-			clear_engine_wants_stop(engine);
 			reset = true;
 		}
+		mark_engine_detached(engine);
 		break;
 
 	case UTRACE_RESUME:




More information about the utrace-devel mailing list