diff options
author | Richard Clark <richard.xnu.clark@gmail.com> | 2022-12-13 12:39:36 +0800 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2023-01-04 12:25:29 -1000 |
commit | 33e3f0a3358b8f9bb54b2661b9c1d37a75664c79 (patch) | |
tree | a8e81fcbbdf813c1322c8c8b7156ac9e52650da5 /include/linux/workqueue.h | |
parent | 512dee0c00ad9e9c7ae9f11fc6743702ea40caff (diff) | |
download | lwn-33e3f0a3358b8f9bb54b2661b9c1d37a75664c79.tar.gz lwn-33e3f0a3358b8f9bb54b2661b9c1d37a75664c79.zip |
workqueue: Add a new flag to spot the potential UAF error
Currently if the user queues a new work item unintentionally
into a wq after the destroy_workqueue(wq), the work still can
be queued and scheduled without any noticeable kernel message
before the end of a RCU grace period.
As a debug-aid facility, this commit adds a new flag
__WQ_DESTROYING to spot that issue by triggering a kernel WARN
message.
Signed-off-by: Richard Clark <richard.xnu.clark@gmail.com>
Reviewed-by: Lai Jiangshan <jiangshanlai@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'include/linux/workqueue.h')
-rw-r--r-- | include/linux/workqueue.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h index a0143dd24430..ac551b8ee7d9 100644 --- a/include/linux/workqueue.h +++ b/include/linux/workqueue.h @@ -335,6 +335,7 @@ enum { */ WQ_POWER_EFFICIENT = 1 << 7, + __WQ_DESTROYING = 1 << 15, /* internal: workqueue is destroying */ __WQ_DRAINING = 1 << 16, /* internal: workqueue is draining */ __WQ_ORDERED = 1 << 17, /* internal: workqueue is ordered */ __WQ_LEGACY = 1 << 18, /* internal: create*_workqueue() */ |