Skip to content

Commit af3852c

Browse files
Tetsuo Handaherbertx
authored andcommitted
padata: remove __padata_list_init()
syzbot is reporting possibility of deadlock due to sharing lock_class_key between padata_init_squeues() and padata_init_reorder_list(). This is a false positive, for these callers initialize different object. Unshare lock_class_key by embedding __padata_list_init() into these callers. Reported-by: syzbot+bd936ccd4339cea66e6b@syzkaller.appspotmail.com Closes: https://syzkaller.appspot.com/bug?extid=bd936ccd4339cea66e6b Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
1 parent 06c489c commit af3852c

1 file changed

Lines changed: 4 additions & 8 deletions

File tree

kernel/padata.c

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -506,12 +506,6 @@ void __init padata_do_multithreaded(struct padata_mt_job *job)
506506
padata_works_free(&works);
507507
}
508508

509-
static void __padata_list_init(struct padata_list *pd_list)
510-
{
511-
INIT_LIST_HEAD(&pd_list->list);
512-
spin_lock_init(&pd_list->lock);
513-
}
514-
515509
/* Initialize all percpu queues used by serial workers */
516510
static void padata_init_squeues(struct parallel_data *pd)
517511
{
@@ -521,7 +515,8 @@ static void padata_init_squeues(struct parallel_data *pd)
521515
for_each_cpu(cpu, pd->cpumask.cbcpu) {
522516
squeue = per_cpu_ptr(pd->squeue, cpu);
523517
squeue->pd = pd;
524-
__padata_list_init(&squeue->serial);
518+
INIT_LIST_HEAD(&squeue->serial.list);
519+
spin_lock_init(&squeue->serial.lock);
525520
INIT_WORK(&squeue->work, padata_serial_worker);
526521
}
527522
}
@@ -534,7 +529,8 @@ static void padata_init_reorder_list(struct parallel_data *pd)
534529

535530
for_each_cpu(cpu, pd->cpumask.pcpu) {
536531
list = per_cpu_ptr(pd->reorder_list, cpu);
537-
__padata_list_init(list);
532+
INIT_LIST_HEAD(&list->list);
533+
spin_lock_init(&list->lock);
538534
}
539535
}
540536

0 commit comments

Comments
 (0)