From: zijun_hu <zijun...@htc.com> type bool is used to index three arrays in alloc_and_link_pwqs() it doesn't look like conventional.
it is fixed by using type int to index the relevant arrays. Signed-off-by: zijun_hu <zijun...@htc.com> --- kernel/workqueue.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/kernel/workqueue.c b/kernel/workqueue.c index ab3c0dc8c7ed..0c7a16792949 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -3917,7 +3917,7 @@ static void wq_update_unbound_numa(struct workqueue_struct *wq, int cpu, static int alloc_and_link_pwqs(struct workqueue_struct *wq) { - bool highpri = wq->flags & WQ_HIGHPRI; + int pool_idx = (wq->flags & WQ_HIGHPRI) ? 1 : 0; int cpu, ret; if (!(wq->flags & WQ_UNBOUND)) { @@ -3931,7 +3931,7 @@ static int alloc_and_link_pwqs(struct workqueue_struct *wq) struct worker_pool *cpu_pools = per_cpu(cpu_worker_pools, cpu); - init_pwq(pwq, wq, &cpu_pools[highpri]); + init_pwq(pwq, wq, &cpu_pools[pool_idx]); mutex_lock(&wq->mutex); link_pwq(pwq); @@ -3939,14 +3939,15 @@ static int alloc_and_link_pwqs(struct workqueue_struct *wq) } return 0; } else if (wq->flags & __WQ_ORDERED) { - ret = apply_workqueue_attrs(wq, ordered_wq_attrs[highpri]); + ret = apply_workqueue_attrs(wq, ordered_wq_attrs[pool_idx]); /* there should only be single pwq for ordering guarantee */ WARN(!ret && (wq->pwqs.next != &wq->dfl_pwq->pwqs_node || wq->pwqs.prev != &wq->dfl_pwq->pwqs_node), "ordering guarantee broken for workqueue %s\n", wq->name); return ret; } else { - return apply_workqueue_attrs(wq, unbound_std_wq_attrs[highpri]); + return apply_workqueue_attrs(wq, + unbound_std_wq_attrs[pool_idx]); } } -- 1.9.1