Commit 2e14a7d8 authored by Lai Jiangshan's avatar Lai Jiangshan Committed by Zeng Heng
Browse files

workqueue: Change the code of calculating work_flags in insert_wq_barrier()

mainline inclusion
from mainline-v5.15-rc1
commit d21cece0
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I7LRJF

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d21cece0dbb424ad3ff9e49bde6954632b8efede



---------------------------

Add a local var @work_flags to calculate work_flags step by step, so that
we don't need to squeeze several flags in only the last line of code.

Parepare for next patch to add a bit to barrier work item's flag.  Not
squshing this to next patch makes it clear that what it will have changed.

No functional change intended.

Signed-off-by: default avatarLai Jiangshan <laijs@linux.alibaba.com>
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
Signed-off-by: default avatarZeng Heng <zengheng4@huawei.com>
parent 3931ec21
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -2664,8 +2664,8 @@ static void insert_wq_barrier(struct pool_workqueue *pwq,
			      struct wq_barrier *barr,
			      struct work_struct *target, struct worker *worker)
{
	unsigned int work_flags = work_color_to_flags(WORK_NO_COLOR);
	struct list_head *head;
	unsigned int linked = 0;

	/*
	 * debugobject calls are safe here even with pool->lock locked
@@ -2691,13 +2691,12 @@ static void insert_wq_barrier(struct pool_workqueue *pwq,

		head = target->entry.next;
		/* there can already be other linked works, inherit and set */
		linked = *bits & WORK_STRUCT_LINKED;
		work_flags |= *bits & WORK_STRUCT_LINKED;
		__set_bit(WORK_STRUCT_LINKED_BIT, bits);
	}

	debug_work_activate(&barr->work);
	insert_work(pwq, &barr->work, head,
		    work_color_to_flags(WORK_NO_COLOR) | linked);
	insert_work(pwq, &barr->work, head, work_flags);
}

/**