From: Jens Axboe <axboe@kernel.dk>
To: Vasileios Almpanis <vasilisalmpanis@gmail.com>
Cc: io-uring@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] io_uring/nop: fix file reference leak with IOSQE_FIXED_FILE
Date: Mon, 15 Jun 2026 10:09:12 -0600 [thread overview]
Message-ID: <8c1ca105-e27e-4b84-a7c8-f928c05ac7f2@kernel.dk> (raw)
In-Reply-To: <20260615144619.482749-1-vasilisalmpanis@gmail.com>
On 6/15/26 8:45 AM, Vasileios Almpanis wrote:
> NOP file-acquisition support choses between a fixed (registered) file and
> a normal fget()'d file based on its own IORING_NOP_FIXED_FILE flag in
> sqe->nop_flags. However, a request's REQ_F_FIXED_FILE is set
> independently from the generic IOSQE_FIXED_FILE sqe flag during request
> init, before the issue handler runs.
>
> If a NOP is submitted with IOSQE_FIXED_FILE set (so REQ_F_FIXED_FILE is
> set) but without IORING_NOP_FIXED_FILE, io_nop() takes the normal path
> and grabs a real reference via io_file_get_normal(). On completion,
> io_put_file() only drops the reference when REQ_F_FIXED_FILE is clear,
> so the fget()'d file is never released and leaks:
>
> BUG: memory leak
> unreferenced object 0xffff88800f42c240 (size 176):
> kmem_cache_alloc_noprof+0x358/0x440
> alloc_empty_file+0x57/0x180
> path_openat+0x44/0x1e50
> do_file_open+0x121/0x200
> do_sys_openat2+0xa7/0x150
> __x64_sys_openat+0x82/0xf0
>
> Decide between fixed and normal file acquisition from REQ_F_FIXED_FILE,
> the same way io_assign_file() does for every other opcode, and fold
> IORING_NOP_FIXED_FILE into REQ_F_FIXED_FILE at prep time.
Fix looks good to me! I've written a test case for this as well, it's
in liburing.
--
Jens Axboe
next prev parent reply other threads:[~2026-06-15 16:09 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-15 14:45 Vasileios Almpanis
2026-06-15 16:08 ` Jens Axboe
2026-06-15 16:09 ` Jens Axboe [this message]
2026-06-15 16:11 ` Jens Axboe
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=8c1ca105-e27e-4b84-a7c8-f928c05ac7f2@kernel.dk \
--to=axboe@kernel.dk \
--cc=io-uring@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=vasilisalmpanis@gmail.com \
/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®