Dylan Yudaken 9f0deaa12d eventfd: guard wake_up in eventfd fs calls as well
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);
}

Signed-off-by: Dylan Yudaken <dylany@fb.com>
Reviewed-by: Jens Axboe <axboe@kernel.dk>
Link: https://lore.kernel.org/r/20220816135959.1490641-1-dylany@fb.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-09-21 10:30:42 -06:00
..
2022-07-02 18:52:21 +09:00
2022-09-09 07:54:19 -04:00
2022-09-14 04:00:06 -05:00
2022-08-08 11:18:31 -07:00
2022-08-08 20:04:35 -07:00
2022-08-11 13:11:49 -07:00
2022-06-29 08:51:06 -04:00
2022-08-03 10:35:43 -07:00
2022-05-09 16:21:45 -04:00
2022-08-08 20:04:35 -07:00
2022-08-11 13:11:49 -07:00
2022-08-03 10:35:43 -07:00
2022-09-12 17:53:46 -04:00
2022-08-03 10:35:43 -07:00
2022-07-26 13:38:47 +02:00
2022-08-03 10:35:43 -07:00
2022-08-22 11:33:02 -07:00
2022-08-03 14:38:02 -07:00
2022-08-03 10:35:43 -07:00
2022-05-09 16:21:46 -04:00
2022-05-23 20:24:12 -05:00
2022-08-03 10:35:43 -07:00
2022-07-15 23:42:30 -07:00
2022-08-13 13:50:11 -07:00
2022-08-11 13:11:49 -07:00
2022-08-03 10:35:43 -07:00
2022-07-16 09:19:15 -04:00
2022-08-19 14:02:24 -07:00
2022-04-01 19:35:56 -07:00
2022-07-24 18:39:10 -06:00
2022-08-03 10:35:43 -07:00
2022-08-09 09:52:28 -07:00
2022-06-28 13:58:05 -04:00
2022-05-22 21:03:01 +01:00
2022-08-08 11:10:02 -07:00