Re: [PATCH] KEYS: dispatch key_gc_work to system_wq.
From: Jarkko Sakkinen
Date: Mon Oct 26 2026 - 13:02:37 EST
On Mon, Oct 26, 2026 at 05:56:05PM +0800, Hillf Danton wrote:
> On Mon, 26 Oct 2026 05:12:18 +0200 Jarkko Sakkinen wrote:
> > schedule_work() dispatches key_gc_work on the per-CPU system_wq, which can
> > choke the queue:
> >
> > BUG: workqueue lockup - pool cpus=0 node=0 flags=0x2 nice=0 stuck for 30s!
> >
> > Queue the work on system_dfl_long_wq instead, which is an unbounded wq for
> > long-running tasks i.e., it has the WQ_BOUND flag set and thus cannot hog
> > the CPU core.
> >
> Nope there is no cpu hog at all given cond_resched().
I used wrong term, and it is good that you nitpicked that.
What about workqueue lockup, which I pointed out from transcript?
This does not help.
> Take a break instead then the workqueue has a chance for housekeeping.
>
> --- x/security/keys/gc.c
> +++ y/security/keys/gc.c
> @@ -270,9 +270,8 @@ contended:
>
> maybe_resched:
> if (cursor) {
> - cond_resched();
> - spin_lock(&key_serial_lock);
> - goto continue_scanning;
> + schedule_work(&key_gc_work);
> + return;
> }
>
> /* We've completed the pass. Set the timer if we need to and queue a
> --
Br, Jarkko