diff --git a/kernel/workqueue_internal.h b/kernel/workqueue_internal.h index efdd72e15794eb2fca6afbbe28612d1fdd3288d6..d390d1be37489f37bd8ac42826a12782a4ca99dc 100644 --- a/kernel/workqueue_internal.h +++ b/kernel/workqueue_internal.h @@ -10,6 +10,7 @@ #include <linux/workqueue.h> #include <linux/kthread.h> +#include <linux/preempt.h> struct worker_pool; @@ -60,7 +61,7 @@ struct worker { */ static inline struct worker *current_wq_worker(void) { - if (current->flags & PF_WQ_WORKER) + if (in_task() && (current->flags & PF_WQ_WORKER)) return kthread_data(current); return NULL; }