On Tue, Sep 15, 2026 at 9:02 AM Linus Torvalds
[off-list ref] wrote:
On Tue, 15 Sept 2026 at 04:31, Christian Brauner [off-list ref] wrote:
quoted
TL;DR, this lets arch code handle fd install and cleanup. fd_prepare()
allocates a descriptor like get_unused_fd_flags() does and records it in
a slot on the task. fd_stage() attaches the file to that slot and
returns the number.
Honestly, I am *not* a fan. At all.
I think this adds complexity rather than removing it.
The diffstat tells a story:
quoted
106 files changed, 962 insertions(+), 861 deletions(-)
in how this adds a hundred lines more than it deletes.
But to make things worse, it adds them in bad places: low-level
architecture assembly code.
Those extra lines are *not* making complicated code simpler. Quite the
reverse. They are taking fairly straightforward "just deal with errors
with normal cleanup in the place where it makes sense" and makes the
*straightforward* case simpler, while making the big picture more
complicated and subtle, and adding new code to places that are not
simple and just blindly do somethign that makes no sense in that
context.
With fd's it is more than just about error rollback.. exposing an fd
to userspace mid-way thru an ioctl is an easy security bug to write..
OTOH, "just use FD_PREPARE() / fd_publish()"..
BR,
-R