Linux kernel -stable discussions
 help / color / mirror / Atom feed
* Subject: io_uring/eventfd: registered eventfd signals only once after the cd305ee3633a backport (6.18.y, 6.12.y, Ubuntu 26.04)
@ 2026-11-13 23:22 dev
  2026-11-14  2:00 ` Greg KH
  0 siblings, 1 reply; 2+ messages in thread
From: dev @ 2026-11-13 23:22 UTC (permalink / raw)
  To: stable@vger.kernel.org; +Cc: io-uring@vger.kernel.org, Jens Axboe, Yufan Chen

While working on my own async runtime on io_uring, I found what looks like a defect in the stable backports. I first saw it on Ubuntu 26.04's kernel, and I can't find any existing report of it.

A registered io_uring eventfd stops signaling after its first deferred signal on kernels that carry the backport of cd305ee3633a ("io_uring: defer eventfd signaling when queued from a wakeup handler") but not 04fe9aeb4f3c ("io_uring/eventfd: reset deferred signal state").

What I see, on Ubuntu 26.04 7.0.0-1016-aws, x86_64 and arm64. Ubuntu's 7.0 kernel took the cd305ee3633a backport through the 6.18.49 stable update:
  
1. A ring with IORING_SETUP_SINGLE_ISSUER | IORING_SETUP_DEFER_TASKRUN | IORING_SETUP_TASKRUN_FLAG, and an eventfd registered with IORING_REGISTER_EVENTFD.
2. Two IORING_OP_RECV on a nonblocking TCP socket. Each gets -EAGAIN, arms poll, and later has data.
3. The first receive's task work signals the eventfd. For the second, tracing shows io_uring_task_add, but the eventfd never becomes readable, and poll() on it blocks.
4. io_uring_enter with IORING_ENTER_GETEVENTS then runs the work and posts the completion.

Debian 12's 6.1 kernel does not show this.

What I THINK is going on (I read the source, w/ help from Opus 5.5; please correct me if I'm wrong): after cd305ee3633a, task work queued from a poll wakeup signals through the deferred path, which sets IO_EVENTFD_OP_SIGNAL_BIT. Without 04fe9aeb4f3c, io_eventfd_do_signal() never clears that bit, so each later deferred signal is skipped.

Where it applies: cd305ee3633a is in 6.18.49 and 6.12.114. 04fe9aeb4f3c (Fixes: 60b6c075e8eb, in v7.1, no stable tag) is in neither branch, and I didn't find a copy in the stable queue. I read this in the source of the linux-6.18.y and linux-6.12.y heads, but I didn't run those kernels.

If this is correct, a backport of 04fe9aeb4f3c to 6.18.y and 6.12.y looks like the right fix; it keeps the CVE-2026-80920 fix in place. The 6.12.y code differs, so it may need a small change. I will obviously leave the fix to you, but I'm happy to test a candidate on the affected Ubuntu kernel.

Thanks,

Nathan - Founder, Lead Developer @ Rebased, Inc.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-11-14  2:00 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-13 23:22 Subject: io_uring/eventfd: registered eventfd signals only once after the cd305ee3633a backport (6.18.y, 6.12.y, Ubuntu 26.04) dev
2026-11-14  2:00 ` Greg KH

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox