[JFFS2] Fix cleanup in case of GC-Task not started
authorThomas Gleixner <tglx@linutronix.de>
Fri, 20 May 2005 21:37:15 +0000 (22:37 +0100)
committerThomas Gleixner <tglx@mtd.linutronix.de>
Mon, 23 May 2005 11:48:38 +0000 (13:48 +0200)
Do not call wait_for_completion, when the gc task is not there.
Prevent an oops when the gc thread was not started.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
fs/jffs2/background.c

index 5548749bacb6741c4bb8aee6417b284b8b61bf7d..65119d72cce0285cba5f7d147a3b37799e4db8aa 100644 (file)
@@ -7,7 +7,7 @@
  *
  * For licensing information, see the file 'LICENCE' in this directory.
  *
- * $Id: background.c,v 1.52 2005/05/19 16:18:08 gleixner Exp $
+ * $Id: background.c,v 1.54 2005/05/20 21:37:12 gleixner Exp $
  *
  */
 
@@ -56,13 +56,16 @@ int jffs2_start_garbage_collect_thread(struct jffs2_sb_info *c)
 
 void jffs2_stop_garbage_collect_thread(struct jffs2_sb_info *c)
 {
+       int wait = 0;
        spin_lock(&c->erase_completion_lock);
        if (c->gc_task) {
                D1(printk(KERN_DEBUG "jffs2: Killing GC task %d\n", c->gc_task->pid));
                send_sig(SIGKILL, c->gc_task, 1);
+               wait = 1;
        }
        spin_unlock(&c->erase_completion_lock);
-       wait_for_completion(&c->gc_thread_exit);
+       if (wait)
+               wait_for_completion(&c->gc_thread_exit);
 }
 
 static int jffs2_garbage_collect_thread(void *_c)