Files
xemu/util
Stefan Hajnoczi dbf70f0a03 aio-posix: fix race between io_uring CQE and AioHandler deletion
When an AioHandler is enqueued on ctx->submit_list for removal, the
fill_sq_ring() function will submit an io_uring POLL_REMOVE operation to
cancel the in-flight POLL_ADD operation.

There is a race when another thread enqueues an AioHandler for deletion
on ctx->submit_list when the POLL_ADD CQE has already appeared. In that
case POLL_REMOVE is unnecessary. The code already handled this, but
forgot that the AioHandler itself is still on ctx->submit_list when the
POLL_ADD CQE is being processed. It's unsafe to delete the AioHandler at
that point in time (use-after-free).

Solve this problem by keeping the AioHandler alive but setting a flag so
that it will be deleted by fill_sq_ring() when it runs.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Message-ID: <20251104022933.618123-2-stefanha@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2025-11-11 17:32:48 +01:00
..
2025-10-01 08:33:24 +02:00
2023-12-19 19:03:38 +01:00
2025-01-16 20:57:17 -08:00
2024-09-20 10:00:27 +03:00
2025-10-01 08:33:24 +02:00
2024-09-13 20:11:13 +02:00
2025-03-10 17:07:16 +08:00
2025-10-01 11:22:07 -04:00
2025-01-29 11:43:04 -03:00
2024-06-21 09:47:22 -03:00
2025-10-03 09:48:02 -04:00
2025-10-03 09:48:02 -04:00
2023-08-31 19:47:43 +02:00
2023-11-15 12:06:05 +03:00
2025-10-28 12:39:59 +01:00
2024-06-19 12:42:03 +02:00
2023-11-03 09:20:31 +01:00