* [PATCH v2] io_uring/napi: clean up list traversal with list_for_each_entry_safe()
@ 2026-10-29 14:47 Anvik Loitongbam
2026-10-29 15:34 ` Jens Axboe
0 siblings, 1 reply; 2+ messages in thread
From: Anvik Loitongbam @ 2026-10-29 14:47 UTC (permalink / raw)
To: Jens Axboe
Cc: Pavel Begunkov, Olivier Langlois, Sebastian Andrzej Siewior,
io-uring, linux-kernel, Anvik Loitongbam
Switch both loops to the standard list_for_each_entry_safe() pattern and
remove the explanatory comment.
Signed-off-by: Anvik Loitongbam <permissiontogallop@gmail.com>
---
v2:
- Resend as a cleanup rather than a PREEMPT_RT UAF fix.
io_uring/napi.c | 14 ++++----------
1 file changed, 4 insertions(+), 10 deletions(-)
diff --git a/io_uring/napi.c b/io_uring/napi.c
index 7e698720cd51..d299c89cfc3d 100644
--- a/io_uring/napi.c
+++ b/io_uring/napi.c
@@ -110,16 +110,10 @@ static int __io_napi_del_id(struct io_ring_ctx *ctx, unsigned int napi_id)
static void __io_napi_remove_stale(struct io_ring_ctx *ctx)
{
- struct io_napi_entry *e;
+ struct io_napi_entry *e, *next;
guard(spinlock)(&ctx->napi_lock);
- /*
- * list_for_each_entry_safe() is not required as long as:
- * 1. list_del_rcu() does not reset the deleted node next pointer
- * 2. kfree_rcu() delays the memory freeing until the next quiescent
- * state
- */
- list_for_each_entry(e, &ctx->napi_list, list) {
+ list_for_each_entry_safe(e, next, &ctx->napi_list, list) {
if (time_after(jiffies, READ_ONCE(e->timeout))) {
list_del_rcu(&e->list);
hash_del_rcu(&e->node);
@@ -264,10 +258,10 @@ void io_napi_init(struct io_ring_ctx *ctx)
*/
void io_napi_free(struct io_ring_ctx *ctx)
{
- struct io_napi_entry *e;
+ struct io_napi_entry *e, *next;
guard(spinlock)(&ctx->napi_lock);
- list_for_each_entry(e, &ctx->napi_list, list) {
+ list_for_each_entry_safe(e, next, &ctx->napi_list, list) {
hash_del_rcu(&e->node);
kfree_rcu(e, rcu);
}
--
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-10-29 15:34 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-29 14:47 [PATCH v2] io_uring/napi: clean up list traversal with list_for_each_entry_safe() Anvik Loitongbam
2026-10-29 15:34 ` Jens Axboe
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®