workqueue: Fixes for v6.6-rc5

* Fix access-after-free in pwq allocation error path.

* Implicitly ordered unbound workqueues should lose the implicit ordering if
  an attribute change which isn't compatible with ordered operation is
  requested. However, attribute changes requested through the sysfs
  interface weren't doing that leaving no way to override the implicit
  ordering through the sysfs interface. Fix it.

* Other doc and misc updates.
workqueue: fix -Wformat-truncation in create_worker

Compiling with W=1 emitted the following warning
(Compiler: gcc (x86-64, ver. 13.2.1, .config: result of make allyesconfig,
"Treat warnings as errors" turned off):

kernel/workqueue.c:2188:54: warning: ‘%d’ directive output may be
	truncated writing between 1 and 10 bytes into a region of size
	between 5 and 14 [-Wformat-truncation=]
kernel/workqueue.c:2188:50: note: directive argument in the range
	[0, 2147483647]
kernel/workqueue.c:2188:17: note: ‘snprintf’ output between 4 and 23 bytes
	into a destination of size 16

setting "id_buf" to size 23 will silence the warning, since GCC
determines snprintf's output to be max. 23 bytes in line 2188.

Please let me know if there are any mistakes in my patch!

Signed-off-by: Lucy Mielke <>
Signed-off-by: Tejun Heo <>
1 file changed