From: Tejun Heo <tj@kernel.org>
To: Alice Ryhl <aliceryhl@google.com>
Cc: "Danilo Krummrich" <dakr@kernel.org>,
"Miguel Ojeda" <ojeda@kernel.org>,
"Lai Jiangshan" <jiangshanlai@gmail.com>,
"Boqun Feng" <boqun.feng@gmail.com>,
"Gary Guo" <gary@garyguo.net>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Benno Lossin" <benno.lossin@proton.me>,
"Andreas Hindborg" <a.hindborg@kernel.org>,
"Trevor Gross" <tmgross@umich.edu>,
"Daniel Almeida" <daniel.almeida@collabora.com>,
"Tamir Duberstein" <tamird@gmail.com>,
rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] workqueue: rust: add creation of workqueues
Date: Wed, 16 Apr 2025 09:53:37 -1000 [thread overview]
Message-ID: <aAAKwTj9egoFdq6G@slm.duckdns.org> (raw)
In-Reply-To: <Z_-f7Bgjw35iXkui@google.com>
Hello,
On Wed, Apr 16, 2025 at 12:17:48PM +0000, Alice Ryhl wrote:
...
> It looks like panthor handles this by only having a single delayed work
> item on each queue and using cancel_delayed_work_sync before calling
> destroy_workqueue.
That sounds a bit too restrictive.
> Tejun, what do you suggest? The goal of the Rust API is to make it
> impossible to accidentally trigger a UAF, so we need to design the API
> to prevent this mistake.
This is a hole in the C API, which isn't great but also not the end of the
world in C. I think it'd be best to solve this from C side rather than
working around it from rust side. e.g.:
- Have per-cpu list_head per workqueue (or system-wide).
- When queueing a delayed_work on timer, add the work item to the cpu's
per-cpu list. This shouldn't need adding more fields to delayed_work given
that the work part isn't being used yet. Also need to record the cpu.
- When timer expires, unlink from the per-cpu list and then do the normal
queueing. This wil happen on the same cpu in most cases.
- Flush the lists from drain/destroy_workqueue(). If using system-wide
per-cpu lists, we'd have to scan the lists and match the target wq.
This should be pretty cheap and we can probably enable this for everyone,
but if the overhead is noticeable, this can be an optional behavior
depending on a workqueue flag.
Thanks.
--
tejun
next prev parent reply other threads:[~2025-04-16 19:53 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-11 15:34 Alice Ryhl
2025-04-14 17:23 ` Tejun Heo
2025-04-15 9:05 ` Alice Ryhl
2025-04-15 17:03 ` Tejun Heo
2025-04-14 18:15 ` Danilo Krummrich
2025-04-15 9:01 ` Alice Ryhl
2025-04-15 10:48 ` Danilo Krummrich
2025-04-16 12:17 ` Alice Ryhl
2025-04-16 19:41 ` Alice Ryhl
2025-04-16 19:57 ` Tejun Heo
2025-04-17 7:22 ` Philipp Stanner
2025-04-17 7:28 ` Tejun Heo
2025-04-17 20:26 ` Alice Ryhl
2025-04-17 20:36 ` Danilo Krummrich
2025-04-17 20:39 ` Tejun Heo
2025-04-16 19:53 ` Tejun Heo [this message]
2025-04-16 20:08 ` Alice Ryhl
2025-04-16 20:10 ` Tejun Heo
2025-04-16 20:12 ` Alice Ryhl
2025-04-16 20:14 ` Tejun Heo
2025-04-16 20:18 ` Alice Ryhl
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aAAKwTj9egoFdq6G@slm.duckdns.org \
--to=tj@kernel.org \
--cc=a.hindborg@kernel.org \
--cc=aliceryhl@google.com \
--cc=benno.lossin@proton.me \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=dakr@kernel.org \
--cc=daniel.almeida@collabora.com \
--cc=gary@garyguo.net \
--cc=jiangshanlai@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=ojeda@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=tamird@gmail.com \
--cc=tmgross@umich.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®