Messages in this thread | | | From | Chris Wilson <> | Subject | Re: [PATCH] irq_work: Don't reinvent the wheel but use existing llist API | Date | Fri, 10 Nov 2017 00:17:53 +0000 |
| |
Quoting Frederic Weisbecker (2017-10-31 01:46:54) > From: Byungchul Park <byungchul.park@lge.com> > > Although llist provides proper APIs, they are not used. Make them used. > > Signed-off-by: Byungchul Park <byungchul.park@lge.com> > Cc: Peter Zijlstra <peterz@infradead.org> > Signed-off-by: Frederic Weisbecker <frederic@kernel.org> > --- > kernel/irq_work.c | 6 +----- > 1 file changed, 1 insertion(+), 5 deletions(-) > > diff --git a/kernel/irq_work.c b/kernel/irq_work.c > index bcf107c..e2ebe8c 100644 > --- a/kernel/irq_work.c > +++ b/kernel/irq_work.c > @@ -138,11 +138,7 @@ static void irq_work_run_list(struct llist_head *list) > return; > > llnode = llist_del_all(list); > - while (llnode != NULL) { > - work = llist_entry(llnode, struct irq_work, llnode); > - > - llnode = llist_next(llnode); > - > + llist_for_each_entry(work, llnode, llnode) { > /* > * Clear the PENDING bit, after this point the @work > * can be re-used.
I haven't seen this reported yet, but this requires llist_for_each_entry_safe() because as mentioned work can be linked into another cpu's runlist after the PENDING bit is cleared. -Chris
| |