Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
aio-posix: zero out io_uring sqe user_data
liburing does not clear sqe->user_data. We must do it ourselves to avoid
undefined behavior in process_cqe() when user_data is used.

Note that fdmon-io_uring is currently disabled, so this is a latent bug
that does not affect users. Let's merge this fix now to make it easier
to enable fdmon-io_uring in the future (and I'm working on that).

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-ID: <20230426212639.82310-1-stefanha@redhat.com>
  • Loading branch information
Stefan Hajnoczi committed Aug 30, 2023
1 parent e2f9382 commit 87ec6f5
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions util/fdmon-io_uring.c
Expand Up @@ -184,6 +184,7 @@ static void add_poll_remove_sqe(AioContext *ctx, AioHandler *node)
#else
io_uring_prep_poll_remove(sqe, node);
#endif
io_uring_sqe_set_data(sqe, NULL);
}

/* Add a timeout that self-cancels when another cqe becomes ready */
Expand All @@ -197,6 +198,7 @@ static void add_timeout_sqe(AioContext *ctx, int64_t ns)

sqe = get_sqe(ctx);
io_uring_prep_timeout(sqe, &ts, 1, 0);
io_uring_sqe_set_data(sqe, NULL);
}

/* Add sqes from ctx->submit_list for submission */
Expand Down

0 comments on commit 87ec6f5

Please sign in to comment.