mlx4_en: Fix a race at restart task
[linux-2.6] / fs / btrfs / async-thread.c
index c84ca1f..51bfdfc 100644 (file)
@@ -20,7 +20,6 @@
 #include <linux/list.h>
 #include <linux/spinlock.h>
 #include <linux/freezer.h>
-#include <linux/ftrace.h>
 #include "async-thread.h"
 
 #define WORK_QUEUED_BIT 0
@@ -195,6 +194,9 @@ again_locked:
                                if (!list_empty(&worker->pending))
                                        continue;
 
+                               if (kthread_should_stop())
+                                       break;
+
                                /* still no more work?, sleep for real */
                                spin_lock_irq(&worker->lock);
                                set_current_state(TASK_INTERRUPTIBLE);
@@ -208,7 +210,8 @@ again_locked:
                                worker->working = 0;
                                spin_unlock_irq(&worker->lock);
 
-                               schedule();
+                               if (!kthread_should_stop())
+                                       schedule();
                        }
                        __set_current_state(TASK_RUNNING);
                }