Merge branch 'for-4.14-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq

Pull workqueue fix from Tejun Heo:
 "Another fix for a really old bug.

  It only affects drain_workqueue() which isn't used often and even then
  triggers only during a pretty small race window, so it isn't too
  surprising that it stayed hidden for so long.

  The fix is straight-forward and low-risk. Kudos to Li Bin for
  reporting and fixing the bug"

* 'for-4.14-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
  workqueue: Fix NULL pointer dereference
This commit is contained in:
Linus Torvalds 2017-11-06 12:26:49 -08:00
commit e4880bc5df
1 changed files with 2 additions and 1 deletions

View File

@ -10,6 +10,7 @@
#include <linux/workqueue.h> #include <linux/workqueue.h>
#include <linux/kthread.h> #include <linux/kthread.h>
#include <linux/preempt.h>
struct worker_pool; struct worker_pool;
@ -60,7 +61,7 @@ struct worker {
*/ */
static inline struct worker *current_wq_worker(void) 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 kthread_data(current);
return NULL; return NULL;
} }