Re: [syzbot] [input?] possible deadlock in tasklet_action_common (2)
From: Hillf Danton
Date: Sat Jul 25 2026 - 22:11:08 EST
> Date: Sat, 25 Jul 2026 17:38:28 -0700 [thread overview]
> syzbot has found a reproducer for the following issue on:
>
> HEAD commit: cc2b5f627e8c Add linux-next specific files for 20260714
> git tree: linux-next
> console output: https://syzkaller.appspot.com/x/log.txt?x=13d446b9580000
> kernel config: https://syzkaller.appspot.com/x/.config?x=2290ccbf984c524f
> dashboard link: https://syzkaller.appspot.com/bug?extid=b5d7ab56d43de3fd5aac
> compiler: Debian clang version 22.1.8 (++20260613092233+e80beda6e255-1~exp1~20260613092250.77), Debian LLD 22.1.8
> syz repro: https://syzkaller.appspot.com/x/repro.syz?x=1310a232580000
> C reproducer: https://syzkaller.appspot.com/x/repro.c?x=13c3b2ea580000
#syz test
--- x/kernel/softirq.c
+++ y/kernel/softirq.c
@@ -924,7 +924,6 @@ static void tasklet_action_common(struct
tl_head->tail = &tl_head->head;
local_irq_enable();
- tasklet_lock_callback();
while (list) {
struct tasklet_struct *t = list;
@@ -944,7 +943,6 @@ static void tasklet_action_common(struct
}
}
tasklet_unlock(t);
- tasklet_callback_sync_wait_running();
continue;
}
tasklet_unlock(t);
@@ -957,7 +955,6 @@ static void tasklet_action_common(struct
__raise_softirq_irqoff(softirq_nr);
local_irq_enable();
}
- tasklet_unlock_callback();
}
static __latent_entropy void tasklet_action(void)
@@ -1006,11 +1003,10 @@ void tasklet_unlock_spin_wait(struct tas
while (test_bit(TASKLET_STATE_RUN, &(t)->state)) {
if (IS_ENABLED(CONFIG_PREEMPT_RT)) {
/*
- * Prevent a live lock when current preempted soft
- * interrupt processing or prevents ksoftirqd from
- * running.
+ * wait_on_bit(TASKLET_STATE_RUN)
+ * https://lore.kernel.org/lkml/20260524004526.1046-1-hdanton@xxxxxxxx/
*/
- tasklet_callback_cancel_wait_running();
+ tasklet_unlock_wait(t);
} else {
cpu_relax();
}
--