Re: [RFC PATCH(experimental) 2/2] Fix freezer-kthread_stop race

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Andrew Morton <akpm@...>
Cc: <ego@...>, Oleg Nesterov <oleg@...>, <linux-kernel@...>, <mingo@...>, <vatsa@...>, <paulmck@...>, <pavel@...>
Date: Friday, April 20, 2007 - 4:54 am

On Thursday, 19 April 2007 23:31, Andrew Morton wrote:

Yeah, I have the same problem with it. :-)


Hmm, can't we do something like this instead:

---
 kernel/kthread.c |   10 ++++++++++
 1 file changed, 10 insertions(+)

Index: linux-2.6.21-rc7/kernel/kthread.c
===================================================================
--- linux-2.6.21-rc7.orig/kernel/kthread.c
+++ linux-2.6.21-rc7/kernel/kthread.c
@@ -13,6 +13,7 @@
 #include <linux/file.h>
 #include <linux/module.h>
 #include <linux/mutex.h>
+#include <linux/freezer.h>
 #include <asm/semaphore.h>
 
 /*
@@ -232,6 +233,15 @@ int kthread_stop(struct task_struct *k)
 
 	/* Now set kthread_should_stop() to true, and wake it up. */
 	kthread_stop_info.k = k;
+	if (!(current->flags & PF_NOFREEZE)) {
+		/* If we are freezable, the freezer will wait for us */
+		task_lock(k);
+		k->flags |= PF_NOFREEZE;
+		if (frozen(k))
+			k->flags &= ~PF_FROZEN;
+
+		task_unlock(k);
+	}
 	wake_up_process(k);
 	put_task_struct(k);
 
-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[RFC 0/2] Fix Freezer related races., Gautham R Shenoy, (Thu Apr 19, 8:01 am)
[RFC PATCH(experimental) 2/2] Fix freezer-kthread_stop race, Gautham R Shenoy, (Thu Apr 19, 8:04 am)
Re: [RFC PATCH(experimental) 2/2] Fix freezer-kthread_stop r..., Rafael J. Wysocki, (Fri Apr 20, 4:54 am)
Re: [RFC PATCH(experimental) 2/2] Fix freezer-kthread_stop r..., Rafael J. Wysocki, (Fri Apr 20, 5:45 pm)
Re: [RFC PATCH(experimental) 2/2] Fix freezer-kthread_stop r..., Rafael J. Wysocki, (Fri Apr 20, 7:59 am)
[RFC][PATCH -mm 0/3] Separate freezer flags, Rafael J. Wysocki, (Sun Apr 22, 3:28 pm)
[RFC][PATCH -mm 1/3] Separate freezer from PM code, Rafael J. Wysocki, (Sun Apr 22, 3:33 pm)
Re: [RFC][PATCH -mm 1/3] Separate freezer from PM code, Pavel Machek, (Mon Apr 23, 6:41 am)
[RFC][PATCH -mm 2/3] freezer: Introduce freezer_flags, Rafael J. Wysocki, (Sun Apr 22, 3:39 pm)
Re: [RFC][PATCH -mm 2/3] freezer: Introduce freezer_flags, Oleg Nesterov, (Mon Apr 23, 6:23 pm)
Re: [RFC][PATCH -mm 2/3] freezer: Introduce freezer_flags, Rafael J. Wysocki, (Mon Apr 23, 6:40 pm)
Re: [RFC][PATCH -mm 2/3] freezer: Introduce freezer_flags, Oleg Nesterov, (Mon Apr 23, 6:55 pm)
Re: [RFC][PATCH -mm 2/3] freezer: Introduce freezer_flags, Rafael J. Wysocki, (Mon Apr 23, 7:10 pm)
Re: [RFC][PATCH -mm 2/3] freezer: Introduce freezer_flags, Oleg Nesterov, (Mon Apr 23, 7:19 pm)
Re: [RFC][PATCH -mm 2/3] freezer: Introduce freezer_flags, Rafael J. Wysocki, (Tue Apr 24, 7:32 am)
Re: [RFC][PATCH -mm 2/3] freezer: Introduce freezer_flags, Gautham R Shenoy, (Mon Apr 23, 6:41 pm)
Re: [RFC][PATCH -mm 2/3] freezer: Introduce freezer_flags, Rafael J. Wysocki, (Mon Apr 23, 6:55 pm)
Re: [RFC][PATCH -mm 2/3] freezer: Introduce freezer_flags, Gautham R Shenoy, (Mon Apr 23, 9:17 am)
Re: [RFC][PATCH -mm 2/3] freezer: Introduce freezer_flags, Rafael J. Wysocki, (Mon Apr 23, 3:57 pm)
Re: [RFC][PATCH -mm 2/3] freezer: Introduce freezer_flags, Satyam Sharma, (Mon Apr 23, 12:09 am)
Re: [RFC][PATCH -mm 2/3] freezer: Introduce freezer_flags, Rafael J. Wysocki, (Mon Apr 23, 3:06 pm)
Re: [RFC][PATCH -mm 2/3] freezer: Introduce freezer_flags, Gautham R Shenoy, (Mon Apr 23, 10:19 am)
Re: [RFC][PATCH -mm 2/3] freezer: Introduce freezer_flags, Rafael J. Wysocki, (Mon Apr 23, 2:49 pm)
Re: [RFC][PATCH -mm 2/3] freezer: Introduce freezer_flags, Rafael J. Wysocki, (Sun Apr 22, 6:14 pm)
Re: [RFC][PATCH -mm 2/3] freezer: Introduce freezer_flags, Satyam Sharma, (Sun Apr 22, 11:18 pm)
[RFC][PATCH -mm 3/3] freezer: Fix problem with kthread_stop, Rafael J. Wysocki, (Sun Apr 22, 3:40 pm)
Re: [RFC][PATCH -mm 3/3] freezer: Fix problem with kthread_s..., Rafael J. Wysocki, (Mon Apr 23, 3:55 pm)
Re: [RFC][PATCH -mm 3/3] freezer: Fix problem with kthread_s..., Rafael J. Wysocki, (Mon Apr 23, 5:30 pm)
Re: [RFC][PATCH -mm 3/3] freezer: Fix problem with kthread_s..., Rafael J. Wysocki, (Mon Apr 23, 4:05 pm)
Re: [RFC][PATCH -mm 3/3] freezer: Fix problem with kthread_s..., Rafael J. Wysocki, (Mon Apr 23, 3:50 pm)
Re: [RFC PATCH(experimental) 2/2] Fix freezer-kthread_stop r..., Rafael J. Wysocki, (Fri Apr 20, 5:13 pm)
Re: [RFC PATCH(experimental) 2/2] Fix freezer-kthread_stop r..., Rafael J. Wysocki, (Fri Apr 20, 8:50 am)
[RFC PATCH 1/2] Fix PF_NOFREEZE and freezeable race, Gautham R Shenoy, (Thu Apr 19, 8:02 am)
Re: [RFC PATCH 1/2] Fix PF_NOFREEZE and freezeable race, Rafael J. Wysocki, (Thu Apr 19, 5:39 pm)
Re: [RFC PATCH 1/2] Fix PF_NOFREEZE and freezeable race, Oleg Nesterov, (Fri Apr 20, 2:02 pm)
Re: [RFC PATCH 1/2] Fix PF_NOFREEZE and freezeable race, Gautham R Shenoy, (Mon Apr 23, 6:26 am)
Re: [RFC PATCH 1/2] Fix PF_NOFREEZE and freezeable race, Oleg Nesterov, (Mon Apr 23, 1:49 pm)