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 <davidel@xmailserver.org>
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 */
229 struct 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 */
252 struct 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 */
295 struct 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 */
365 struct 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 */
374 static 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 */
415 static DEFINE_MUTEX(epnested_mutex);
416 static 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 */
426 struct 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" */
453 static struct kmem_cache *epi_cache __ro_after_init;
454
455 /* Slab cache used to allocate "struct eppoll_entry" */
456 static 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 */
466 struct epitems_head {
467 struct hlist_head epitems;
468 struct epitems_head *next;
469 struct file *file;
470 };
471
472 static struct kmem_cache *ephead_cache __ro_after_init;
473
free_ephead(struct epitems_head * head)474 static inline void free_ephead(struct epitems_head *head)
475 {
476 if (head)
477 kmem_cache_free(ephead_cache, head);
478 }
479
list_file(struct file * file,struct ep_ctl_ctx * ctx)480 static 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
unlist_file(struct epitems_head * head)501 static 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
523 static long long_zero;
524 static long long_max = LONG_MAX;
525
526 static 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
epoll_sysctls_init(void)538 static 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
546 static const struct file_operations eventpoll_fops;
547
is_file_epoll(struct file * f)548 bool is_file_epoll(struct file *f)
549 {
550 return f->f_op == &eventpoll_fops;
551 }
552
553 /* Compare RB tree keys */
ep_cmp_ffd(struct epoll_key * p1,struct epoll_key * p2)554 static 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. */
ep_is_linked(struct epitem * epi)561 static inline bool ep_is_linked(struct epitem *epi)
562 {
563 return !list_empty(&epi->rdllink);
564 }
565
ep_pwq_from_wait(wait_queue_entry_t * p)566 static 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 */
ep_item_from_wait(wait_queue_entry_t * p)572 static 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(). */
ep_is_scanning(struct eventpoll * ep)585 static 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. */
ep_enter_scan(struct eventpoll * ep)591 static 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. */
ep_exit_scan(struct eventpoll * ep)597 static 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. */
epi_on_ovflist(const struct epitem * epi)603 static 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). */
epi_clear_ovflist(struct epitem * epi)609 static 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. */
ep_events_available(struct eventpoll * ep)615 static 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 */
busy_loop_ep_timeout(unsigned long start_time,struct eventpoll * ep)634 static 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
ep_busy_loop_on(struct eventpoll * ep)649 static 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
ep_busy_loop_end(void * p,unsigned long start_time)656 static 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 */
ep_busy_loop(struct eventpoll * ep)669 static 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 */
ep_set_busy_poll_napi_id(struct epitem * epi)699 static 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
ep_eventpoll_bp_ioctl(struct file * file,unsigned int cmd,unsigned long arg)730 static 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
ep_suspend_napi_irqs(struct eventpoll * ep)773 static 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
ep_resume_napi_irqs(struct eventpoll * ep)781 static 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
ep_busy_loop(struct eventpoll * ep)791 static inline bool ep_busy_loop(struct eventpoll *ep)
792 {
793 return false;
794 }
795
ep_set_busy_poll_napi_id(struct epitem * epi)796 static inline void ep_set_busy_poll_napi_id(struct epitem *epi)
797 {
798 }
799
ep_eventpoll_bp_ioctl(struct file * file,unsigned int cmd,unsigned long arg)800 static long ep_eventpoll_bp_ioctl(struct file *file, unsigned int cmd,
801 unsigned long arg)
802 {
803 return -EOPNOTSUPP;
804 }
805
ep_suspend_napi_irqs(struct eventpoll * ep)806 static void ep_suspend_napi_irqs(struct eventpoll *ep)
807 {
808 }
809
ep_resume_napi_irqs(struct eventpoll * ep)810 static 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
ep_poll_safewake(struct eventpoll * ep,struct epitem * epi,unsigned pollflags)843 static 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
ep_poll_safewake(struct eventpoll * ep,struct epitem * epi,__poll_t pollflags)882 static 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
ep_remove_wait_queue(struct eppoll_entry * pwq)890 static 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 */
ep_unregister_pollwait(struct eventpoll * ep,struct epitem * epi)916 static 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 */
ep_wakeup_source(struct epitem * epi)929 static 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 */
ep_pm_stay_awake(struct epitem * epi)935 static 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
ep_has_wakeup_source(struct epitem * epi)943 static 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) */
ep_pm_stay_awake_rcu(struct epitem * epi)949 static 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 */
ep_start_scan(struct eventpoll * ep,struct list_head * scan_batch)965 static 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
ep_done_scan(struct eventpoll * ep,struct list_head * scan_batch)986 static 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
ep_get(struct eventpoll * ep)1036 static 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 */
ep_put(struct eventpoll * ep)1045 static 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
ep_free(struct eventpoll * ep)1054 static 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 */
epi_fget(const struct epitem * epi)1083 static 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 */
ep_remove_file(struct eventpoll * ep,struct epitem * epi,struct file * file)1096 static 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
ep_remove_epi(struct eventpoll * ep,struct epitem * epi)1127 static 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 */
ep_remove(struct eventpoll * ep,struct epitem * epi)1154 static 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 */
ep_drain_pollwaits(struct eventpoll * ep)1186 static 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 */
ep_drain_tree(struct eventpoll * ep)1213 static 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 */
ep_clear_and_put(struct eventpoll * ep)1238 static 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
ep_eventpoll_ioctl(struct file * file,unsigned int cmd,unsigned long arg)1253 static 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
ep_eventpoll_release(struct inode * inode,struct file * file)1274 static 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
1284 static __poll_t ep_item_poll(const struct epitem *epi, poll_table *pt, int depth);
1285
__ep_eventpoll_poll(struct file * file,poll_table * wait,int depth)1286 static __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 */
ep_item_poll(const struct epitem * epi,poll_table * pt,int depth)1329 static __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
ep_eventpoll_poll(struct file * file,poll_table * wait)1351 static __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
ep_show_fdinfo(struct seq_file * m,struct file * f)1357 static 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 */
1381 static 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 */
eventpoll_release_file(struct file * file)1397 void 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 */
1408 again:
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
ep_alloc(struct eventpoll ** pep)1435 static 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 */
ep_find(struct eventpoll * ep,struct epoll_key * tf)1464 static 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 */
ep_poll_callback(wait_queue_entry_t * wait,unsigned mode,int sync,void * key)1491 static 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
1569 out_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 */
ep_ptable_queue_proc(struct file * file,wait_queue_head_t * whead,poll_table * pt)1609 static 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
ep_rbtree_insert(struct eventpoll * ep,struct epitem * epi)1636 static 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 */
1670 static const int path_limits[PATH_ARR_SIZE] = { 1000, 500, 100, 50, 10 };
1671
path_count_inc(struct ep_ctl_ctx * ctx,int nests)1672 static 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
path_count_init(struct ep_ctl_ctx * ctx)1683 static 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
reverse_path_check_proc(struct ep_ctl_ctx * ctx,struct hlist_head * refs,int depth)1691 static 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 */
reverse_path_check(struct ep_ctl_ctx * ctx)1723 static 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
ep_create_wakeup_source(struct epitem * epi)1739 static 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 */
ep_destroy_wakeup_source(struct epitem * epi)1762 static 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
ep_attach_file(struct file * file,struct epitem * epi)1777 static 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)) {
1789 allocate:
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 */
ep_alloc_epitem(struct eventpoll * ep,const struct epoll_event * event,struct epoll_key * tf)1821 static 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 */
ep_register_epitem(struct ep_ctl_ctx * ctx,struct eventpoll * ep,struct epitem * epi,struct eventpoll * tep,int full_check)1862 static 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 */
ep_insert(struct ep_ctl_ctx * ctx,struct eventpoll * ep,const struct epoll_event * event,struct epoll_key * tf,int full_check)1896 static 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 */
ep_modify(struct eventpoll * ep,struct epitem * epi,const struct epoll_event * event)1980 static 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 */
ep_deliver_event(struct eventpoll * ep,struct epitem * epi,poll_table * pt,struct epoll_event __user ** uevents,struct list_head * scan_batch)2065 static 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
ep_send_events(struct eventpoll * ep,struct epoll_event __user * events,int maxevents)2128 static 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
ep_timeout_to_timespec(struct timespec64 * to,long ms)2174 static 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 */
ep_autoremove_wake_function(struct wait_queue_entry * wq_entry,unsigned int mode,int sync,void * key)2201 static 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
ep_try_send_events(struct eventpoll * ep,struct epoll_event __user * events,int maxevents)2214 static 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
ep_schedule_timeout(ktime_t * to)2230 static 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 */
ep_poll(struct eventpoll * ep,struct epoll_event __user * events,int maxevents,struct timespec64 * timeout)2255 static 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 */
ep_loop_check_proc(struct ep_ctl_ctx * ctx,struct eventpoll * ep,int depth)2390 static 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 */
ep_get_upwards_depth_proc(struct eventpoll * ep,int depth)2433 static 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 */
ep_loop_check(struct ep_ctl_ctx * ctx,struct eventpoll * ep,struct eventpoll * to)2459 static 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
clear_tfile_check_list(struct ep_ctl_ctx * ctx)2480 static 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 */
do_epoll_create(int flags)2494 static 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.err) {
2518 ep_clear_and_put(ep);
2519 return fdf.err;
2520 }
2521 ep->file = fd_prepare_file(fdf);
2522 return fd_publish(fdf);
2523 }
2524
SYSCALL_DEFINE1(epoll_create1,int,flags)2525 SYSCALL_DEFINE1(epoll_create1, int, flags)
2526 {
2527 return do_epoll_create(flags);
2528 }
2529
SYSCALL_DEFINE1(epoll_create,int,size)2530 SYSCALL_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
ep_take_care_of_epollwakeup(struct epoll_event * epev)2539 static 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
ep_take_care_of_epollwakeup(struct epoll_event * epev)2545 static inline void ep_take_care_of_epollwakeup(struct epoll_event *epev)
2546 {
2547 epev->events &= ~EPOLLWAKEUP;
2548 }
2549 #endif
2550
epoll_mutex_lock(struct mutex * mutex,bool nonblock)2551 static 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 */
ep_ctl_lock(struct ep_ctl_ctx * ctx,struct eventpoll * ep,int op,struct file * epfile,struct file * tfile,bool nonblock)2583 static 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
2621 err_unlock_nested:
2622 clear_tfile_check_list(ctx);
2623 loop_check_gen++;
2624 mutex_unlock(&epnested_mutex);
2625 return error;
2626 }
2627
ep_ctl_unlock(struct ep_ctl_ctx * ctx,struct eventpoll * ep,int full_check)2628 static 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
do_epoll_ctl_file(struct file * f,int op,struct epoll_key * tf,struct epoll_event * epds,bool nonblock)2639 int 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
do_epoll_ctl(int epfd,int op,int fd,struct epoll_event * epds,bool nonblock)2726 int 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 */
SYSCALL_DEFINE4(epoll_ctl,int,epfd,int,op,int,fd,struct epoll_event __user *,event)2750 SYSCALL_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
ep_check_params(struct file * file,struct epoll_event __user * evs,int maxevents)2762 static 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
epoll_sendevents(struct file * file,struct epoll_event __user * events,int maxevents)2783 int 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 */
do_epoll_wait(int epfd,struct epoll_event __user * events,int maxevents,struct timespec64 * to)2807 static 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
SYSCALL_DEFINE4(epoll_wait,int,epfd,struct epoll_event __user *,events,int,maxevents,int,timeout)2832 SYSCALL_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 */
do_epoll_pwait(int epfd,struct epoll_event __user * events,int maxevents,struct timespec64 * to,const sigset_t __user * sigmask,size_t sigsetsize)2845 static 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
SYSCALL_DEFINE6(epoll_pwait,int,epfd,struct epoll_event __user *,events,int,maxevents,int,timeout,const sigset_t __user *,sigmask,size_t,sigsetsize)2866 SYSCALL_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
SYSCALL_DEFINE6(epoll_pwait2,int,epfd,struct epoll_event __user *,events,int,maxevents,const struct __kernel_timespec __user *,timeout,const sigset_t __user *,sigmask,size_t,sigsetsize)2877 SYSCALL_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
ep_find_tfd(struct eventpoll * ep,int tfd,unsigned long toff)2896 static 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
get_epoll_tfile_raw_ptr(struct file * file,int tfd,unsigned long toff)2915 struct 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
do_compat_epoll_pwait(int epfd,struct epoll_event __user * events,int maxevents,struct timespec64 * timeout,const compat_sigset_t __user * sigmask,compat_size_t sigsetsize)2940 static 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
COMPAT_SYSCALL_DEFINE6(epoll_pwait,int,epfd,struct epoll_event __user *,events,int,maxevents,int,timeout,const compat_sigset_t __user *,sigmask,compat_size_t,sigsetsize)2962 COMPAT_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
COMPAT_SYSCALL_DEFINE6(epoll_pwait2,int,epfd,struct epoll_event __user *,events,int,maxevents,const struct __kernel_timespec __user *,timeout,const compat_sigset_t __user *,sigmask,compat_size_t,sigsetsize)2975 COMPAT_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
eventpoll_init(void)2998 static 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 }
3030 fs_initcall(eventpoll_init);
3031