On 8/16/22 07:59, Dylan Yudaken wrote: > Guard wakeups that the user can trigger, and that may end up triggering a > call back into eventfd_signal. This is in addition to the current approach > that only guards in eventfd_signal. > > Rename in_eventfd_signal -> in_eventfd at the same time to reflect this. > > Without this there would be a deadlock in the following code using libaio: > > int main() > { > struct io_context *ctx = NULL; > struct iocb iocb; > struct iocb *iocbs[] = { &iocb }; > int evfd; > uint64_t val = 1; > > evfd = eventfd(0, EFD_CLOEXEC); > assert(!io_setup(2, &ctx)); > io_prep_poll(&iocb, evfd, POLLIN); > io_set_eventfd(&iocb, evfd); > assert(1 == io_submit(ctx, 1, iocbs)); > write(evfd, &val, 8); > } Reviewed-by: Jens Axboe <axboe@xxxxxxxxx> -- Jens Axboe