Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e716dd36 authored by David Woodhouse's avatar David Woodhouse
Browse files

[JFFS2] Fix suspend failure with JFFS2 GC thread.



The try_to_freeze() call was in the wrong place; we need it in the
signal-pending loop now that a pending freeze also makes
signal_pending() return true.

Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
parent 66bfaeaa
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -83,7 +83,7 @@ static int jffs2_garbage_collect_thread(void *_c)

	for (;;) {
		allow_signal(SIGHUP);

	again:
		if (!jffs2_thread_should_wake(c)) {
			set_current_state (TASK_INTERRUPTIBLE);
			D1(printk(KERN_DEBUG "jffs2_garbage_collect_thread sleeping...\n"));
@@ -94,9 +94,6 @@ static int jffs2_garbage_collect_thread(void *_c)
			schedule();
		}

		if (try_to_freeze())
			continue;

		/* This thread is purely an optimisation. But if it runs when
		   other things could be running, it actually makes things a
		   lot worse. Use yield() and put it at the back of the runqueue
@@ -111,6 +108,9 @@ static int jffs2_garbage_collect_thread(void *_c)
			siginfo_t info;
			unsigned long signr;

			if (try_to_freeze())
				goto again;

			signr = dequeue_signal_lock(current, &current->blocked, &info);

			switch(signr) {