mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-15 02:05:33 +00:00
workqueue: Fixes for v6.13-rc6
- Add a WARN_ON_ONCE() on queue_delayed_work_on() on an offline CPU as such work items won't get executed till the CPU comes back online. -----BEGIN PGP SIGNATURE----- iIQEABYKACwWIQTfIjM1kS57o3GsC/uxYfJx3gVYGQUCZ4Gjlw4cdGpAa2VybmVs Lm9yZwAKCRCxYfJx3gVYGTNSAQDX7+9ODdDXHEUnViU4QCK6EAsKmp+PHlZLo/0K PVm4SQD/QtPj3jwyEhhdRlaL0+IbTyfG3rURxv53XUGl+TJ1qA8= =SYtY -----END PGP SIGNATURE----- Merge tag 'wq-for-6.13-rc6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq Pull workqueue fix from Tejun Heo: - Add a WARN_ON_ONCE() on queue_delayed_work_on() on an offline CPU as such work items won't get executed till the CPU comes back online * tag 'wq-for-6.13-rc6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq: workqueue: warn if delayed_work is queued to an offlined cpu.
This commit is contained in:
commit
257a8be4e9
@ -2508,6 +2508,7 @@ static void __queue_delayed_work(int cpu, struct workqueue_struct *wq,
|
||||
return;
|
||||
}
|
||||
|
||||
WARN_ON_ONCE(cpu != WORK_CPU_UNBOUND && !cpu_online(cpu));
|
||||
dwork->wq = wq;
|
||||
dwork->cpu = cpu;
|
||||
timer->expires = jiffies + delay;
|
||||
@ -2533,6 +2534,12 @@ static void __queue_delayed_work(int cpu, struct workqueue_struct *wq,
|
||||
* @dwork: work to queue
|
||||
* @delay: number of jiffies to wait before queueing
|
||||
*
|
||||
* We queue the delayed_work to a specific CPU, for non-zero delays the
|
||||
* caller must ensure it is online and can't go away. Callers that fail
|
||||
* to ensure this, may get @dwork->timer queued to an offlined CPU and
|
||||
* this will prevent queueing of @dwork->work unless the offlined CPU
|
||||
* becomes online again.
|
||||
*
|
||||
* Return: %false if @work was already on a queue, %true otherwise. If
|
||||
* @delay is zero and @dwork is idle, it will be scheduled for immediate
|
||||
* execution.
|
||||
|
Loading…
x
Reference in New Issue
Block a user