diff options
| author | Christian Brauner <brauner@kernel.org> | 2026-05-15 18:41:05 +0300 |
|---|---|---|
| committer | Christian Brauner <brauner@kernel.org> | 2026-05-15 18:41:05 +0300 |
| commit | 6ece1a31c58c8c8293ecbbe79d7f92d52e1b0022 (patch) | |
| tree | d3a9bb4e7138e5329d60f9ad90805dafa23084a2 /include/linux | |
| parent | a33d6583cece7086ee2c7803b8bf909560f93da4 (diff) | |
| parent | 463aba8090738bcd956297f7341b6874e76ae664 (diff) | |
| download | linux-6ece1a31c58c8c8293ecbbe79d7f92d52e1b0022.tar.xz | |
Merge patch series "io_uring related epoll cleanups"
Jens Axboe <axboe@kernel.dk> says:
One of the nastier things about epoll is how it allows nesting contexts
inside each other, leading to the necessity of loop detection and the
issues that have come with that.
I don't believe there's any reason to support nesting on the io_uring
side, in fact IORING_OP_EPOLL_CTL is a historical mistake, imho. But
let's at least try and contain the damage and disallow nested contexts
from our side.
Christian Brauner <brauner@kernel.org> says:
Bring in the eventpoll specific io_uring changes together with the
eventpoll cleanup I did this cycle. The io_uring changes can go on top
of both through the block tree.
* patches from https://patch.msgid.link/20260514140817.623026-1-axboe@kernel.dk:
eventpoll: rename struct epoll_filefd to epoll_key
eventpoll: add file based control interface
eventpoll: export is_file_epoll()
eventpoll: pass struct epoll_filefd through ep_find() and ep_insert()
Link: https://patch.msgid.link/20260514140817.623026-1-axboe@kernel.dk
Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/eventpoll.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/include/linux/eventpoll.h b/include/linux/eventpoll.h index 728fb5dee5ed..de1c738aa8ad 100644 --- a/include/linux/eventpoll.h +++ b/include/linux/eventpoll.h @@ -61,8 +61,16 @@ static inline void eventpoll_release(struct file *file) eventpoll_release_file(file); } +struct epoll_key { + struct file *file; + int fd; +} __packed; + +int do_epoll_ctl_file(struct file *f, int op, struct epoll_key *tf, + struct epoll_event *epds, bool nonblock); int do_epoll_ctl(int epfd, int op, int fd, struct epoll_event *epds, bool nonblock); +bool is_file_epoll(struct file *f); /* Tells if the epoll_ctl(2) operation needs an event copy from userspace */ static inline int ep_op_has_event(int op) |
