[PATCH 2/2] Freezer: Fix JFFS2 garbage collector freezing issue

Rafael J. Wysocki
2007-12-03T16:45:50Z

From: Rafael J. Wysocki <rjw@sisk.pl>

Fix breakage caused by commit d5d8c5976d6adeddb8208c240460411e2198b393
"freezer: do not send signals to kernel threads" in
jffs2_garbage_collect_thread() that assumed it would be sent signals
by the freezer.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Cc: Pete MacKay <armlinux@architechnical.net>
Cc: Andrew Morton <akpm@linux-foundation.org>
---
fs/jffs2/background.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)

Index: linux-2.6/fs/jffs2/background.c
===================================================================
--- linux-2.6.orig/fs/jffs2/background.c
+++ linux-2.6/fs/jffs2/background.c
@@ -103,15 +103,17 @@ static int jffs2_garbage_collect_thread(
get there first. */
yield();

+ /* If system suspend is in progress, go to the refrigerator and
+ start again when the suspend is done */
+ if (try_to_freeze())
+ goto again;
+
/* Put_super will send a SIGKILL and then wait on the sem.
*/
while (signal_pending(current)) {
siginfo_t info;
unsigned long signr;

- if (try_to_freeze())
- goto again;
-
signr = dequeue_signal_lock(current, &current->blocked, &info);

switch(signr) {