projects/linux·blob master · refs

3030 lines · 82.7 KiB

1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * fs/eventpoll.c (Efficient event retrieval implementation)
4 * Copyright (C) 2001,...,2009 Davide Libenzi
5 *
6 * Davide Libenzi <[email protected]>
7 */
8
9#include <linux/init.h>
10#include <linux/kernel.h>
11#include <linux/sched/signal.h>
12#include <linux/fs.h>
13#include <linux/file.h>
14#include <linux/signal.h>
15#include <linux/errno.h>
16#include <linux/mm.h>
17#include <linux/slab.h>
18#include <linux/poll.h>
19#include <linux/string.h>
20#include <linux/list.h>
21#include <linux/hash.h>
22#include <linux/spinlock.h>
23#include <linux/syscalls.h>
24#include <linux/rbtree.h>
25#include <linux/wait.h>
26#include <linux/eventpoll.h>
27#include <linux/mount.h>
28#include <linux/bitops.h>
29#include <linux/mutex.h>
30#include <linux/anon_inodes.h>
31#include <linux/device.h>
32#include <linux/uaccess.h>
33#include <asm/io.h>
34#include <asm/mman.h>
35#include <linux/atomic.h>
36#include <linux/proc_fs.h>
37#include <linux/seq_file.h>
38#include <linux/compat.h>
39#include <linux/rculist.h>
40#include <linux/capability.h>
41#include <linux/seqlock.h>
42#include <net/busy_poll.h>
43
44/*
45 * fs/eventpoll.c - Efficient event polling ("epoll") kernel implementation.
46 *
47 *
48 * Overview
49 * --------
50 *
51 * Each epoll_create(2) returns an anonymous [eventpoll] file whose
52 * ->private_data is a struct eventpoll. Each EPOLL_CTL_ADD installs
53 * a struct epitem linking one (watched file, fd) pair back to that
54 * eventpoll via the watched file's f_op->poll() wait queue(s). When
55 * the watched file signals readiness, ep_poll_callback() fires and
56 * marks the epitem ready. epoll_wait(2) drains the ready list under
57 * ep->mtx, re-queueing items in level-triggered mode.
58 *
59 * epoll instances can watch other epoll instances up to EP_MAX_NESTS
60 * deep; cycles are forbidden and detected at EPOLL_CTL_ADD time.
61 *
62 *
63 * Locking
64 * -------
65 *
66 * Three levels, acquired from outer to inner:
67 *
68 * epnested_mutex (global; rare; taken only for EPOLL_CTL_ADD
69 * loop / path checks)
70 * > ep->mtx (per-eventpoll; sleepable; serializes most ops)
71 * > ep->lock (per-eventpoll; IRQ-safe spinlock)
72 *
73 * file->f_lock (per-file; NOT IRQ-safe; guards f_ep hlist ops;
74 * nested inside ep->mtx, outside ep->lock)
75 *
76 * Rationale:
77 * - ep->lock is a spinlock because ep_poll_callback() is called from
78 * wake_up() which may run in hard-IRQ context. All ep->lock
79 * critical sections use spin_lock_irqsave().
80 * - ep->mtx is a sleepable mutex because the event delivery loop
81 * calls copy_to_user(), and ep_insert() may sleep in
82 * kmem_cache_alloc() and f_op->poll().
83 * - epnested_mutex is global because cycle detection needs a global
84 * view of the epoll topology; a per-object scheme would let two
85 * concurrent inserts (A into B, B into A) construct a cycle
86 * without either observer seeing it.
87 * - Per-ep ep->mtx is preferred for scalability elsewhere. Events
88 * that require epnested_mutex are rare.
89 *
90 * When EPOLL_CTL_ADD nests one eventpoll inside another we acquire
91 * ep->mtx on both: outer first, target second. Since cycles are
92 * forbidden the set of live ep->mtx holds is always a strict chain,
93 * communicated to lockdep via mutex_lock_nested() subclasses derived
94 * from the current recursion depth.
95 *
96 *
97 * Field protection
98 * ----------------
99 *
100 * struct eventpoll:
101 * mtx - self
102 * rbr - ep->mtx
103 * ovflist, rdllist - ep->lock (IRQ-safe)
104 * wq - ep->lock for queue mutation
105 * poll_wait - internal waitqueue spinlock
106 * refs - file->f_lock for adds; ep->mtx for removes;
107 * RCU for readers (hlist_del_rcu + kfree_rcu(ep))
108 * ws - ep->mtx
109 * gen, loop_check_depth - epnested_mutex
110 * file, user - immutable after setup
111 * refcount - atomic (refcount_t)
112 * napi_* - READ_ONCE / WRITE_ONCE
113 *
114 * struct epitem:
115 * rbn / rcu union - rbn: ep->mtx (while epi is linked in ep->rbr).
116 * rcu: written only by kfree_rcu(epi) on the free
117 * path; otherwise untouched by epoll code.
118 * rdllink, next - ep->lock
119 * ffd, ep - immutable after ep_insert()
120 * pwqlist - ep->mtx for writes; POLLFREE clears pwq->whead
121 * via smp_store_release(), see below
122 * fllink - file->f_lock for mutation; hlist_del_rcu +
123 * kfree_rcu(epi) for safe RCU readers
124 * ws - RCU (rcu_assign_pointer /
125 * rcu_dereference_check(mtx))
126 * event - ep->mtx for writes; lockless read in
127 * ep_poll_callback pairs with smp_mb() in
128 * ep_modify()
129 *
130 *
131 * Ready-list state machine
132 * ------------------------
133 *
134 * Readiness is tracked in two lists under ep->lock:
135 *
136 * rdllist - doubly-linked FIFO; the "current" ready list.
137 * ovflist - singly-linked LIFO; used during a scan to catch
138 * events that arrive while rdllist is being iterated
139 * without ep->lock.
140 *
141 * Encoded in ep->ovflist:
142 * EP_UNACTIVE_PTR - no scan active; callback appends to rdllist.
143 * NULL - scan active, no spill yet.
144 * pointer to epi - scan active with spilled items (LIFO).
145 *
146 * Encoded in epi->ovflist_next:
147 * EP_UNACTIVE_PTR - epi is not on ovflist.
148 * otherwise - next epi on ovflist (NULL at tail).
149 *
150 * ep_start_scan() flips "not scanning" to "scanning" and splices
151 * rdllist into a caller-local scan_batch. ep_done_scan() drains ovflist
152 * back to rdllist (list_add head-insert reverses LIFO to FIFO),
153 * flips back to "not scanning", and re-splices any items the caller
154 * left in scan_batch (e.g., level-triggered re-queues).
155 *
156 *
157 * Removal paths
158 * -------------
159 *
160 * Three paths dispose of epitems and/or eventpolls:
161 *
162 * A. ep_remove() - EPOLL_CTL_DEL and ep_insert()
163 * rollback. Caller holds ep->mtx.
164 * B. ep_clear_and_put() - close of the epoll fd itself
165 * (ep_eventpoll_release).
166 * C. eventpoll_release_file() - close of a watched file, invoked
167 * from __fput().
168 *
169 * Coordination:
170 * A and C exclude each other via the watched file's refcount.
171 * A pins the file with epi_fget() before touching file->f_ep or
172 * file->f_lock; if the pin fails, __fput() is in flight and C
173 * will clean this epi up. See the epi_fget() block comment.
174 * A and B both hold ep->mtx serially. B walks the rbtree with
175 * rb_next() captured before ep_remove() erases the current node.
176 * B and C both take ep->mtx; the loser sees fewer entries or an
177 * empty file->f_ep.
178 *
179 * Within every path the internal order is strict:
180 * ep_unregister_pollwait() - drain pwqlist; synchronizes with any
181 * in-flight ep_poll_callback via the
182 * watched wait-queue head's lock.
183 * ep_remove_file() - hlist_del_rcu of epi->fllink and,
184 * if last watcher, clear file->f_ep,
185 * under file->f_lock.
186 * ep_remove_epi() - rb_erase, rdllist unlink (ep->lock),
187 * wakeup_source_unregister,
188 * kfree_rcu(epi).
189 *
190 * kfree_rcu(epi) defers the free past RCU readers in
191 * reverse_path_check_proc(); kfree_rcu(ep) defers past readers in
192 * ep_get_upwards_depth_proc().
193 *
194 *
195 * POLLFREE handshake
196 * ------------------
197 *
198 * When a subsystem tears down a wait-queue head that an epitem is
199 * registered on (binder, signalfd, ...), it wakes the callback with
200 * POLLFREE and must RCU-defer the head's free. The store/load pair:
201 *
202 * ep_poll_callback() POLLFREE branch:
203 * smp_store_release(&pwq->whead, NULL)
204 *
205 * ep_remove_wait_queue():
206 * smp_load_acquire(&pwq->whead)
207 *
208 * See those sites for the full argument.
209 */
210
211/* Epoll private bits inside the event mask */
212#define EP_PRIVATE_BITS (EPOLLWAKEUP | EPOLLONESHOT | EPOLLET | EPOLLEXCLUSIVE)
213
214#define EPOLLINOUT_BITS (EPOLLIN | EPOLLOUT)
215
216#define EPOLLEXCLUSIVE_OK_BITS (EPOLLINOUT_BITS | EPOLLERR | EPOLLHUP | \
217 EPOLLWAKEUP | EPOLLET | EPOLLEXCLUSIVE)
218
219/* Maximum number of nesting allowed inside epoll sets */
220#define EP_MAX_NESTS 4
221
222#define EP_MAX_EVENTS (INT_MAX / sizeof(struct epoll_event))
223
224#define EP_UNACTIVE_PTR ((void *) -1L)
225
226#define EP_ITEM_COST (sizeof(struct epitem) + sizeof(struct eppoll_entry))
227
228/* Wait structure used by the poll hooks */
229struct eppoll_entry {
230 /* List header used to link this structure to the "struct epitem" */
231 struct eppoll_entry *next;
232
233 /* The "base" pointer is set to the container "struct epitem" */
234 struct epitem *base;
235
236 /*
237 * Wait queue item that will be linked to the target file wait
238 * queue head.
239 */
240 wait_queue_entry_t wait;
241
242 /* The wait queue head that linked the "wait" wait queue item */
243 wait_queue_head_t *whead;
244};
245
246/*
247 * Each file descriptor added to the eventpoll interface will
248 * have an entry of this type linked to the "rbr" RB tree.
249 * Avoid increasing the size of this struct, there can be many thousands
250 * of these on a server and we do not want this to take another cache line.
251 */
252struct epitem {
253 union {
254 /* RB tree node links this structure to the eventpoll RB tree */
255 struct rb_node rbn;
256 /* Used to free the struct epitem */
257 struct rcu_head rcu;
258 };
259
260 /* Link on the owning eventpoll's ready list (ep->rdllist). */
261 struct list_head rdllink;
262
263 /*
264 * Link on the owning eventpoll's scan-overflow list (ep->ovflist),
265 * EP_UNACTIVE_PTR when not linked. See epi_on_ovflist() /
266 * epi_clear_ovflist() and the "Ready-list state machine" section
267 * in the top-of-file banner.
268 */
269 struct epitem *ovflist_next;
270
271 /* The file descriptor information this item refers to */
272 struct epoll_key ffd;
273
274 /* List containing poll wait queues */
275 struct eppoll_entry *pwqlist;
276
277 /* The "container" of this item */
278 struct eventpoll *ep;
279
280 /* List header used to link this item to the "struct file" items list */
281 struct hlist_node fllink;
282
283 /* wakeup_source used when EPOLLWAKEUP is set */
284 struct wakeup_source __rcu *ws;
285
286 /* The structure that describe the interested events and the source fd */
287 struct epoll_event event;
288};
289
290/*
291 * This structure is stored inside the "private_data" member of the file
292 * structure and represents the main data structure for the eventpoll
293 * interface.
294 */
295struct eventpoll {
296 /*
297 * This mutex is used to ensure that files are not removed
298 * while epoll is using them. This is held during the event
299 * collection loop, the file cleanup path, the epoll file exit
300 * code and the ctl operations.
301 */
302 struct mutex mtx;
303
304 /* Wait queue used by sys_epoll_wait() */
305 wait_queue_head_t wq;
306
307 /* Wait queue used by file->poll() */
308 wait_queue_head_t poll_wait;
309
310 /* List of ready file descriptors */
311 struct list_head rdllist;
312
313 /* Lock which protects rdllist and ovflist */
314 spinlock_t lock;
315
316 /* Protect switching between rdllist and ovflist */
317 seqcount_spinlock_t seq;
318
319 /* RB tree root used to store monitored fd structs */
320 struct rb_root_cached rbr;
321
322 /*
323 * This is a single linked list that chains all the "struct epitem" that
324 * happened while transferring ready events to userspace w/out
325 * holding ->lock.
326 */
327 struct epitem *ovflist;
328
329 /* wakeup_source used when ep_send_events or __ep_eventpoll_poll is running */
330 struct wakeup_source *ws;
331
332 /* The user that created the eventpoll descriptor */
333 struct user_struct *user;
334
335 struct file *file;
336
337 /* used to optimize loop detection check */
338 u64 gen;
339 struct hlist_head refs;
340 u8 loop_check_depth;
341
342 /* usage count, orchestrates "struct eventpoll" disposal */
343 refcount_t refcount;
344
345 /* used to defer freeing past ep_get_upwards_depth_proc() RCU walk */
346 struct rcu_head rcu;
347
348#ifdef CONFIG_NET_RX_BUSY_POLL
349 /* used to track busy poll napi_id */
350 unsigned int napi_id;
351 /* busy poll timeout */
352 u32 busy_poll_usecs;
353 /* busy poll packet budget */
354 u16 busy_poll_budget;
355 bool prefer_busy_poll;
356#endif
357
358#ifdef CONFIG_DEBUG_LOCK_ALLOC
359 /* tracks wakeup nests for lockdep validation */
360 u8 nests;
361#endif
362};
363
364/* Wrapper struct used by poll queueing */
365struct ep_pqueue {
366 poll_table pt;
367 struct epitem *epi;
368};
369
370/*
371 * Configuration options available inside /proc/sys/fs/epoll/
372 */
373/* Maximum number of epoll watched descriptors, per user */
374static long max_user_watches __read_mostly;
375
376/*
377 * Cycle and path-length checks at EPOLL_CTL_ADD
378 * ---------------------------------------------
379 *
380 * When EPOLL_CTL_ADD creates a link that either targets an eventpoll
381 * file or extends an existing chain of eventpolls, two checks run:
382 *
383 * 1. no cycle is being formed -- ep_loop_check() walks downward
384 * from the candidate target, and ep_get_upwards_depth_proc()
385 * walks upward from the outer ep, both bounded by EP_MAX_NESTS.
386 * 2. no file accumulates more than path_limits[depth] wakeup paths
387 * of a given length -- reverse_path_check().
388 *
389 * Both need a global view of the epoll topology and must be atomic
390 * with the insertion, so the check is serialized by epnested_mutex
391 * and carries its scratch state on a stack-allocated struct
392 * ep_ctl_ctx scoped to one do_epoll_ctl() call. Non-nested inserts
393 * skip this machinery entirely and take only ep->mtx.
394 *
395 * epnested_mutex Serializes the whole check.
396 * loop_check_gen Global monotonic stamp, bumped at the start of
397 * a check and again at the end. ep->gen caches
398 * the value under which ep was last visited by
399 * ep_loop_check_proc() or
400 * ep_get_upwards_depth_proc(); the post-check
401 * bump ensures those cached stamps can no longer
402 * equal loop_check_gen, so the
403 * "ep->gen == loop_check_gen" trigger in
404 * ep_ctl_lock() only fires while another check
405 * is in flight.
406 *
407 * struct ep_ctl_ctx carries the rest (inserting_into, tfile_check_list,
408 * path_count[]) through the walk; see its declaration below.
409 *
410 * Commits fdcfce93073d ("eventpoll: Fix integer overflow in
411 * ep_loop_check_proc()") and f2e467a48287 ("eventpoll: Fix
412 * semi-unbounded recursion") hardened the walk; any refactor must
413 * preserve both bail-outs.
414 */
415static DEFINE_MUTEX(epnested_mutex);
416static u64 loop_check_gen = 0;
417
418#define PATH_ARR_SIZE 5
419
420/*
421 * Per-do_epoll_ctl() scratch for the loop / path checks. Allocated on
422 * the caller's stack; populated by ep_ctl_lock() and the downward
423 * walk; consumed by reverse_path_check(); released by ep_ctl_unlock().
424 * Only valid while the caller holds epnested_mutex.
425 */
426struct ep_ctl_ctx {
427 /*
428 * Outer eventpoll for one ep_loop_check(); if the downward walk
429 * reaches it the insert would form a cycle.
430 */
431 struct eventpoll *inserting_into;
432
433 /*
434 * Singly-linked list of epitems_head objects collected during
435 * ep_loop_check_proc(), then walked by reverse_path_check().
436 * Terminated by EP_UNACTIVE_PTR, not NULL: epitems_head->next
437 * doubles as a membership flag (a NULL ->next means "not on this
438 * list", see ep_remove_file()), so the list uses a non-NULL
439 * sentinel to keep the tail head distinguishable from an unlisted
440 * one.
441 */
442 struct epitems_head *tfile_check_list;
443
444 /*
445 * Per-depth wakeup-path tally used by reverse_path_check_proc();
446 * reinitialized to zero at the start of each reverse_path_check()
447 * iteration.
448 */
449 int path_count[PATH_ARR_SIZE];
450};
451
452/* Slab cache used to allocate "struct epitem" */
453static struct kmem_cache *epi_cache __ro_after_init;
454
455/* Slab cache used to allocate "struct eppoll_entry" */
456static struct kmem_cache *pwq_cache __ro_after_init;
457
458/*
459 * Wrapper anchor for file->f_ep when the watched file is not itself an
460 * eventpoll; for the epoll-watches-epoll case, file->f_ep points at
461 * &watched_ep->refs directly. The ->next field threads
462 * ctx->tfile_check_list during one EPOLL_CTL_ADD path check. The ->file
463 * field holds a reference to the associated file while the head is on
464 * the list.
465 */
466struct epitems_head {
467 struct hlist_head epitems;
468 struct epitems_head *next;
469 struct file *file;
470};
471
472static struct kmem_cache *ephead_cache __ro_after_init;
473
474static inline void free_ephead(struct epitems_head *head)
475{
476 if (head)
477 kmem_cache_free(ephead_cache, head);
478}
479
480static void list_file(struct file *file, struct ep_ctl_ctx *ctx)
481{
482 struct epitems_head *head;
483
484 head = container_of(file->f_ep, struct epitems_head, epitems);
485 if (!head->next) {
486 /*
487 * The caller owns a reference to @file or holds the ep->mtx for the
488 * epitem that led here. The latter blocks eventpoll_release_file()
489 * before the file allocation can be freed and reused. A dying leaf
490 * can be skipped since removing links cannot increase the reverse
491 * path count.
492 */
493 if (!file_ref_get(&file->f_ref))
494 return;
495 head->file = file;
496 head->next = ctx->tfile_check_list;
497 ctx->tfile_check_list = head;
498 }
499}
500
501static void unlist_file(struct epitems_head *head)
502{
503 struct epitems_head *to_free = head;
504 struct hlist_node *p = rcu_dereference(hlist_first_rcu(&head->epitems));
505 struct file *file = head->file;
506 if (p) {
507 struct epitem *epi= container_of(p, struct epitem, fllink);
508 spin_lock(&epi->ffd.file->f_lock);
509 if (!hlist_empty(&head->epitems))
510 to_free = NULL;
511 head->next = NULL;
512 head->file = NULL;
513 spin_unlock(&epi->ffd.file->f_lock);
514 }
515 free_ephead(to_free);
516 fput(file);
517}
518
519#ifdef CONFIG_SYSCTL
520
521#include <linux/sysctl.h>
522
523static long long_zero;
524static long long_max = LONG_MAX;
525
526static const struct ctl_table epoll_table[] = {
527 {
528 .procname = "max_user_watches",
529 .data = &max_user_watches,
530 .maxlen = sizeof(max_user_watches),
531 .mode = 0644,
532 .proc_handler = proc_doulongvec_minmax,
533 .extra1 = &long_zero,
534 .extra2 = &long_max,
535 },
536};
537
538static void __init epoll_sysctls_init(void)
539{
540 register_sysctl("fs/epoll", epoll_table);
541}
542#else
543#define epoll_sysctls_init() do { } while (0)
544#endif /* CONFIG_SYSCTL */
545
546static const struct file_operations eventpoll_fops;
547
548bool is_file_epoll(struct file *f)
549{
550 return f->f_op == &eventpoll_fops;
551}
552
553/* Compare RB tree keys */
554static inline int ep_cmp_ffd(struct epoll_key *p1, struct epoll_key *p2)
555{
556 return (p1->file > p2->file ? +1:
557 (p1->file < p2->file ? -1 : p1->fd - p2->fd));
558}
559
560/* True iff @epi is on its owning ep's ready list. */
561static inline bool ep_is_linked(struct epitem *epi)
562{
563 return !list_empty(&epi->rdllink);
564}
565
566static inline struct eppoll_entry *ep_pwq_from_wait(wait_queue_entry_t *p)
567{
568 return container_of(p, struct eppoll_entry, wait);
569}
570
571/* Get the "struct epitem" from a wait queue pointer */
572static inline struct epitem *ep_item_from_wait(wait_queue_entry_t *p)
573{
574 return container_of(p, struct eppoll_entry, wait)->base;
575}
576
577/*
578 * Ready-list / ovflist state (see "Ready-list state machine" in the
579 * top-of-file banner for the full state machine). EP_UNACTIVE_PTR is
580 * the sentinel; these wrappers name each transition and each test so
581 * call sites do not need to know the sentinel's value.
582 */
583
584/* True iff @ep is between ep_enter_scan() and ep_exit_scan(). */
585static inline bool ep_is_scanning(struct eventpoll *ep)
586{
587 return READ_ONCE(ep->ovflist) != EP_UNACTIVE_PTR;
588}
589
590/* Called by ep_start_scan(): divert ep_poll_callback() to ovflist. */
591static inline void ep_enter_scan(struct eventpoll *ep)
592{
593 WRITE_ONCE(ep->ovflist, NULL);
594}
595
596/* Called by ep_done_scan(): redirect ep_poll_callback() back to rdllist. */
597static inline void ep_exit_scan(struct eventpoll *ep)
598{
599 WRITE_ONCE(ep->ovflist, EP_UNACTIVE_PTR);
600}
601
602/* True iff @epi is currently linked on its ep's ovflist. */
603static inline bool epi_on_ovflist(const struct epitem *epi)
604{
605 return epi->ovflist_next != EP_UNACTIVE_PTR;
606}
607
608/* Mark @epi as not on any ovflist (init and post-drain). */
609static inline void epi_clear_ovflist(struct epitem *epi)
610{
611 epi->ovflist_next = EP_UNACTIVE_PTR;
612}
613
614/* True iff @ep has ready events that epoll_wait() might harvest. */
615static inline bool ep_events_available(struct eventpoll *ep)
616{
617 unsigned int seq = read_seqcount_begin(&ep->seq);
618
619 return !list_empty_careful(&ep->rdllist) || ep_is_scanning(ep) ||
620 read_seqcount_retry(&ep->seq, seq);
621}
622
623#ifdef CONFIG_NET_RX_BUSY_POLL
624/**
625 * busy_loop_ep_timeout - check if busy poll has timed out. The timeout value
626 * from the epoll instance ep is preferred, but if it is not set fallback to
627 * the system-wide global via busy_loop_timeout.
628 *
629 * @start_time: The start time used to compute the remaining time until timeout.
630 * @ep: Pointer to the eventpoll context.
631 *
632 * Return: true if the timeout has expired, false otherwise.
633 */
634static bool busy_loop_ep_timeout(unsigned long start_time,
635 struct eventpoll *ep)
636{
637 unsigned long bp_usec = READ_ONCE(ep->busy_poll_usecs);
638
639 if (bp_usec) {
640 unsigned long end_time = start_time + bp_usec;
641 unsigned long now = busy_loop_current_time();
642
643 return time_after(now, end_time);
644 } else {
645 return busy_loop_timeout(start_time);
646 }
647}
648
649static bool ep_busy_loop_on(struct eventpoll *ep)
650{
651 return !!READ_ONCE(ep->busy_poll_usecs) ||
652 READ_ONCE(ep->prefer_busy_poll) ||
653 net_busy_loop_on();
654}
655
656static bool ep_busy_loop_end(void *p, unsigned long start_time)
657{
658 struct eventpoll *ep = p;
659
660 return ep_events_available(ep) || busy_loop_ep_timeout(start_time, ep);
661}
662
663/*
664 * Busy poll if globally on and supporting sockets found && no events,
665 * busy loop will return if need_resched or ep_events_available.
666 *
667 * we must do our busy polling with irqs enabled
668 */
669static bool ep_busy_loop(struct eventpoll *ep)
670{
671 unsigned int napi_id = READ_ONCE(ep->napi_id);
672 u16 budget = READ_ONCE(ep->busy_poll_budget);
673 bool prefer_busy_poll = READ_ONCE(ep->prefer_busy_poll);
674
675 if (!budget)
676 budget = BUSY_POLL_BUDGET;
677
678 if (napi_id_valid(napi_id) && ep_busy_loop_on(ep)) {
679 napi_busy_loop(napi_id, ep_busy_loop_end,
680 ep, prefer_busy_poll, budget);
681 if (ep_events_available(ep))
682 return true;
683 /*
684 * Busy poll timed out. Drop NAPI ID for now, we can add
685 * it back in when we have moved a socket with a valid NAPI
686 * ID onto the ready list.
687 */
688 if (prefer_busy_poll)
689 napi_resume_irqs(napi_id);
690 ep->napi_id = 0;
691 return false;
692 }
693 return false;
694}
695
696/*
697 * Set epoll busy poll NAPI ID from sk.
698 */
699static inline void ep_set_busy_poll_napi_id(struct epitem *epi)
700{
701 struct eventpoll *ep = epi->ep;
702 unsigned int napi_id;
703 struct socket *sock;
704 struct sock *sk;
705
706 if (!ep_busy_loop_on(ep))
707 return;
708
709 sock = sock_from_file(epi->ffd.file);
710 if (!sock)
711 return;
712
713 sk = sock->sk;
714 if (!sk)
715 return;
716
717 napi_id = READ_ONCE(sk->sk_napi_id);
718
719 /* Non-NAPI IDs can be rejected
720 * or
721 * Nothing to do if we already have this ID
722 */
723 if (!napi_id_valid(napi_id) || napi_id == ep->napi_id)
724 return;
725
726 /* record NAPI ID for use in next busy poll */
727 ep->napi_id = napi_id;
728}
729
730static long ep_eventpoll_bp_ioctl(struct file *file, unsigned int cmd,
731 unsigned long arg)
732{
733 struct eventpoll *ep = file->private_data;
734 void __user *uarg = (void __user *)arg;
735 struct epoll_params epoll_params;
736
737 switch (cmd) {
738 case EPIOCSPARAMS:
739 if (copy_from_user(&epoll_params, uarg, sizeof(epoll_params)))
740 return -EFAULT;
741
742 /* pad byte must be zero */
743 if (epoll_params.__pad)
744 return -EINVAL;
745
746 if (epoll_params.busy_poll_usecs > S32_MAX)
747 return -EINVAL;
748
749 if (epoll_params.prefer_busy_poll > 1)
750 return -EINVAL;
751
752 if (epoll_params.busy_poll_budget > NAPI_POLL_WEIGHT &&
753 !capable(CAP_NET_ADMIN))
754 return -EPERM;
755
756 WRITE_ONCE(ep->busy_poll_usecs, epoll_params.busy_poll_usecs);
757 WRITE_ONCE(ep->busy_poll_budget, epoll_params.busy_poll_budget);
758 WRITE_ONCE(ep->prefer_busy_poll, epoll_params.prefer_busy_poll);
759 return 0;
760 case EPIOCGPARAMS:
761 memset(&epoll_params, 0, sizeof(epoll_params));
762 epoll_params.busy_poll_usecs = READ_ONCE(ep->busy_poll_usecs);
763 epoll_params.busy_poll_budget = READ_ONCE(ep->busy_poll_budget);
764 epoll_params.prefer_busy_poll = READ_ONCE(ep->prefer_busy_poll);
765 if (copy_to_user(uarg, &epoll_params, sizeof(epoll_params)))
766 return -EFAULT;
767 return 0;
768 default:
769 return -ENOIOCTLCMD;
770 }
771}
772
773static void ep_suspend_napi_irqs(struct eventpoll *ep)
774{
775 unsigned int napi_id = READ_ONCE(ep->napi_id);
776
777 if (napi_id_valid(napi_id) && READ_ONCE(ep->prefer_busy_poll))
778 napi_suspend_irqs(napi_id);
779}
780
781static void ep_resume_napi_irqs(struct eventpoll *ep)
782{
783 unsigned int napi_id = READ_ONCE(ep->napi_id);
784
785 if (napi_id_valid(napi_id) && READ_ONCE(ep->prefer_busy_poll))
786 napi_resume_irqs(napi_id);
787}
788
789#else
790
791static inline bool ep_busy_loop(struct eventpoll *ep)
792{
793 return false;
794}
795
796static inline void ep_set_busy_poll_napi_id(struct epitem *epi)
797{
798}
799
800static long ep_eventpoll_bp_ioctl(struct file *file, unsigned int cmd,
801 unsigned long arg)
802{
803 return -EOPNOTSUPP;
804}
805
806static void ep_suspend_napi_irqs(struct eventpoll *ep)
807{
808}
809
810static void ep_resume_napi_irqs(struct eventpoll *ep)
811{
812}
813
814#endif /* CONFIG_NET_RX_BUSY_POLL */
815
816/*
817 * As described in commit 0ccf831cb lockdep: annotate epoll
818 * the use of wait queues used by epoll is done in a very controlled
819 * manner. Wake ups can nest inside each other, but are never done
820 * with the same locking. For example:
821 *
822 * dfd = socket(...);
823 * efd1 = epoll_create();
824 * efd2 = epoll_create();
825 * epoll_ctl(efd1, EPOLL_CTL_ADD, dfd, ...);
826 * epoll_ctl(efd2, EPOLL_CTL_ADD, efd1, ...);
827 *
828 * When a packet arrives to the device underneath "dfd", the net code will
829 * issue a wake_up() on its poll wake list. Epoll (efd1) has installed a
830 * callback wakeup entry on that queue, and the wake_up() performed by the
831 * "dfd" net code will end up in ep_poll_callback(). At this point epoll
832 * (efd1) notices that it may have some event ready, so it needs to wake up
833 * the waiters on its poll wait list (efd2). So it calls ep_poll_safewake()
834 * that ends up in another wake_up(), after having checked about the
835 * recursion constraints. That are, no more than EP_MAX_NESTS, to avoid
836 * stack blasting.
837 *
838 * When CONFIG_DEBUG_LOCK_ALLOC is enabled, make sure lockdep can handle
839 * this special case of epoll.
840 */
841#ifdef CONFIG_DEBUG_LOCK_ALLOC
842
843static void ep_poll_safewake(struct eventpoll *ep, struct epitem *epi,
844 unsigned pollflags)
845{
846 struct eventpoll *ep_src;
847 unsigned long flags;
848 u8 nests = 0;
849
850 /*
851 * To set the subclass or nesting level for spin_lock_irqsave_nested()
852 * it might be natural to create a per-cpu nest count. However, since
853 * we can recurse on ep->poll_wait.lock, and a non-raw spinlock can
854 * schedule() in the -rt kernel, the per-cpu variable are no longer
855 * protected. Thus, we are introducing a per eventpoll nest field.
856 * If we are not being call from ep_poll_callback(), epi is NULL and
857 * we are at the first level of nesting, 0. Otherwise, we are being
858 * called from ep_poll_callback() and if a previous wakeup source is
859 * not an epoll file itself, we are at depth 1 since the wakeup source
860 * is depth 0. If the wakeup source is a previous epoll file in the
861 * wakeup chain then we use its nests value and record ours as
862 * nests + 1. The previous epoll file nests value is stable since its
863 * already holding its own poll_wait.lock.
864 */
865 if (epi) {
866 if ((is_file_epoll(epi->ffd.file))) {
867 ep_src = epi->ffd.file->private_data;
868 nests = ep_src->nests;
869 } else {
870 nests = 1;
871 }
872 }
873 spin_lock_irqsave_nested(&ep->poll_wait.lock, flags, nests);
874 ep->nests = nests + 1;
875 wake_up_locked_poll(&ep->poll_wait, EPOLLIN | pollflags);
876 ep->nests = 0;
877 spin_unlock_irqrestore(&ep->poll_wait.lock, flags);
878}
879
880#else
881
882static void ep_poll_safewake(struct eventpoll *ep, struct epitem *epi,
883 __poll_t pollflags)
884{
885 wake_up_poll(&ep->poll_wait, EPOLLIN | pollflags);
886}
887
888#endif
889
890static void ep_remove_wait_queue(struct eppoll_entry *pwq)
891{
892 wait_queue_head_t *whead;
893
894 rcu_read_lock();
895 /*
896 * POLLFREE handshake, acquire side; see "POLLFREE handshake"
897 * at the top of this file.
898 *
899 * A NULL load is paired with the smp_store_release(&whead, NULL)
900 * in ep_poll_callback()'s POLLFREE branch: the teardown is
901 * complete and we must not touch whead again. On a non-NULL load
902 * rcu_read_lock() keeps the waitqueue memory alive (POLLFREE
903 * firers RCU-defer the free) and whead->lock inside
904 * remove_wait_queue() serializes us against the store side.
905 */
906 whead = smp_load_acquire(&pwq->whead);
907 if (whead)
908 remove_wait_queue(whead, &pwq->wait);
909 rcu_read_unlock();
910}
911
912/*
913 * This function unregisters poll callbacks from the associated file
914 * descriptor. Must be called with "mtx" held.
915 */
916static void ep_unregister_pollwait(struct eventpoll *ep, struct epitem *epi)
917{
918 struct eppoll_entry **p = &epi->pwqlist;
919 struct eppoll_entry *pwq;
920
921 while ((pwq = *p) != NULL) {
922 *p = pwq->next;
923 ep_remove_wait_queue(pwq);
924 kmem_cache_free(pwq_cache, pwq);
925 }
926}
927
928/* call only when ep->mtx is held */
929static inline struct wakeup_source *ep_wakeup_source(struct epitem *epi)
930{
931 return rcu_dereference_check(epi->ws, lockdep_is_held(&epi->ep->mtx));
932}
933
934/* call only when ep->mtx is held */
935static inline void ep_pm_stay_awake(struct epitem *epi)
936{
937 struct wakeup_source *ws = ep_wakeup_source(epi);
938
939 if (ws)
940 __pm_stay_awake(ws);
941}
942
943static inline bool ep_has_wakeup_source(struct epitem *epi)
944{
945 return rcu_access_pointer(epi->ws) ? true : false;
946}
947
948/* call when ep->mtx cannot be held (ep_poll_callback) */
949static inline void ep_pm_stay_awake_rcu(struct epitem *epi)
950{
951 struct wakeup_source *ws;
952
953 rcu_read_lock();
954 ws = rcu_dereference(epi->ws);
955 if (ws)
956 __pm_stay_awake(ws);
957 rcu_read_unlock();
958}
959
960
961/*
962 * ep->mutex needs to be held because we could be hit by
963 * eventpoll_release_file() and epoll_ctl().
964 */
965static void ep_start_scan(struct eventpoll *ep, struct list_head *scan_batch)
966{
967 /*
968 * Steal the ready list, and re-init the original one to the
969 * empty list. Also, set ep->ovflist to NULL so that events
970 * happening while looping w/out locks, are not lost. We cannot
971 * have the poll callback to queue directly on ep->rdllist,
972 * because we want the "sproc" callback to be able to do it
973 * in a lockless way.
974 */
975 lockdep_assert_irqs_enabled();
976 spin_lock_irq(&ep->lock);
977 write_seqcount_begin(&ep->seq);
978
979 list_splice_init(&ep->rdllist, scan_batch);
980 ep_enter_scan(ep);
981
982 write_seqcount_end(&ep->seq);
983 spin_unlock_irq(&ep->lock);
984}
985
986static void ep_done_scan(struct eventpoll *ep,
987 struct list_head *scan_batch)
988{
989 struct epitem *epi, *nepi;
990
991 spin_lock_irq(&ep->lock);
992 /*
993 * During the time we spent inside the "sproc" callback, some
994 * other events might have been queued by the poll callback.
995 * We re-insert them inside the main ready-list here.
996 */
997 for (nepi = READ_ONCE(ep->ovflist); (epi = nepi) != NULL; ) {
998 nepi = epi->ovflist_next;
999 epi_clear_ovflist(epi);
1000 /*
1001 * Skip items that the caller already returned via @scan_batch
1002 * -- the list_splice() below takes care of those.
1003 */
1004 if (!ep_is_linked(epi)) {
1005 /*
1006 * ovflist is LIFO; list_add() head-insert here
1007 * reverses the iteration order into FIFO.
1008 */
1009 list_add(&epi->rdllink, &ep->rdllist);
1010 ep_pm_stay_awake(epi);
1011 }
1012 }
1013
1014 write_seqcount_begin(&ep->seq);
1015
1016 /* Back out of scan mode; callbacks target ep->rdllist again. */
1017 ep_exit_scan(ep);
1018
1019 /*
1020 * Quickly re-inject items left on "scan_batch".
1021 */
1022 list_splice(scan_batch, &ep->rdllist);
1023
1024 write_seqcount_end(&ep->seq);
1025
1026 __pm_relax(ep->ws);
1027
1028 if (!list_empty(&ep->rdllist)) {
1029 if (waitqueue_active(&ep->wq))
1030 wake_up(&ep->wq);
1031 }
1032
1033 spin_unlock_irq(&ep->lock);
1034}
1035
1036static void ep_get(struct eventpoll *ep)
1037{
1038 refcount_inc(&ep->refcount);
1039}
1040
1041/*
1042 * Drop a reference to @ep; returns true iff it was the last, in which
1043 * case the caller is responsible for ep_free().
1044 */
1045static bool ep_put(struct eventpoll *ep)
1046{
1047 if (!refcount_dec_and_test(&ep->refcount))
1048 return false;
1049
1050 WARN_ON_ONCE(!RB_EMPTY_ROOT(&ep->rbr.rb_root));
1051 return true;
1052}
1053
1054static void ep_free(struct eventpoll *ep)
1055{
1056 ep_resume_napi_irqs(ep);
1057 mutex_destroy(&ep->mtx);
1058 free_uid(ep->user);
1059 wakeup_source_unregister(ep->ws);
1060 /* ep_get_upwards_depth_proc() may still hold epi->ep under RCU */
1061 kfree_rcu(ep, rcu);
1062}
1063
1064/*
1065 * Pin @epi->ffd.file for operations that require both safe dereference
1066 * and exclusion from __fput().
1067 *
1068 * struct file uses SLAB_TYPESAFE_BY_RCU, so a freed slot can be
1069 * reassigned at any time. The bare load of epi->ffd.file is safe here
1070 * because the caller holds ep->mtx and eventpoll_release_file() blocks
1071 * on that mutex while tearing down the epi, so the backing file
1072 * allocation cannot be freed and reused under us. An rcu_read_lock()
1073 * is therefore unnecessary for the load.
1074 *
1075 * A successful file_ref_get() additionally blocks __fput() from
1076 * starting on this file: once the refcount has reached zero it cannot
1077 * come back. ep_remove() relies on that to touch file->f_lock and
1078 * file->f_ep without racing eventpoll_release_file() (see commit
1079 * a6dc643c6931). A NULL return means __fput() is already in flight;
1080 * the caller must bail without touching the file, and
1081 * eventpoll_release_file() will clean the epi up from its side.
1082 */
1083static struct file *epi_fget(const struct epitem *epi)
1084{
1085 struct file *file;
1086
1087 file = epi->ffd.file;
1088 if (!file_ref_get(&file->f_ref))
1089 file = NULL;
1090 return file;
1091}
1092
1093/*
1094 * Takes &file->f_lock; returns with it released.
1095 */
1096static void ep_remove_file(struct eventpoll *ep, struct epitem *epi,
1097 struct file *file)
1098{
1099 struct epitems_head *to_free = NULL;
1100 struct hlist_head *head;
1101
1102 lockdep_assert_held(&ep->mtx);
1103
1104 spin_lock(&file->f_lock);
1105 head = file->f_ep;
1106 if (hlist_is_singular_node(&epi->fllink, head)) {
1107 /*
1108 * Last watcher: publish NULL so the eventpoll_release()
1109 * fastpath in include/linux/eventpoll.h can skip the slow
1110 * path on a future __fput(). Safe because every f_ep writer
1111 * either holds a pin on @file via epi_fget() or is __fput()
1112 * itself -- see the comment in eventpoll_release().
1113 */
1114 WRITE_ONCE(file->f_ep, NULL);
1115 if (!is_file_epoll(file)) {
1116 struct epitems_head *v;
1117 v = container_of(head, struct epitems_head, epitems);
1118 if (!smp_load_acquire(&v->next))
1119 to_free = v;
1120 }
1121 }
1122 hlist_del_rcu(&epi->fllink);
1123 spin_unlock(&file->f_lock);
1124 free_ephead(to_free);
1125}
1126
1127static void ep_remove_epi(struct eventpoll *ep, struct epitem *epi)
1128{
1129 lockdep_assert_held(&ep->mtx);
1130
1131 rb_erase_cached(&epi->rbn, &ep->rbr);
1132
1133 spin_lock_irq(&ep->lock);
1134 if (ep_is_linked(epi))
1135 list_del_init(&epi->rdllink);
1136 spin_unlock_irq(&ep->lock);
1137
1138 wakeup_source_unregister(ep_wakeup_source(epi));
1139 /*
1140 * At this point it is safe to free the eventpoll item. Use the union
1141 * field epi->rcu, since we are trying to minimize the size of
1142 * 'struct epitem'. The 'rbn' field is no longer in use. Protected by
1143 * ep->mtx. The rcu read side, reverse_path_check_proc(), does not make
1144 * use of the rbn field.
1145 */
1146 kfree_rcu(epi, rcu);
1147
1148 percpu_counter_dec(&ep->user->epoll_watches);
1149}
1150
1151/*
1152 * ep_remove variant for callers owing an additional reference to the ep
1153 */
1154static void ep_remove(struct eventpoll *ep, struct epitem *epi)
1155{
1156 struct file *file __free(fput) = NULL;
1157
1158 lockdep_assert_irqs_enabled();
1159 lockdep_assert_held(&ep->mtx);
1160
1161 ep_unregister_pollwait(ep, epi);
1162
1163 /*
1164 * If we manage to grab a reference it means we're not in
1165 * eventpoll_release_file() and aren't going to be: once @file's
1166 * refcount has reached zero, file_ref_get() cannot bring it back.
1167 */
1168 file = epi_fget(epi);
1169 if (!file)
1170 return;
1171
1172 ep_remove_file(ep, epi, file);
1173 ep_remove_epi(ep, epi);
1174 WARN_ON_ONCE(ep_put(ep));
1175}
1176
1177/*
1178 * Pass 1 of ep_clear_and_put(): drain every epi's pwqlist.
1179 * ep_unregister_pollwait() takes each watched wait-queue head's lock,
1180 * which synchronizes with any in-flight ep_poll_callback(); after
1181 * this returns no callback can still be about to dereference an epi
1182 * on this ep. Must strictly precede ep_drain_tree() -- fusing the
1183 * two walks would let a callback queued on epi_i still fire after
1184 * epi_{i+k} had already been freed.
1185 */
1186static void ep_drain_pollwaits(struct eventpoll *ep)
1187{
1188 struct rb_node *rbp;
1189 struct epitem *epi;
1190
1191 lockdep_assert_held(&ep->mtx);
1192
1193 for (rbp = rb_first_cached(&ep->rbr); rbp; rbp = rb_next(rbp)) {
1194 epi = rb_entry(rbp, struct epitem, rbn);
1195
1196 ep_unregister_pollwait(ep, epi);
1197 cond_resched();
1198 }
1199}
1200
1201/*
1202 * Pass 2 of ep_clear_and_put(): ep_remove() every epi. The per-epi
1203 * pwqlist is already empty (ep_drain_pollwaits ran), but the rest of
1204 * ep_remove() still runs: epi_fget() pin, f_ep clear under f_lock,
1205 * rbtree erase, rdllist unlink, kfree_rcu(epi). rb_next() is captured
1206 * before each erase so the iteration is stable.
1207 *
1208 * A concurrent eventpoll_release_file() (removal path C) on a watched
1209 * file serializes with us via ep->mtx; ep_remove() transparently
1210 * hands off any epi whose file is in __fput() by bailing when
1211 * epi_fget() returns NULL, and path C will clean that epi up.
1212 */
1213static void ep_drain_tree(struct eventpoll *ep)
1214{
1215 struct rb_node *rbp, *next;
1216 struct epitem *epi;
1217
1218 lockdep_assert_held(&ep->mtx);
1219
1220 for (rbp = rb_first_cached(&ep->rbr); rbp; rbp = next) {
1221 next = rb_next(rbp);
1222 epi = rb_entry(rbp, struct epitem, rbn);
1223 ep_remove(ep, epi);
1224 cond_resched();
1225 }
1226}
1227
1228/*
1229 * Removal path B (see "Removal paths" in the top-of-file banner):
1230 * close of the epoll fd itself, reached via ep_eventpoll_release().
1231 *
1232 * Two passes under ep->mtx: first ep_drain_pollwaits() quiesces
1233 * in-flight callbacks, then ep_drain_tree() frees the epis. The
1234 * ep->refcount is kept > 0 across the walk by the ep file's own
1235 * share, which we drop below; ep_free() runs iff we were the last
1236 * holder after the tree drained.
1237 */
1238static void ep_clear_and_put(struct eventpoll *ep)
1239{
1240 /* Release any threads blocked in poll-on-ep. */
1241 if (waitqueue_active(&ep->poll_wait))
1242 ep_poll_safewake(ep, NULL, 0);
1243
1244 mutex_lock(&ep->mtx);
1245 ep_drain_pollwaits(ep);
1246 ep_drain_tree(ep);
1247 mutex_unlock(&ep->mtx);
1248
1249 if (ep_put(ep))
1250 ep_free(ep);
1251}
1252
1253static long ep_eventpoll_ioctl(struct file *file, unsigned int cmd,
1254 unsigned long arg)
1255{
1256 int ret;
1257
1258 if (!is_file_epoll(file))
1259 return -EINVAL;
1260
1261 switch (cmd) {
1262 case EPIOCSPARAMS:
1263 case EPIOCGPARAMS:
1264 ret = ep_eventpoll_bp_ioctl(file, cmd, arg);
1265 break;
1266 default:
1267 ret = -EINVAL;
1268 break;
1269 }
1270
1271 return ret;
1272}
1273
1274static int ep_eventpoll_release(struct inode *inode, struct file *file)
1275{
1276 struct eventpoll *ep = file->private_data;
1277
1278 if (ep)
1279 ep_clear_and_put(ep);
1280
1281 return 0;
1282}
1283
1284static __poll_t ep_item_poll(const struct epitem *epi, poll_table *pt, int depth);
1285
1286static __poll_t __ep_eventpoll_poll(struct file *file, poll_table *wait, int depth)
1287{
1288 struct eventpoll *ep = file->private_data;
1289 LIST_HEAD(scan_batch);
1290 struct epitem *epi, *tmp;
1291 poll_table pt;
1292 __poll_t res = 0;
1293
1294 init_poll_funcptr(&pt, NULL);
1295
1296 /* Insert inside our poll wait queue */
1297 poll_wait(file, &ep->poll_wait, wait);
1298
1299 /*
1300 * Proceed to find out if wanted events are really available inside
1301 * the ready list.
1302 */
1303 mutex_lock_nested(&ep->mtx, depth);
1304 ep_start_scan(ep, &scan_batch);
1305 list_for_each_entry_safe(epi, tmp, &scan_batch, rdllink) {
1306 if (ep_item_poll(epi, &pt, depth + 1)) {
1307 res = EPOLLIN | EPOLLRDNORM;
1308 break;
1309 } else {
1310 /*
1311 * Item has been dropped into the ready list by the poll
1312 * callback, but it's not actually ready, as far as
1313 * caller requested events goes. We can remove it here.
1314 */
1315 __pm_relax(ep_wakeup_source(epi));
1316 list_del_init(&epi->rdllink);
1317 }
1318 }
1319 ep_done_scan(ep, &scan_batch);
1320 mutex_unlock(&ep->mtx);
1321 return res;
1322}
1323
1324/*
1325 * Differs from ep_eventpoll_poll() in that internal callers already have
1326 * the ep->mtx so we need to start from depth=1, such that mutex_lock_nested()
1327 * is correctly annotated.
1328 */
1329static __poll_t ep_item_poll(const struct epitem *epi, poll_table *pt,
1330 int depth)
1331{
1332 struct file *file = epi_fget(epi);
1333 __poll_t res;
1334
1335 /*
1336 * We could return EPOLLERR | EPOLLHUP or something, but let's
1337 * treat this more as "file doesn't exist, poll didn't happen".
1338 */
1339 if (!file)
1340 return 0;
1341
1342 pt->_key = epi->event.events;
1343 if (!is_file_epoll(file))
1344 res = vfs_poll(file, pt);
1345 else
1346 res = __ep_eventpoll_poll(file, pt, depth);
1347 fput(file);
1348 return res & epi->event.events;
1349}
1350
1351static __poll_t ep_eventpoll_poll(struct file *file, poll_table *wait)
1352{
1353 return __ep_eventpoll_poll(file, wait, 0);
1354}
1355
1356#ifdef CONFIG_PROC_FS
1357static void ep_show_fdinfo(struct seq_file *m, struct file *f)
1358{
1359 struct eventpoll *ep = f->private_data;
1360 struct rb_node *rbp;
1361
1362 mutex_lock(&ep->mtx);
1363 for (rbp = rb_first_cached(&ep->rbr); rbp; rbp = rb_next(rbp)) {
1364 struct epitem *epi = rb_entry(rbp, struct epitem, rbn);
1365 struct inode *inode = file_inode(epi->ffd.file);
1366
1367 seq_printf(m, "tfd: %8d events: %8x data: %16llx "
1368 " pos:%lli ino:%llx sdev:%x\n",
1369 epi->ffd.fd, epi->event.events,
1370 (long long)epi->event.data,
1371 (long long)epi->ffd.file->f_pos,
1372 inode->i_ino, inode->i_sb->s_dev);
1373 if (seq_has_overflowed(m))
1374 break;
1375 }
1376 mutex_unlock(&ep->mtx);
1377}
1378#endif
1379
1380/* File callbacks that implement the eventpoll file behaviour */
1381static const struct file_operations eventpoll_fops = {
1382#ifdef CONFIG_PROC_FS
1383 .show_fdinfo = ep_show_fdinfo,
1384#endif
1385 .release = ep_eventpoll_release,
1386 .poll = ep_eventpoll_poll,
1387 .llseek = noop_llseek,
1388 .unlocked_ioctl = ep_eventpoll_ioctl,
1389 .compat_ioctl = compat_ptr_ioctl,
1390};
1391
1392/*
1393 * This is called from eventpoll_release() to unlink files from the eventpoll
1394 * interface. We need to have this facility to cleanup correctly files that are
1395 * closed without being removed from the eventpoll interface.
1396 */
1397void eventpoll_release_file(struct file *file)
1398{
1399 struct eventpoll *ep;
1400 struct epitem *epi;
1401
1402 /*
1403 * A concurrent ep_remove() cannot outrace us: it pins @file via
1404 * epi_fget(), which fails once __fput() has dropped the refcount
1405 * to zero -- the path we're on. So any racing ep_remove() bails
1406 * and leaves the epi for us to clean up here.
1407 */
1408again:
1409 spin_lock(&file->f_lock);
1410 if (file->f_ep && file->f_ep->first) {
1411 epi = hlist_entry(file->f_ep->first, struct epitem, fllink);
1412 spin_unlock(&file->f_lock);
1413
1414 /*
1415 * ep access is safe as we still own a reference to the ep
1416 * struct
1417 */
1418 ep = epi->ep;
1419 mutex_lock(&ep->mtx);
1420
1421 ep_unregister_pollwait(ep, epi);
1422
1423 ep_remove_file(ep, epi, file);
1424 ep_remove_epi(ep, epi);
1425
1426 mutex_unlock(&ep->mtx);
1427
1428 if (ep_put(ep))
1429 ep_free(ep);
1430 goto again;
1431 }
1432 spin_unlock(&file->f_lock);
1433}
1434
1435static int ep_alloc(struct eventpoll **pep)
1436{
1437 struct eventpoll *ep;
1438
1439 ep = kzalloc_obj(*ep);
1440 if (unlikely(!ep))
1441 return -ENOMEM;
1442
1443 mutex_init(&ep->mtx);
1444 spin_lock_init(&ep->lock);
1445 seqcount_spinlock_init(&ep->seq, &ep->lock);
1446 init_waitqueue_head(&ep->wq);
1447 init_waitqueue_head(&ep->poll_wait);
1448 INIT_LIST_HEAD(&ep->rdllist);
1449 ep->rbr = RB_ROOT_CACHED;
1450 ep->ovflist = EP_UNACTIVE_PTR; /* not scanning */
1451 ep->user = get_current_user();
1452 refcount_set(&ep->refcount, 1);
1453
1454 *pep = ep;
1455
1456 return 0;
1457}
1458
1459/*
1460 * Search the file inside the eventpoll tree. The RB tree operations
1461 * are protected by the "mtx" mutex, and ep_find() must be called with
1462 * "mtx" held.
1463 */
1464static struct epitem *ep_find(struct eventpoll *ep, struct epoll_key *tf)
1465{
1466 int kcmp;
1467 struct rb_node *rbp;
1468 struct epitem *epi, *epir = NULL;
1469
1470 for (rbp = ep->rbr.rb_root.rb_node; rbp; ) {
1471 epi = rb_entry(rbp, struct epitem, rbn);
1472 kcmp = ep_cmp_ffd(tf, &epi->ffd);
1473 if (kcmp > 0)
1474 rbp = rbp->rb_right;
1475 else if (kcmp < 0)
1476 rbp = rbp->rb_left;
1477 else {
1478 epir = epi;
1479 break;
1480 }
1481 }
1482
1483 return epir;
1484}
1485
1486/*
1487 * This is the callback that is passed to the wait queue wakeup
1488 * mechanism. It is called by the stored file descriptors when they
1489 * have events to report.
1490 */
1491static int ep_poll_callback(wait_queue_entry_t *wait, unsigned mode, int sync, void *key)
1492{
1493 int pwake = 0;
1494 struct epitem *epi = ep_item_from_wait(wait);
1495 struct eventpoll *ep = epi->ep;
1496 __poll_t pollflags = key_to_poll(key);
1497 unsigned long flags;
1498 int ewake = 0;
1499
1500 spin_lock_irqsave(&ep->lock, flags);
1501
1502 ep_set_busy_poll_napi_id(epi);
1503
1504 /*
1505 * If the event mask does not contain any poll(2) event, we consider the
1506 * descriptor to be disabled. This condition is likely the effect of the
1507 * EPOLLONESHOT bit that disables the descriptor when an event is received,
1508 * until the next EPOLL_CTL_MOD will be issued.
1509 */
1510 if (!(epi->event.events & ~EP_PRIVATE_BITS))
1511 goto out_unlock;
1512
1513 /*
1514 * Check the events coming with the callback. At this stage, not
1515 * every device reports the events in the "key" parameter of the
1516 * callback. We need to be able to handle both cases here, hence the
1517 * test for "key" != NULL before the event match test.
1518 */
1519 if (pollflags && !(pollflags & epi->event.events))
1520 goto out_unlock;
1521
1522 /*
1523 * If we are transferring events to userspace, we can hold no locks
1524 * (because we're accessing user memory, and because of linux f_op->poll()
1525 * semantics). All the events that happen during that period of time are
1526 * chained in ep->ovflist and requeued later on.
1527 */
1528 if (ep_is_scanning(ep)) {
1529 if (!epi_on_ovflist(epi)) {
1530 epi->ovflist_next = READ_ONCE(ep->ovflist);
1531 WRITE_ONCE(ep->ovflist, epi);
1532 ep_pm_stay_awake_rcu(epi);
1533 }
1534 } else if (!ep_is_linked(epi)) {
1535 /* In the usual case, add event to ready list. */
1536 list_add_tail(&epi->rdllink, &ep->rdllist);
1537 ep_pm_stay_awake_rcu(epi);
1538 }
1539
1540 /*
1541 * Wake up ( if active ) both the eventpoll wait list and the ->poll()
1542 * wait list.
1543 */
1544 if (waitqueue_active(&ep->wq)) {
1545 if ((epi->event.events & EPOLLEXCLUSIVE) &&
1546 !(pollflags & POLLFREE)) {
1547 switch (pollflags & EPOLLINOUT_BITS) {
1548 case EPOLLIN:
1549 if (epi->event.events & EPOLLIN)
1550 ewake = 1;
1551 break;
1552 case EPOLLOUT:
1553 if (epi->event.events & EPOLLOUT)
1554 ewake = 1;
1555 break;
1556 case 0:
1557 ewake = 1;
1558 break;
1559 }
1560 }
1561 if (sync)
1562 wake_up_sync(&ep->wq);
1563 else
1564 wake_up(&ep->wq);
1565 }
1566 if (waitqueue_active(&ep->poll_wait))
1567 pwake++;
1568
1569out_unlock:
1570 spin_unlock_irqrestore(&ep->lock, flags);
1571
1572 /* We have to call this outside the lock */
1573 if (pwake)
1574 ep_poll_safewake(ep, epi, pollflags & EPOLL_URING_WAKE);
1575
1576 if (!(epi->event.events & EPOLLEXCLUSIVE))
1577 ewake = 1;
1578
1579 if (pollflags & POLLFREE) {
1580 /*
1581 * POLLFREE handshake, release side; see "POLLFREE handshake"
1582 * at the top of this file.
1583 *
1584 * Unlink our wait entry with list_del_init rather than
1585 * __remove_wait_queue: a concurrent ep_remove_wait_queue()
1586 * that already loaded a non-NULL whead may still call
1587 * remove_wait_queue() after us, and list_del_init() tolerates
1588 * the second delete.
1589 *
1590 * smp_store_release(&whead, NULL) publishes the teardown to
1591 * ep_remove_wait_queue()'s smp_load_acquire(). Before this
1592 * store, a racing ep_clear_and_put() / ep_remove() reaches
1593 * ep_remove_wait_queue() which sees whead != NULL and takes
1594 * whead->lock -- the same lock held by our caller, so it
1595 * serializes behind us. Once whead is zeroed, nothing else
1596 * protects ep / epi / wait.
1597 */
1598 list_del_init(&wait->entry);
1599 smp_store_release(&ep_pwq_from_wait(wait)->whead, NULL);
1600 }
1601
1602 return ewake;
1603}
1604
1605/*
1606 * This is the callback that is used to add our wait queue to the
1607 * target file wakeup lists.
1608 */
1609static void ep_ptable_queue_proc(struct file *file, wait_queue_head_t *whead,
1610 poll_table *pt)
1611{
1612 struct ep_pqueue *epq = container_of(pt, struct ep_pqueue, pt);
1613 struct epitem *epi = epq->epi;
1614 struct eppoll_entry *pwq;
1615
1616 if (unlikely(!epi)) // an earlier allocation has failed
1617 return;
1618
1619 pwq = kmem_cache_alloc(pwq_cache, GFP_KERNEL);
1620 if (unlikely(!pwq)) {
1621 epq->epi = NULL;
1622 return;
1623 }
1624
1625 init_waitqueue_func_entry(&pwq->wait, ep_poll_callback);
1626 pwq->whead = whead;
1627 pwq->base = epi;
1628 if (epi->event.events & EPOLLEXCLUSIVE)
1629 add_wait_queue_exclusive(whead, &pwq->wait);
1630 else
1631 add_wait_queue(whead, &pwq->wait);
1632 pwq->next = epi->pwqlist;
1633 epi->pwqlist = pwq;
1634}
1635
1636static void ep_rbtree_insert(struct eventpoll *ep, struct epitem *epi)
1637{
1638 int kcmp;
1639 struct rb_node **p = &ep->rbr.rb_root.rb_node, *parent = NULL;
1640 struct epitem *epic;
1641 bool leftmost = true;
1642
1643 while (*p) {
1644 parent = *p;
1645 epic = rb_entry(parent, struct epitem, rbn);
1646 kcmp = ep_cmp_ffd(&epi->ffd, &epic->ffd);
1647 if (kcmp > 0) {
1648 p = &parent->rb_right;
1649 leftmost = false;
1650 } else
1651 p = &parent->rb_left;
1652 }
1653 rb_link_node(&epi->rbn, parent, p);
1654 rb_insert_color_cached(&epi->rbn, &ep->rbr, leftmost);
1655}
1656
1657
1658
1659/*
1660 * Upper bound on wakeup paths emanating from any one watched file,
1661 * indexed by path depth (1..PATH_ARR_SIZE). For example, we allow
1662 * 1000 paths of length 1 from each watched file. These caps limit
1663 * the wakeup amplification that can be built from epoll-watches-
1664 * epoll topologies without rejecting reasonable usage.
1665 *
1666 * Enforced at EPOLL_CTL_ADD; CTL_MOD and CTL_DEL cannot add paths.
1667 * The running tallies live in ctx->path_count[] and are protected by
1668 * epnested_mutex.
1669 */
1670static const int path_limits[PATH_ARR_SIZE] = { 1000, 500, 100, 50, 10 };
1671
1672static int path_count_inc(struct ep_ctl_ctx *ctx, int nests)
1673{
1674 /* Allow an arbitrary number of depth 1 paths */
1675 if (nests == 0)
1676 return 0;
1677
1678 if (++ctx->path_count[nests] > path_limits[nests])
1679 return -1;
1680 return 0;
1681}
1682
1683static void path_count_init(struct ep_ctl_ctx *ctx)
1684{
1685 int i;
1686
1687 for (i = 0; i < PATH_ARR_SIZE; i++)
1688 ctx->path_count[i] = 0;
1689}
1690
1691static int reverse_path_check_proc(struct ep_ctl_ctx *ctx,
1692 struct hlist_head *refs, int depth)
1693{
1694 int error = 0;
1695 struct epitem *epi;
1696
1697 if (depth > EP_MAX_NESTS) /* too deep nesting */
1698 return -1;
1699
1700 /* CTL_DEL can remove links here, but that can't increase our count */
1701 hlist_for_each_entry_rcu(epi, refs, fllink) {
1702 struct hlist_head *refs = &epi->ep->refs;
1703 if (hlist_empty(refs))
1704 error = path_count_inc(ctx, depth);
1705 else
1706 error = reverse_path_check_proc(ctx, refs, depth + 1);
1707 if (error != 0)
1708 break;
1709 }
1710 return error;
1711}
1712
1713/**
1714 * reverse_path_check - ctx->tfile_check_list is a list of epitems_head
1715 * anchoring files with newly proposed links; make
1716 * sure those links don't push any path-length bucket
1717 * over its limit in path_limits[].
1718 * @ctx: Per-do_epoll_ctl() scratch for the loop / path checks.
1719 *
1720 * Return: %zero if the proposed links don't create too many paths,
1721 * %-1 otherwise.
1722 */
1723static int reverse_path_check(struct ep_ctl_ctx *ctx)
1724{
1725 struct epitems_head *p;
1726
1727 for (p = ctx->tfile_check_list; p != EP_UNACTIVE_PTR; p = p->next) {
1728 int error;
1729 path_count_init(ctx);
1730 rcu_read_lock();
1731 error = reverse_path_check_proc(ctx, &p->epitems, 0);
1732 rcu_read_unlock();
1733 if (error)
1734 return error;
1735 }
1736 return 0;
1737}
1738
1739static int ep_create_wakeup_source(struct epitem *epi)
1740{
1741 struct name_snapshot n;
1742 struct wakeup_source *ws;
1743
1744 if (!epi->ep->ws) {
1745 epi->ep->ws = wakeup_source_register(NULL, "eventpoll");
1746 if (!epi->ep->ws)
1747 return -ENOMEM;
1748 }
1749
1750 take_dentry_name_snapshot(&n, epi->ffd.file->f_path.dentry);
1751 ws = wakeup_source_register(NULL, n.name.name);
1752 release_dentry_name_snapshot(&n);
1753
1754 if (!ws)
1755 return -ENOMEM;
1756 rcu_assign_pointer(epi->ws, ws);
1757
1758 return 0;
1759}
1760
1761/* rare code path, only used when EPOLL_CTL_MOD removes a wakeup source */
1762static noinline void ep_destroy_wakeup_source(struct epitem *epi)
1763{
1764 struct wakeup_source *ws = ep_wakeup_source(epi);
1765
1766 RCU_INIT_POINTER(epi->ws, NULL);
1767
1768 /*
1769 * wait for ep_pm_stay_awake_rcu to finish, synchronize_rcu is
1770 * used internally by wakeup_source_remove, too (called by
1771 * wakeup_source_unregister), so we cannot use call_rcu
1772 */
1773 synchronize_rcu();
1774 wakeup_source_unregister(ws);
1775}
1776
1777static int ep_attach_file(struct file *file, struct epitem *epi)
1778{
1779 struct epitems_head *to_free = NULL;
1780 struct hlist_head *head = NULL;
1781 struct eventpoll *ep = NULL;
1782
1783 if (is_file_epoll(file))
1784 ep = file->private_data;
1785
1786 if (ep) {
1787 head = &ep->refs;
1788 } else if (!READ_ONCE(file->f_ep)) {
1789allocate:
1790 to_free = kmem_cache_zalloc(ephead_cache, GFP_KERNEL);
1791 if (!to_free)
1792 return -ENOMEM;
1793 head = &to_free->epitems;
1794 }
1795 spin_lock(&file->f_lock);
1796 if (!file->f_ep) {
1797 if (unlikely(!head)) {
1798 spin_unlock(&file->f_lock);
1799 goto allocate;
1800 }
1801 /* See eventpoll_release() for details. */
1802 WRITE_ONCE(file->f_ep, head);
1803 to_free = NULL;
1804 }
1805 hlist_add_head_rcu(&epi->fllink, file->f_ep);
1806 spin_unlock(&file->f_lock);
1807 free_ephead(to_free);
1808 return 0;
1809}
1810
1811/*
1812 * Charge the user's epoll_watches quota, allocate a fresh epitem for
1813 * @tf, and initialize its fields. The returned item is not yet linked
1814 * into any data structure; the caller must install it via
1815 * ep_register_epitem() (which takes over on success) or kmem_cache_free()
1816 * it and decrement epoll_watches on its own.
1817 *
1818 * Returns ERR_PTR(-ENOSPC) if the quota is exceeded, ERR_PTR(-ENOMEM)
1819 * if the slab allocation fails.
1820 */
1821static struct epitem *ep_alloc_epitem(struct eventpoll *ep,
1822 const struct epoll_event *event,
1823 struct epoll_key *tf)
1824{
1825 struct epitem *epi;
1826
1827 if (unlikely(percpu_counter_compare(&ep->user->epoll_watches,
1828 max_user_watches) >= 0))
1829 return ERR_PTR(-ENOSPC);
1830 percpu_counter_inc(&ep->user->epoll_watches);
1831
1832 epi = kmem_cache_zalloc(epi_cache, GFP_KERNEL);
1833 if (unlikely(!epi)) {
1834 percpu_counter_dec(&ep->user->epoll_watches);
1835 return ERR_PTR(-ENOMEM);
1836 }
1837
1838 INIT_LIST_HEAD(&epi->rdllink);
1839 epi->ep = ep;
1840 epi->ffd = *tf;
1841 epi->event = *event;
1842 epi_clear_ovflist(epi);
1843
1844 return epi;
1845}
1846
1847/*
1848 * Install @epi into its target file's f_ep hlist and into @ep's rbtree,
1849 * taking one additional reference on @ep for the lifetime of the item.
1850 *
1851 * If @tep is non-NULL, the target file is itself an eventpoll; we hold
1852 * tep->mtx at subclass 1 across the attach + rbtree insert to serialize
1853 * with the target side. RB tree ops are protected by @ep->mtx, which
1854 * the caller already holds.
1855 *
1856 * On failure the epi is freed and the epoll_watches counter decremented,
1857 * matching ep_alloc_epitem()'s allocation. After this returns
1858 * successfully, ep_insert()'s later error paths use ep_remove() for
1859 * unwind; that cannot drop @ep's refcount to zero because the ep file
1860 * itself still holds the original reference.
1861 */
1862static int ep_register_epitem(struct ep_ctl_ctx *ctx, struct eventpoll *ep,
1863 struct epitem *epi, struct eventpoll *tep,
1864 int full_check)
1865{
1866 struct file *tfile = epi->ffd.file;
1867 int error;
1868
1869 if (tep)
1870 mutex_lock_nested(&tep->mtx, 1);
1871
1872 error = ep_attach_file(tfile, epi);
1873 if (unlikely(error)) {
1874 if (tep)
1875 mutex_unlock(&tep->mtx);
1876 kmem_cache_free(epi_cache, epi);
1877 percpu_counter_dec(&ep->user->epoll_watches);
1878 return error;
1879 }
1880
1881 if (full_check && !tep)
1882 list_file(tfile, ctx);
1883
1884 ep_rbtree_insert(ep, epi);
1885
1886 if (tep)
1887 mutex_unlock(&tep->mtx);
1888
1889 ep_get(ep);
1890 return 0;
1891}
1892
1893/*
1894 * Must be called with "mtx" held.
1895 */
1896static int ep_insert(struct ep_ctl_ctx *ctx, struct eventpoll *ep,
1897 const struct epoll_event *event, struct epoll_key *tf,
1898 int full_check)
1899{
1900 int error, pwake = 0;
1901 __poll_t revents;
1902 struct epitem *epi;
1903 struct ep_pqueue epq;
1904 struct eventpoll *tep = NULL;
1905
1906 if (is_file_epoll(tf->file))
1907 tep = tf->file->private_data;
1908
1909 lockdep_assert_irqs_enabled();
1910
1911 epi = ep_alloc_epitem(ep, event, tf);
1912 if (IS_ERR(epi))
1913 return PTR_ERR(epi);
1914
1915 error = ep_register_epitem(ctx, ep, epi, tep, full_check);
1916 if (error)
1917 return error;
1918
1919 /* Reject the insert if the new link would create too many back-paths. */
1920 if (unlikely(full_check && reverse_path_check(ctx))) {
1921 ep_remove(ep, epi);
1922 return -EINVAL;
1923 }
1924
1925 if (epi->event.events & EPOLLWAKEUP) {
1926 error = ep_create_wakeup_source(epi);
1927 if (error) {
1928 ep_remove(ep, epi);
1929 return error;
1930 }
1931 }
1932
1933 /* Initialize the poll table using the queue callback */
1934 epq.epi = epi;
1935 init_poll_funcptr(&epq.pt, ep_ptable_queue_proc);
1936
1937 /*
1938 * Attach the item to the poll hooks and get current event bits.
1939 * We can safely use the file* here because its usage count has
1940 * been increased by the caller of this function. Note that after
1941 * this operation completes, the poll callback can start hitting
1942 * the new item.
1943 */
1944 revents = ep_item_poll(epi, &epq.pt, 1);
1945
1946 /* ep_ptable_queue_proc() signals allocation failure by clearing epq.epi. */
1947 if (unlikely(!epq.epi)) {
1948 ep_remove(ep, epi);
1949 return -ENOMEM;
1950 }
1951
1952 /* Drop the new item onto the ready list if it is already ready. */
1953 spin_lock_irq(&ep->lock);
1954
1955 ep_set_busy_poll_napi_id(epi);
1956
1957 if (revents && !ep_is_linked(epi)) {
1958 list_add_tail(&epi->rdllink, &ep->rdllist);
1959 ep_pm_stay_awake(epi);
1960
1961 if (waitqueue_active(&ep->wq))
1962 wake_up(&ep->wq);
1963 if (waitqueue_active(&ep->poll_wait))
1964 pwake++;
1965 }
1966
1967 spin_unlock_irq(&ep->lock);
1968
1969 /* We have to call this outside the lock */
1970 if (pwake)
1971 ep_poll_safewake(ep, NULL, 0);
1972
1973 return 0;
1974}
1975
1976/*
1977 * Modify the interest event mask by dropping an event if the new mask
1978 * has a match in the current file status. Must be called with "mtx" held.
1979 */
1980static int ep_modify(struct eventpoll *ep, struct epitem *epi,
1981 const struct epoll_event *event)
1982{
1983 int pwake = 0;
1984 poll_table pt;
1985
1986 lockdep_assert_irqs_enabled();
1987
1988 init_poll_funcptr(&pt, NULL);
1989
1990 /*
1991 * Set the new event interest mask before calling f_op->poll();
1992 * otherwise we might miss an event that happens between the
1993 * f_op->poll() call and the new event set registering.
1994 */
1995 epi->event.events = event->events; /* need barrier below */
1996 epi->event.data = event->data; /* protected by mtx */
1997 if (epi->event.events & EPOLLWAKEUP) {
1998 if (!ep_has_wakeup_source(epi))
1999 ep_create_wakeup_source(epi);
2000 } else if (ep_has_wakeup_source(epi)) {
2001 ep_destroy_wakeup_source(epi);
2002 }
2003
2004 /*
2005 * The following barrier has two effects:
2006 *
2007 * 1) Flush epi changes above to other CPUs. This ensures
2008 * we do not miss events from ep_poll_callback if an
2009 * event occurs immediately after we call f_op->poll().
2010 * We need this because we did not take ep->lock while
2011 * changing epi above (but ep_poll_callback does take
2012 * ep->lock).
2013 *
2014 * 2) We also need to ensure we do not miss _past_ events
2015 * when calling f_op->poll(). This barrier also
2016 * pairs with the barrier in wq_has_sleeper (see
2017 * comments for wq_has_sleeper).
2018 *
2019 * This barrier will now guarantee ep_poll_callback or f_op->poll
2020 * (or both) will notice the readiness of an item.
2021 */
2022 smp_mb();
2023
2024 /*
2025 * Get current event bits. We can safely use the file* here because
2026 * its usage count has been increased by the caller of this function.
2027 * If the item is "hot" and it is not registered inside the ready
2028 * list, push it inside.
2029 */
2030 if (ep_item_poll(epi, &pt, 1)) {
2031 spin_lock_irq(&ep->lock);
2032 if (!ep_is_linked(epi)) {
2033 list_add_tail(&epi->rdllink, &ep->rdllist);
2034 ep_pm_stay_awake(epi);
2035
2036 /* Notify waiting tasks that events are available */
2037 if (waitqueue_active(&ep->wq))
2038 wake_up(&ep->wq);
2039 if (waitqueue_active(&ep->poll_wait))
2040 pwake++;
2041 }
2042 spin_unlock_irq(&ep->lock);
2043 }
2044
2045 /* We have to call this outside the lock */
2046 if (pwake)
2047 ep_poll_safewake(ep, NULL, 0);
2048
2049 return 0;
2050}
2051
2052/*
2053 * Attempt to deliver one event for @epi into @*uevents.
2054 *
2055 * Returns 1 if an event was delivered (with *uevents advanced to the
2056 * next slot), 0 if the re-poll reported no caller-requested events
2057 * (@epi drops out of the ready list; a future callback will re-add
2058 * it), or -EFAULT if copy_to_user() faulted (in which case @epi is
2059 * re-inserted at the head of @scan_batch so ep_done_scan() merges it
2060 * back to rdllist for the next attempt).
2061 *
2062 * PM bookkeeping and level-triggered re-queue are handled here.
2063 * Caller holds ep->mtx and the scan is active.
2064 */
2065static int ep_deliver_event(struct eventpoll *ep, struct epitem *epi,
2066 poll_table *pt,
2067 struct epoll_event __user **uevents,
2068 struct list_head *scan_batch)
2069{
2070 struct epoll_event __user *next;
2071 struct wakeup_source *ws;
2072 __poll_t revents;
2073
2074 /*
2075 * Activate ep->ws before deactivating epi->ws to prevent
2076 * triggering auto-suspend here (in case we reactivate epi->ws
2077 * below). Rearranging to delay the deactivation would let
2078 * epi->ws drift out of sync with ep_is_linked().
2079 */
2080 ws = ep_wakeup_source(epi);
2081 if (ws) {
2082 if (ws->active)
2083 __pm_stay_awake(ep->ws);
2084 __pm_relax(ws);
2085 }
2086
2087 list_del_init(&epi->rdllink);
2088
2089 /*
2090 * Re-poll under ep->mtx so userspace cannot change the item
2091 * out from under us. If no caller-requested events remain,
2092 * @epi stays off the ready list; the poll callback will
2093 * re-queue it when events next appear.
2094 */
2095 revents = ep_item_poll(epi, pt, 1);
2096 if (!revents)
2097 return 0;
2098
2099 next = epoll_put_uevent(revents, epi->event.data, *uevents);
2100 if (!next) {
2101 /*
2102 * copy_to_user() faulted: put the item back so
2103 * ep_done_scan() splices it onto rdllist for the next
2104 * attempt.
2105 */
2106 list_add(&epi->rdllink, scan_batch);
2107 ep_pm_stay_awake(epi);
2108 return -EFAULT;
2109 }
2110 *uevents = next;
2111
2112 if (epi->event.events & EPOLLONESHOT) {
2113 epi->event.events &= EP_PRIVATE_BITS;
2114 } else if (!(epi->event.events & EPOLLET)) {
2115 /*
2116 * Level-triggered: re-queue so the next epoll_wait()
2117 * rechecks availability. We are the sole writer to
2118 * rdllist here -- epoll_ctl() callers are locked out
2119 * by ep->mtx, and the poll callback queues to ovflist
2120 * during scans.
2121 */
2122 list_add_tail(&epi->rdllink, &ep->rdllist);
2123 ep_pm_stay_awake(epi);
2124 }
2125 return 1;
2126}
2127
2128static int ep_send_events(struct eventpoll *ep,
2129 struct epoll_event __user *events, int maxevents)
2130{
2131 struct epitem *epi, *tmp;
2132 LIST_HEAD(scan_batch);
2133 poll_table pt;
2134 int res = 0;
2135
2136 /*
2137 * Always short-circuit for fatal signals to allow threads to make a
2138 * timely exit without the chance of finding more events available and
2139 * fetching repeatedly.
2140 */
2141 if (fatal_signal_pending(current))
2142 return -EINTR;
2143
2144 init_poll_funcptr(&pt, NULL);
2145
2146 mutex_lock(&ep->mtx);
2147 ep_start_scan(ep, &scan_batch);
2148
2149 /*
2150 * We can loop without lock because we are passed a task-private
2151 * scan_batch; items cannot vanish while we hold ep->mtx.
2152 */
2153 list_for_each_entry_safe(epi, tmp, &scan_batch, rdllink) {
2154 int delivered;
2155
2156 if (res >= maxevents)
2157 break;
2158
2159 delivered = ep_deliver_event(ep, epi, &pt, &events, &scan_batch);
2160 if (delivered < 0) {
2161 if (!res)
2162 res = delivered;
2163 break;
2164 }
2165 res += delivered;
2166 }
2167
2168 ep_done_scan(ep, &scan_batch);
2169 mutex_unlock(&ep->mtx);
2170
2171 return res;
2172}
2173
2174static struct timespec64 *ep_timeout_to_timespec(struct timespec64 *to, long ms)
2175{
2176 struct timespec64 now;
2177
2178 if (ms < 0)
2179 return NULL;
2180
2181 if (!ms) {
2182 to->tv_sec = 0;
2183 to->tv_nsec = 0;
2184 return to;
2185 }
2186
2187 to->tv_sec = ms / MSEC_PER_SEC;
2188 to->tv_nsec = NSEC_PER_MSEC * (ms % MSEC_PER_SEC);
2189
2190 ktime_get_ts64(&now);
2191 *to = timespec64_add_safe(now, *to);
2192 return to;
2193}
2194
2195/*
2196 * autoremove_wake_function, but remove even on failure to wake up, because we
2197 * know that default_wake_function/ttwu will only fail if the thread is already
2198 * woken, and in that case the ep_poll loop will remove the entry anyways, not
2199 * try to reuse it.
2200 */
2201static int ep_autoremove_wake_function(struct wait_queue_entry *wq_entry,
2202 unsigned int mode, int sync, void *key)
2203{
2204 int ret = default_wake_function(wq_entry, mode, sync, key);
2205
2206 /*
2207 * Pairs with list_empty_careful in ep_poll, and ensures future loop
2208 * iterations see the cause of this wakeup.
2209 */
2210 list_del_init_careful(&wq_entry->entry);
2211 return ret;
2212}
2213
2214static int ep_try_send_events(struct eventpoll *ep,
2215 struct epoll_event __user *events, int maxevents)
2216{
2217 int res;
2218
2219 /*
2220 * Try to transfer events to user space. In case we get 0 events and
2221 * there's still timeout left over, we go trying again in search of
2222 * more luck.
2223 */
2224 res = ep_send_events(ep, events, maxevents);
2225 if (res > 0)
2226 ep_suspend_napi_irqs(ep);
2227 return res;
2228}
2229
2230static int ep_schedule_timeout(ktime_t *to)
2231{
2232 if (to)
2233 return ktime_after(*to, ktime_get());
2234 else
2235 return 1;
2236}
2237
2238/**
2239 * ep_poll - Retrieves ready events, and delivers them to the caller-supplied
2240 * event buffer.
2241 *
2242 * @ep: Pointer to the eventpoll context.
2243 * @events: Pointer to the userspace buffer where the ready events should be
2244 * stored.
2245 * @maxevents: Size (in terms of number of events) of the caller event buffer.
2246 * @timeout: Maximum timeout for the ready events fetch operation, in
2247 * timespec. If the timeout is zero, the function will not block,
2248 * while if the @timeout ptr is NULL, the function will block
2249 * until at least one event has been retrieved (or an error
2250 * occurred).
2251 *
2252 * Return: the number of ready events which have been fetched, or an
2253 * error code, in case of error.
2254 */
2255static int ep_poll(struct eventpoll *ep, struct epoll_event __user *events,
2256 int maxevents, struct timespec64 *timeout)
2257{
2258 int res, timed_out = 0;
2259 bool eavail;
2260 u64 slack = 0;
2261 wait_queue_entry_t wait;
2262 ktime_t expires, *to = NULL;
2263
2264 lockdep_assert_irqs_enabled();
2265
2266 if (timeout && (timeout->tv_sec | timeout->tv_nsec)) {
2267 to = &expires;
2268 *to = timespec64_to_ktime(*timeout);
2269 } else if (timeout) {
2270 /*
2271 * Avoid the unnecessary trip to the wait queue loop, if the
2272 * caller specified a non blocking operation.
2273 */
2274 timed_out = 1;
2275 }
2276
2277 /*
2278 * This call is racy: We may or may not see events that are being added
2279 * to the ready list under the lock (e.g., in IRQ callbacks). For cases
2280 * with a non-zero timeout, this thread will check the ready list under
2281 * lock and will add to the wait queue. For cases with a zero
2282 * timeout, the user by definition should not care and will have to
2283 * recheck again.
2284 */
2285 eavail = ep_events_available(ep);
2286
2287 while (1) {
2288 if (eavail) {
2289 res = ep_try_send_events(ep, events, maxevents);
2290 if (res)
2291 return res;
2292 }
2293
2294 if (timed_out)
2295 return 0;
2296
2297 eavail = ep_busy_loop(ep);
2298 if (eavail)
2299 continue;
2300
2301 if (signal_pending(current))
2302 return -EINTR;
2303
2304 /*
2305 * Internally init_wait() uses autoremove_wake_function(),
2306 * thus wait entry is removed from the wait queue on each
2307 * wakeup. Why it is important? In case of several waiters
2308 * each new wakeup will hit the next waiter, giving it the
2309 * chance to harvest new event. Otherwise wakeup can be
2310 * lost. This is also good performance-wise, because on
2311 * normal wakeup path no need to call __remove_wait_queue()
2312 * explicitly, thus ep->lock is not taken, which halts the
2313 * event delivery.
2314 *
2315 * In fact, we now use an even more aggressive function that
2316 * unconditionally removes, because we don't reuse the wait
2317 * entry between loop iterations. This lets us also avoid the
2318 * performance issue if a process is killed, causing all of its
2319 * threads to wake up without being removed normally.
2320 */
2321 init_wait(&wait);
2322 wait.func = ep_autoremove_wake_function;
2323
2324 spin_lock_irq(&ep->lock);
2325 /*
2326 * Barrierless variant, waitqueue_active() is called under
2327 * the same lock on wakeup ep_poll_callback() side, so it
2328 * is safe to avoid an explicit barrier.
2329 */
2330 __set_current_state(TASK_INTERRUPTIBLE);
2331
2332 /*
2333 * Do the final check under the lock. ep_start/done_scan()
2334 * plays with two lists (->rdllist and ->ovflist) and there
2335 * is always a race when both lists are empty for short
2336 * period of time although events are pending, so lock is
2337 * important.
2338 */
2339 eavail = ep_events_available(ep);
2340 if (!eavail)
2341 __add_wait_queue_exclusive(&ep->wq, &wait);
2342
2343 spin_unlock_irq(&ep->lock);
2344
2345 if (!eavail) {
2346 if (to)
2347 slack = select_estimate_accuracy(timeout);
2348 timed_out = !ep_schedule_timeout(to) ||
2349 !schedule_hrtimeout_range(to, slack,
2350 HRTIMER_MODE_ABS);
2351 }
2352 __set_current_state(TASK_RUNNING);
2353
2354 /*
2355 * We were woken up, thus go and try to harvest some events.
2356 * If timed out and still on the wait queue, recheck eavail
2357 * carefully under lock, below.
2358 */
2359 eavail = true;
2360
2361 if (!list_empty_careful(&wait.entry)) {
2362 spin_lock_irq(&ep->lock);
2363 /*
2364 * If the thread timed out and is not on the wait queue,
2365 * it means that the thread was woken up after its
2366 * timeout expired before it could reacquire the lock.
2367 * Thus, when wait.entry is empty, it needs to harvest
2368 * events.
2369 */
2370 if (timed_out)
2371 eavail = list_empty(&wait.entry);
2372 __remove_wait_queue(&ep->wq, &wait);
2373 spin_unlock_irq(&ep->lock);
2374 }
2375 }
2376}
2377
2378/**
2379 * ep_loop_check_proc - verify that adding an epoll file @ep inside another
2380 * epoll file does not create closed loops, and
2381 * determine the depth of the subtree starting at @ep
2382 *
2383 * @ctx: Per-do_epoll_ctl() scratch for the loop / path checks.
2384 * @ep: the &struct eventpoll to be currently checked.
2385 * @depth: Current depth of the path being checked.
2386 *
2387 * Return: depth of the subtree, or a value bigger than EP_MAX_NESTS if we found
2388 * a loop or went too deep.
2389 */
2390static int ep_loop_check_proc(struct ep_ctl_ctx *ctx,
2391 struct eventpoll *ep, int depth)
2392{
2393 int result = 0;
2394 struct rb_node *rbp;
2395 struct epitem *epi;
2396
2397 if (ep->gen == loop_check_gen)
2398 return ep->loop_check_depth;
2399
2400 mutex_lock_nested(&ep->mtx, depth + 1);
2401 ep->gen = loop_check_gen;
2402 for (rbp = rb_first_cached(&ep->rbr); rbp; rbp = rb_next(rbp)) {
2403 epi = rb_entry(rbp, struct epitem, rbn);
2404 if (unlikely(is_file_epoll(epi->ffd.file))) {
2405 struct eventpoll *ep_tovisit;
2406 ep_tovisit = epi->ffd.file->private_data;
2407 if (ep_tovisit == ctx->inserting_into ||
2408 depth > EP_MAX_NESTS)
2409 result = EP_MAX_NESTS+1;
2410 else
2411 result = max(result,
2412 ep_loop_check_proc(ctx, ep_tovisit,
2413 depth + 1) + 1);
2414 if (result > EP_MAX_NESTS)
2415 break;
2416 } else {
2417 /*
2418 * A non-epoll leaf. Queue it for the companion
2419 * reverse_path_check() that runs after this walk so
2420 * any new links we propose don't add too many wakeup
2421 * paths.
2422 */
2423 list_file(epi->ffd.file, ctx);
2424 }
2425 }
2426 ep->loop_check_depth = result;
2427 mutex_unlock(&ep->mtx);
2428
2429 return result;
2430}
2431
2432/* ep_get_upwards_depth_proc - determine depth of @ep when traversed upwards */
2433static int ep_get_upwards_depth_proc(struct eventpoll *ep, int depth)
2434{
2435 int result = 0;
2436 struct epitem *epi;
2437
2438 if (ep->gen == loop_check_gen)
2439 return ep->loop_check_depth;
2440 hlist_for_each_entry_rcu(epi, &ep->refs, fllink)
2441 result = max(result, ep_get_upwards_depth_proc(epi->ep, depth + 1) + 1);
2442 ep->gen = loop_check_gen;
2443 ep->loop_check_depth = result;
2444 return result;
2445}
2446
2447/**
2448 * ep_loop_check - Performs a check to verify that adding an epoll file (@to)
2449 * into another epoll file (represented by @ep) does not create
2450 * closed loops or too deep chains.
2451 *
2452 * @ctx: Per-CTL_ADD scratch context.
2453 * @ep: Pointer to the epoll we are inserting into.
2454 * @to: Pointer to the epoll to be inserted.
2455 *
2456 * Return: %zero if adding the epoll @to inside the epoll @from
2457 * does not violate the constraints, or %-1 otherwise.
2458 */
2459static int ep_loop_check(struct ep_ctl_ctx *ctx, struct eventpoll *ep,
2460 struct eventpoll *to)
2461{
2462 int depth, upwards_depth;
2463
2464 ctx->inserting_into = ep;
2465 /*
2466 * Check how deep down we can get from @to, and whether it is possible
2467 * to loop up to @ep.
2468 */
2469 depth = ep_loop_check_proc(ctx, to, 0);
2470 if (depth > EP_MAX_NESTS)
2471 return -1;
2472 /* Check how far up we can go from @ep. */
2473 rcu_read_lock();
2474 upwards_depth = ep_get_upwards_depth_proc(ep, 0);
2475 rcu_read_unlock();
2476
2477 return (depth+1+upwards_depth > EP_MAX_NESTS) ? -1 : 0;
2478}
2479
2480static void clear_tfile_check_list(struct ep_ctl_ctx *ctx)
2481{
2482 rcu_read_lock();
2483 while (ctx->tfile_check_list != EP_UNACTIVE_PTR) {
2484 struct epitems_head *head = ctx->tfile_check_list;
2485 ctx->tfile_check_list = head->next;
2486 unlist_file(head);
2487 }
2488 rcu_read_unlock();
2489}
2490
2491/*
2492 * Open an eventpoll file descriptor.
2493 */
2494static int do_epoll_create(int flags)
2495{
2496 int error;
2497 struct eventpoll *ep;
2498
2499 /* Check the EPOLL_* constant for consistency. */
2500 BUILD_BUG_ON(EPOLL_CLOEXEC != O_CLOEXEC);
2501
2502 if (flags & ~EPOLL_CLOEXEC)
2503 return -EINVAL;
2504 /*
2505 * Create the internal data structure ("struct eventpoll").
2506 */
2507 error = ep_alloc(&ep);
2508 if (error < 0)
2509 return error;
2510 /*
2511 * Creates all the items needed to setup an eventpoll file. That is,
2512 * a file structure and a free file descriptor.
2513 */
2514 FD_PREPARE(fdf, O_RDWR | (flags & O_CLOEXEC),
2515 anon_inode_getfile("[eventpoll]", &eventpoll_fops, ep,
2516 O_RDWR | (flags & O_CLOEXEC)));
2517 if (fdf->fd < 0) {
2518 ep_clear_and_put(ep);
2519 return fdf->fd;
2520 }
2521 ep->file = fdf->file;
2522 return fd_publish(fdf);
2523}
2524
2525SYSCALL_DEFINE1(epoll_create1, int, flags)
2526{
2527 return do_epoll_create(flags);
2528}
2529
2530SYSCALL_DEFINE1(epoll_create, int, size)
2531{
2532 if (size <= 0)
2533 return -EINVAL;
2534
2535 return do_epoll_create(0);
2536}
2537
2538#ifdef CONFIG_PM_SLEEP
2539static inline void ep_take_care_of_epollwakeup(struct epoll_event *epev)
2540{
2541 if ((epev->events & EPOLLWAKEUP) && !capable(CAP_BLOCK_SUSPEND))
2542 epev->events &= ~EPOLLWAKEUP;
2543}
2544#else
2545static inline void ep_take_care_of_epollwakeup(struct epoll_event *epev)
2546{
2547 epev->events &= ~EPOLLWAKEUP;
2548}
2549#endif
2550
2551static inline int epoll_mutex_lock(struct mutex *mutex, bool nonblock)
2552{
2553 if (!nonblock) {
2554 mutex_lock(mutex);
2555 return 0;
2556 }
2557 return mutex_trylock(mutex) ? 0 : -EAGAIN;
2558}
2559
2560/*
2561 * Acquire the locks required for do_epoll_ctl() on @ep for @op.
2562 *
2563 * Always takes ep->mtx. For EPOLL_CTL_ADD, additionally runs the
2564 * loop / path check under epnested_mutex when the topology can
2565 * change: @ep is already watched (epfile->f_ep non-NULL), @ep was
2566 * recently loop-checked (ep->gen == loop_check_gen), or @tfile is
2567 * itself an eventpoll.
2568 *
2569 * Return value encodes both outcome and lock state:
2570 *
2571 * 0 success; ep->mtx held.
2572 * 1 success; ep->mtx held AND the full check ran under
2573 * epnested_mutex (which is also still held). The value
2574 * doubles as the @full_check argument to ep_insert().
2575 * -errno failure; no locks held.
2576 *
2577 * The caller releases what was taken with ep_ctl_unlock(ep, ret).
2578 *
2579 * Holding epnested_mutex on add is what prevents two racing
2580 * EPOLL_CTL_ADDs on different eps from building a cycle without
2581 * either walker observing it.
2582 */
2583static int ep_ctl_lock(struct ep_ctl_ctx *ctx, struct eventpoll *ep, int op,
2584 struct file *epfile, struct file *tfile, bool nonblock)
2585{
2586 struct eventpoll *tep;
2587 int error;
2588
2589 error = epoll_mutex_lock(&ep->mtx, nonblock);
2590 if (error)
2591 return error;
2592
2593 if (op != EPOLL_CTL_ADD)
2594 return 0;
2595 if (!READ_ONCE(epfile->f_ep) && ep->gen != loop_check_gen &&
2596 !is_file_epoll(tfile))
2597 return 0;
2598
2599 /* Full check needed: drop ep->mtx so we can take epnested_mutex. */
2600 mutex_unlock(&ep->mtx);
2601 error = epoll_mutex_lock(&epnested_mutex, nonblock);
2602 if (error)
2603 return error;
2604
2605 loop_check_gen++;
2606
2607 if (is_file_epoll(tfile)) {
2608 tep = tfile->private_data;
2609 if (ep_loop_check(ctx, ep, tep) != 0) {
2610 error = -ELOOP;
2611 goto err_unlock_nested;
2612 }
2613 }
2614
2615 error = epoll_mutex_lock(&ep->mtx, nonblock);
2616 if (error)
2617 goto err_unlock_nested;
2618
2619 return 1;
2620
2621err_unlock_nested:
2622 clear_tfile_check_list(ctx);
2623 loop_check_gen++;
2624 mutex_unlock(&epnested_mutex);
2625 return error;
2626}
2627
2628static void ep_ctl_unlock(struct ep_ctl_ctx *ctx, struct eventpoll *ep,
2629 int full_check)
2630{
2631 mutex_unlock(&ep->mtx);
2632 if (full_check) {
2633 clear_tfile_check_list(ctx);
2634 loop_check_gen++;
2635 mutex_unlock(&epnested_mutex);
2636 }
2637}
2638
2639int do_epoll_ctl_file(struct file *f, int op, struct epoll_key *tf,
2640 struct epoll_event *epds, bool nonblock)
2641{
2642 int error;
2643 int full_check;
2644 struct eventpoll *ep;
2645 struct epitem *epi;
2646 struct ep_ctl_ctx ctx = {
2647 .tfile_check_list = EP_UNACTIVE_PTR,
2648 };
2649
2650 /* The target file descriptor must support poll */
2651 if (!file_can_poll(tf->file))
2652 return -EPERM;
2653
2654 /* Check if EPOLLWAKEUP is allowed */
2655 if (ep_op_has_event(op))
2656 ep_take_care_of_epollwakeup(epds);
2657
2658 /*
2659 * The @f file must itself be an eventpoll, and we do not permit
2660 * adding an epoll file descriptor inside itself.
2661 */
2662 if (f == tf->file || !is_file_epoll(f))
2663 return -EINVAL;
2664
2665 /*
2666 * epoll adds to the wakeup queue at EPOLL_CTL_ADD time only,
2667 * so EPOLLEXCLUSIVE is not allowed for a EPOLL_CTL_MOD operation.
2668 * Also, nested exclusive wakeups are not supported.
2669 */
2670 if (ep_op_has_event(op) && (epds->events & EPOLLEXCLUSIVE)) {
2671 if (op == EPOLL_CTL_MOD)
2672 return -EINVAL;
2673 if (op == EPOLL_CTL_ADD && (is_file_epoll(tf->file) ||
2674 (epds->events & ~EPOLLEXCLUSIVE_OK_BITS)))
2675 return -EINVAL;
2676 }
2677
2678 ep = f->private_data;
2679
2680 full_check = ep_ctl_lock(&ctx, ep, op, f, tf->file, nonblock);
2681 if (full_check < 0)
2682 return full_check;
2683
2684 /*
2685 * Look the target up in ep's RB tree. We hold ep->mtx, so the
2686 * item stays valid until we release.
2687 */
2688 epi = ep_find(ep, tf);
2689
2690 error = -EINVAL;
2691 switch (op) {
2692 case EPOLL_CTL_ADD:
2693 if (!epi) {
2694 epds->events |= EPOLLERR | EPOLLHUP;
2695 error = ep_insert(&ctx, ep, epds, tf, full_check);
2696 } else
2697 error = -EEXIST;
2698 break;
2699 case EPOLL_CTL_DEL:
2700 if (epi) {
2701 /*
2702 * The eventpoll itself is still alive: the refcount
2703 * can't go to zero here.
2704 */
2705 ep_remove(ep, epi);
2706 error = 0;
2707 } else {
2708 error = -ENOENT;
2709 }
2710 break;
2711 case EPOLL_CTL_MOD:
2712 if (epi) {
2713 if (!(epi->event.events & EPOLLEXCLUSIVE)) {
2714 epds->events |= EPOLLERR | EPOLLHUP;
2715 error = ep_modify(ep, epi, epds);
2716 }
2717 } else
2718 error = -ENOENT;
2719 break;
2720 }
2721
2722 ep_ctl_unlock(&ctx, ep, full_check);
2723 return error;
2724}
2725
2726int do_epoll_ctl(int epfd, int op, int fd, struct epoll_event *epds,
2727 bool nonblock)
2728{
2729 struct epoll_key efd;
2730
2731 CLASS(fd, f)(epfd);
2732 if (fd_empty(f))
2733 return -EBADF;
2734
2735 /* Get the "struct file *" for the target file */
2736 CLASS(fd, tf)(fd);
2737 if (fd_empty(tf))
2738 return -EBADF;
2739
2740 efd.file = fd_file(tf);
2741 efd.fd = fd;
2742 return do_epoll_ctl_file(fd_file(f), op, &efd, epds, nonblock);
2743}
2744
2745/*
2746 * The following function implements the controller interface for
2747 * the eventpoll file that enables the insertion/removal/change of
2748 * file descriptors inside the interest set.
2749 */
2750SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd,
2751 struct epoll_event __user *, event)
2752{
2753 struct epoll_event epds;
2754
2755 if (ep_op_has_event(op) &&
2756 copy_from_user(&epds, event, sizeof(struct epoll_event)))
2757 return -EFAULT;
2758
2759 return do_epoll_ctl(epfd, op, fd, &epds, false);
2760}
2761
2762static int ep_check_params(struct file *file, struct epoll_event __user *evs,
2763 int maxevents)
2764{
2765 /* The maximum number of event must be greater than zero */
2766 if (maxevents <= 0 || maxevents > EP_MAX_EVENTS)
2767 return -EINVAL;
2768
2769 /* Verify that the area passed by the user is writeable */
2770 if (!access_ok(evs, maxevents * sizeof(struct epoll_event)))
2771 return -EFAULT;
2772
2773 /*
2774 * We have to check that the file structure underneath the fd
2775 * the user passed to us _is_ an eventpoll file.
2776 */
2777 if (!is_file_epoll(file))
2778 return -EINVAL;
2779
2780 return 0;
2781}
2782
2783int epoll_sendevents(struct file *file, struct epoll_event __user *events,
2784 int maxevents)
2785{
2786 struct eventpoll *ep;
2787 int ret;
2788
2789 ret = ep_check_params(file, events, maxevents);
2790 if (unlikely(ret))
2791 return ret;
2792
2793 ep = file->private_data;
2794 /*
2795 * Racy call, but that's ok - it should get retried based on
2796 * poll readiness anyway.
2797 */
2798 if (ep_events_available(ep))
2799 return ep_try_send_events(ep, events, maxevents);
2800 return 0;
2801}
2802
2803/*
2804 * Implement the event wait interface for the eventpoll file. It is the kernel
2805 * part of the user space epoll_wait(2).
2806 */
2807static int do_epoll_wait(int epfd, struct epoll_event __user *events,
2808 int maxevents, struct timespec64 *to)
2809{
2810 struct eventpoll *ep;
2811 int ret;
2812
2813 /* Get the "struct file *" for the eventpoll file */
2814 CLASS(fd, f)(epfd);
2815 if (fd_empty(f))
2816 return -EBADF;
2817
2818 ret = ep_check_params(fd_file(f), events, maxevents);
2819 if (unlikely(ret))
2820 return ret;
2821
2822 /*
2823 * At this point it is safe to assume that the "private_data" contains
2824 * our own data structure.
2825 */
2826 ep = fd_file(f)->private_data;
2827
2828 /* Time to fish for events ... */
2829 return ep_poll(ep, events, maxevents, to);
2830}
2831
2832SYSCALL_DEFINE4(epoll_wait, int, epfd, struct epoll_event __user *, events,
2833 int, maxevents, int, timeout)
2834{
2835 struct timespec64 to;
2836
2837 return do_epoll_wait(epfd, events, maxevents,
2838 ep_timeout_to_timespec(&to, timeout));
2839}
2840
2841/*
2842 * Implement the event wait interface for the eventpoll file. It is the kernel
2843 * part of the user space epoll_pwait(2).
2844 */
2845static int do_epoll_pwait(int epfd, struct epoll_event __user *events,
2846 int maxevents, struct timespec64 *to,
2847 const sigset_t __user *sigmask, size_t sigsetsize)
2848{
2849 int error;
2850
2851 /*
2852 * If the caller wants a certain signal mask to be set during the wait,
2853 * we apply it here.
2854 */
2855 error = set_user_sigmask(sigmask, sigsetsize);
2856 if (error)
2857 return error;
2858
2859 error = do_epoll_wait(epfd, events, maxevents, to);
2860
2861 restore_saved_sigmask_unless(error == -EINTR);
2862
2863 return error;
2864}
2865
2866SYSCALL_DEFINE6(epoll_pwait, int, epfd, struct epoll_event __user *, events,
2867 int, maxevents, int, timeout, const sigset_t __user *, sigmask,
2868 size_t, sigsetsize)
2869{
2870 struct timespec64 to;
2871
2872 return do_epoll_pwait(epfd, events, maxevents,
2873 ep_timeout_to_timespec(&to, timeout),
2874 sigmask, sigsetsize);
2875}
2876
2877SYSCALL_DEFINE6(epoll_pwait2, int, epfd, struct epoll_event __user *, events,
2878 int, maxevents, const struct __kernel_timespec __user *, timeout,
2879 const sigset_t __user *, sigmask, size_t, sigsetsize)
2880{
2881 struct timespec64 ts, *to = NULL;
2882
2883 if (timeout) {
2884 if (get_timespec64(&ts, timeout))
2885 return -EFAULT;
2886 to = &ts;
2887 if (poll_select_set_timeout(to, ts.tv_sec, ts.tv_nsec))
2888 return -EINVAL;
2889 }
2890
2891 return do_epoll_pwait(epfd, events, maxevents, to,
2892 sigmask, sigsetsize);
2893}
2894
2895#ifdef CONFIG_KCMP
2896static struct epitem *ep_find_tfd(struct eventpoll *ep, int tfd, unsigned long toff)
2897{
2898 struct rb_node *rbp;
2899 struct epitem *epi;
2900
2901 for (rbp = rb_first_cached(&ep->rbr); rbp; rbp = rb_next(rbp)) {
2902 epi = rb_entry(rbp, struct epitem, rbn);
2903 if (epi->ffd.fd == tfd) {
2904 if (toff == 0)
2905 return epi;
2906 else
2907 toff--;
2908 }
2909 cond_resched();
2910 }
2911
2912 return NULL;
2913}
2914
2915struct file *get_epoll_tfile_raw_ptr(struct file *file, int tfd,
2916 unsigned long toff)
2917{
2918 struct file *file_raw;
2919 struct eventpoll *ep;
2920 struct epitem *epi;
2921
2922 if (!is_file_epoll(file))
2923 return ERR_PTR(-EINVAL);
2924
2925 ep = file->private_data;
2926
2927 mutex_lock(&ep->mtx);
2928 epi = ep_find_tfd(ep, tfd, toff);
2929 if (epi)
2930 file_raw = epi->ffd.file;
2931 else
2932 file_raw = ERR_PTR(-ENOENT);
2933 mutex_unlock(&ep->mtx);
2934
2935 return file_raw;
2936}
2937#endif /* CONFIG_KCMP */
2938
2939#ifdef CONFIG_COMPAT
2940static int do_compat_epoll_pwait(int epfd, struct epoll_event __user *events,
2941 int maxevents, struct timespec64 *timeout,
2942 const compat_sigset_t __user *sigmask,
2943 compat_size_t sigsetsize)
2944{
2945 long err;
2946
2947 /*
2948 * If the caller wants a certain signal mask to be set during the wait,
2949 * we apply it here.
2950 */
2951 err = set_compat_user_sigmask(sigmask, sigsetsize);
2952 if (err)
2953 return err;
2954
2955 err = do_epoll_wait(epfd, events, maxevents, timeout);
2956
2957 restore_saved_sigmask_unless(err == -EINTR);
2958
2959 return err;
2960}
2961
2962COMPAT_SYSCALL_DEFINE6(epoll_pwait, int, epfd,
2963 struct epoll_event __user *, events,
2964 int, maxevents, int, timeout,
2965 const compat_sigset_t __user *, sigmask,
2966 compat_size_t, sigsetsize)
2967{
2968 struct timespec64 to;
2969
2970 return do_compat_epoll_pwait(epfd, events, maxevents,
2971 ep_timeout_to_timespec(&to, timeout),
2972 sigmask, sigsetsize);
2973}
2974
2975COMPAT_SYSCALL_DEFINE6(epoll_pwait2, int, epfd,
2976 struct epoll_event __user *, events,
2977 int, maxevents,
2978 const struct __kernel_timespec __user *, timeout,
2979 const compat_sigset_t __user *, sigmask,
2980 compat_size_t, sigsetsize)
2981{
2982 struct timespec64 ts, *to = NULL;
2983
2984 if (timeout) {
2985 if (get_timespec64(&ts, timeout))
2986 return -EFAULT;
2987 to = &ts;
2988 if (poll_select_set_timeout(to, ts.tv_sec, ts.tv_nsec))
2989 return -EINVAL;
2990 }
2991
2992 return do_compat_epoll_pwait(epfd, events, maxevents, to,
2993 sigmask, sigsetsize);
2994}
2995
2996#endif
2997
2998static int __init eventpoll_init(void)
2999{
3000 struct sysinfo si;
3001
3002 si_meminfo(&si);
3003 /*
3004 * Allows top 4% of lomem to be allocated for epoll watches (per user).
3005 */
3006 max_user_watches = (((si.totalram - si.totalhigh) / 25) << PAGE_SHIFT) /
3007 EP_ITEM_COST;
3008 BUG_ON(max_user_watches < 0);
3009
3010 /*
3011 * We can have many thousands of epitems, so prevent this from
3012 * using an extra cache line on 64-bit (and smaller) CPUs
3013 */
3014 BUILD_BUG_ON(sizeof(void *) <= 8 && sizeof(struct epitem) > 128);
3015
3016 /* Allocates slab cache used to allocate "struct epitem" items */
3017 epi_cache = kmem_cache_create("eventpoll_epi", sizeof(struct epitem),
3018 0, SLAB_HWCACHE_ALIGN|SLAB_PANIC|SLAB_ACCOUNT, NULL);
3019
3020 /* Allocates slab cache used to allocate "struct eppoll_entry" */
3021 pwq_cache = kmem_cache_create("eventpoll_pwq",
3022 sizeof(struct eppoll_entry), 0, SLAB_PANIC|SLAB_ACCOUNT, NULL);
3023 epoll_sysctls_init();
3024
3025 ephead_cache = kmem_cache_create("ep_head",
3026 sizeof(struct epitems_head), 0, SLAB_PANIC|SLAB_ACCOUNT, NULL);
3027
3028 return 0;
3029}
3030fs_initcall(eventpoll_init);