From: Tejun Heo Date: Fri, 20 Sep 2019 21:09:14 +0000 (-0700) Subject: workqueue: Minor follow-ups to the rescuer destruction change X-Git-Tag: v5.5-rc1~179^2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=30ae2fc0a75eb5f1a38bbee7355d8e3bc823a6e1;p=thirdparty%2Fkernel%2Flinux.git workqueue: Minor follow-ups to the rescuer destruction change * Now that wq->rescuer may be cleared while rescuer is still there, switch show_pwq() debug printout to test worker->rescue_wq to identify rescuers intead of testing wq->rescuer. * Update comment on ->rescuer locking. Signed-off-by: Tejun Heo Suggested-by: Lai Jiangshan --- diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 3f067f1d72e30..7f7aa45dac377 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -248,7 +248,7 @@ struct workqueue_struct { struct list_head flusher_overflow; /* WQ: flush overflow list */ struct list_head maydays; /* MD: pwqs requesting rescue */ - struct worker *rescuer; /* I: rescue worker */ + struct worker *rescuer; /* MD: rescue worker */ int nr_drainers; /* WQ: drain in progress */ int saved_max_active; /* WQ: saved pwq max_active */ @@ -4672,7 +4672,7 @@ static void show_pwq(struct pool_workqueue *pwq) pr_cont("%s %d%s:%ps", comma ? "," : "", task_pid_nr(worker->task), - worker == pwq->wq->rescuer ? "(RESCUER)" : "", + worker->rescue_wq ? "(RESCUER)" : "", worker->current_func); list_for_each_entry(work, &worker->scheduled, entry) pr_cont_work(false, work);