1 /* 2 * fs/userfaultfd.c 3 * 4 * Copyright (C) 2007 Davide Libenzi <davidel@xmailserver.org> 5 * Copyright (C) 2008-2009 Red Hat, Inc. 6 * Copyright (C) 2015 Red Hat, Inc. 7 * 8 * This work is licensed under the terms of the GNU GPL, version 2. See 9 * the COPYING file in the top-level directory. 10 * 11 * Some part derived from fs/eventfd.c (anon inode setup) and 12 * mm/ksm.c (mm hashing). 13 */ 14 15 #include <linux/list.h> 16 #include <linux/hashtable.h> 17 #include <linux/sched/signal.h> 18 #include <linux/sched/mm.h> 19 #include <linux/mm.h> 20 #include <linux/poll.h> 21 #include <linux/slab.h> 22 #include <linux/seq_file.h> 23 #include <linux/file.h> 24 #include <linux/bug.h> 25 #include <linux/anon_inodes.h> 26 #include <linux/syscalls.h> 27 #include <linux/userfaultfd_k.h> 28 #include <linux/mempolicy.h> 29 #include <linux/ioctl.h> 30 #include <linux/security.h> 31 #include <linux/hugetlb.h> 32 33 static struct kmem_cache *userfaultfd_ctx_cachep __read_mostly; 34 35 enum userfaultfd_state { 36 UFFD_STATE_WAIT_API, 37 UFFD_STATE_RUNNING, 38 }; 39 40 /* 41 * Start with fault_pending_wqh and fault_wqh so they're more likely 42 * to be in the same cacheline. 43 */ 44 struct userfaultfd_ctx { 45 /* waitqueue head for the pending (i.e. not read) userfaults */ 46 wait_queue_head_t fault_pending_wqh; 47 /* waitqueue head for the userfaults */ 48 wait_queue_head_t fault_wqh; 49 /* waitqueue head for the pseudo fd to wakeup poll/read */ 50 wait_queue_head_t fd_wqh; 51 /* waitqueue head for events */ 52 wait_queue_head_t event_wqh; 53 /* a refile sequence protected by fault_pending_wqh lock */ 54 struct seqcount refile_seq; 55 /* pseudo fd refcounting */ 56 atomic_t refcount; 57 /* userfaultfd syscall flags */ 58 unsigned int flags; 59 /* features requested from the userspace */ 60 unsigned int features; 61 /* state machine */ 62 enum userfaultfd_state state; 63 /* released */ 64 bool released; 65 /* memory mappings are changing because of non-cooperative event */ 66 bool mmap_changing; 67 /* mm with one ore more vmas attached to this userfaultfd_ctx */ 68 struct mm_struct *mm; 69 }; 70 71 struct userfaultfd_fork_ctx { 72 struct userfaultfd_ctx *orig; 73 struct userfaultfd_ctx *new; 74 struct list_head list; 75 }; 76 77 struct userfaultfd_unmap_ctx { 78 struct userfaultfd_ctx *ctx; 79 unsigned long start; 80 unsigned long end; 81 struct list_head list; 82 }; 83 84 struct userfaultfd_wait_queue { 85 struct uffd_msg msg; 86 wait_queue_entry_t wq; 87 struct userfaultfd_ctx *ctx; 88 bool waken; 89 }; 90 91 struct userfaultfd_wake_range { 92 unsigned long start; 93 unsigned long len; 94 }; 95 96 static int userfaultfd_wake_function(wait_queue_entry_t *wq, unsigned mode, 97 int wake_flags, void *key) 98 { 99 struct userfaultfd_wake_range *range = key; 100 int ret; 101 struct userfaultfd_wait_queue *uwq; 102 unsigned long start, len; 103 104 uwq = container_of(wq, struct userfaultfd_wait_queue, wq); 105 ret = 0; 106 /* len == 0 means wake all */ 107 start = range->start; 108 len = range->len; 109 if (len && (start > uwq->msg.arg.pagefault.address || 110 start + len <= uwq->msg.arg.pagefault.address)) 111 goto out; 112 WRITE_ONCE(uwq->waken, true); 113 /* 114 * The Program-Order guarantees provided by the scheduler 115 * ensure uwq->waken is visible before the task is woken. 116 */ 117 ret = wake_up_state(wq->private, mode); 118 if (ret) { 119 /* 120 * Wake only once, autoremove behavior. 121 * 122 * After the effect of list_del_init is visible to the other 123 * CPUs, the waitqueue may disappear from under us, see the 124 * !list_empty_careful() in handle_userfault(). 125 * 126 * try_to_wake_up() has an implicit smp_mb(), and the 127 * wq->private is read before calling the extern function 128 * "wake_up_state" (which in turns calls try_to_wake_up). 129 */ 130 list_del_init(&wq->entry); 131 } 132 out: 133 return ret; 134 } 135 136 /** 137 * userfaultfd_ctx_get - Acquires a reference to the internal userfaultfd 138 * context. 139 * @ctx: [in] Pointer to the userfaultfd context. 140 */ 141 static void userfaultfd_ctx_get(struct userfaultfd_ctx *ctx) 142 { 143 if (!atomic_inc_not_zero(&ctx->refcount)) 144 BUG(); 145 } 146 147 /** 148 * userfaultfd_ctx_put - Releases a reference to the internal userfaultfd 149 * context. 150 * @ctx: [in] Pointer to userfaultfd context. 151 * 152 * The userfaultfd context reference must have been previously acquired either 153 * with userfaultfd_ctx_get() or userfaultfd_ctx_fdget(). 154 */ 155 static void userfaultfd_ctx_put(struct userfaultfd_ctx *ctx) 156 { 157 if (atomic_dec_and_test(&ctx->refcount)) { 158 VM_BUG_ON(spin_is_locked(&ctx->fault_pending_wqh.lock)); 159 VM_BUG_ON(waitqueue_active(&ctx->fault_pending_wqh)); 160 VM_BUG_ON(spin_is_locked(&ctx->fault_wqh.lock)); 161 VM_BUG_ON(waitqueue_active(&ctx->fault_wqh)); 162 VM_BUG_ON(spin_is_locked(&ctx->event_wqh.lock)); 163 VM_BUG_ON(waitqueue_active(&ctx->event_wqh)); 164 VM_BUG_ON(spin_is_locked(&ctx->fd_wqh.lock)); 165 VM_BUG_ON(waitqueue_active(&ctx->fd_wqh)); 166 mmdrop(ctx->mm); 167 kmem_cache_free(userfaultfd_ctx_cachep, ctx); 168 } 169 } 170 171 static inline void msg_init(struct uffd_msg *msg) 172 { 173 BUILD_BUG_ON(sizeof(struct uffd_msg) != 32); 174 /* 175 * Must use memset to zero out the paddings or kernel data is 176 * leaked to userland. 177 */ 178 memset(msg, 0, sizeof(struct uffd_msg)); 179 } 180 181 static inline struct uffd_msg userfault_msg(unsigned long address, 182 unsigned int flags, 183 unsigned long reason, 184 unsigned int features) 185 { 186 struct uffd_msg msg; 187 msg_init(&msg); 188 msg.event = UFFD_EVENT_PAGEFAULT; 189 msg.arg.pagefault.address = address; 190 if (flags & FAULT_FLAG_WRITE) 191 /* 192 * If UFFD_FEATURE_PAGEFAULT_FLAG_WP was set in the 193 * uffdio_api.features and UFFD_PAGEFAULT_FLAG_WRITE 194 * was not set in a UFFD_EVENT_PAGEFAULT, it means it 195 * was a read fault, otherwise if set it means it's 196 * a write fault. 197 */ 198 msg.arg.pagefault.flags |= UFFD_PAGEFAULT_FLAG_WRITE; 199 if (reason & VM_UFFD_WP) 200 /* 201 * If UFFD_FEATURE_PAGEFAULT_FLAG_WP was set in the 202 * uffdio_api.features and UFFD_PAGEFAULT_FLAG_WP was 203 * not set in a UFFD_EVENT_PAGEFAULT, it means it was 204 * a missing fault, otherwise if set it means it's a 205 * write protect fault. 206 */ 207 msg.arg.pagefault.flags |= UFFD_PAGEFAULT_FLAG_WP; 208 if (features & UFFD_FEATURE_THREAD_ID) 209 msg.arg.pagefault.feat.ptid = task_pid_vnr(current); 210 return msg; 211 } 212 213 #ifdef CONFIG_HUGETLB_PAGE 214 /* 215 * Same functionality as userfaultfd_must_wait below with modifications for 216 * hugepmd ranges. 217 */ 218 static inline bool userfaultfd_huge_must_wait(struct userfaultfd_ctx *ctx, 219 struct vm_area_struct *vma, 220 unsigned long address, 221 unsigned long flags, 222 unsigned long reason) 223 { 224 struct mm_struct *mm = ctx->mm; 225 pte_t *ptep, pte; 226 bool ret = true; 227 228 VM_BUG_ON(!rwsem_is_locked(&mm->mmap_sem)); 229 230 ptep = huge_pte_offset(mm, address, vma_mmu_pagesize(vma)); 231 232 if (!ptep) 233 goto out; 234 235 ret = false; 236 pte = huge_ptep_get(ptep); 237 238 /* 239 * Lockless access: we're in a wait_event so it's ok if it 240 * changes under us. 241 */ 242 if (huge_pte_none(pte)) 243 ret = true; 244 if (!huge_pte_write(pte) && (reason & VM_UFFD_WP)) 245 ret = true; 246 out: 247 return ret; 248 } 249 #else 250 static inline bool userfaultfd_huge_must_wait(struct userfaultfd_ctx *ctx, 251 struct vm_area_struct *vma, 252 unsigned long address, 253 unsigned long flags, 254 unsigned long reason) 255 { 256 return false; /* should never get here */ 257 } 258 #endif /* CONFIG_HUGETLB_PAGE */ 259 260 /* 261 * Verify the pagetables are still not ok after having reigstered into 262 * the fault_pending_wqh to avoid userland having to UFFDIO_WAKE any 263 * userfault that has already been resolved, if userfaultfd_read and 264 * UFFDIO_COPY|ZEROPAGE are being run simultaneously on two different 265 * threads. 266 */ 267 static inline bool userfaultfd_must_wait(struct userfaultfd_ctx *ctx, 268 unsigned long address, 269 unsigned long flags, 270 unsigned long reason) 271 { 272 struct mm_struct *mm = ctx->mm; 273 pgd_t *pgd; 274 p4d_t *p4d; 275 pud_t *pud; 276 pmd_t *pmd, _pmd; 277 pte_t *pte; 278 bool ret = true; 279 280 VM_BUG_ON(!rwsem_is_locked(&mm->mmap_sem)); 281 282 pgd = pgd_offset(mm, address); 283 if (!pgd_present(*pgd)) 284 goto out; 285 p4d = p4d_offset(pgd, address); 286 if (!p4d_present(*p4d)) 287 goto out; 288 pud = pud_offset(p4d, address); 289 if (!pud_present(*pud)) 290 goto out; 291 pmd = pmd_offset(pud, address); 292 /* 293 * READ_ONCE must function as a barrier with narrower scope 294 * and it must be equivalent to: 295 * _pmd = *pmd; barrier(); 296 * 297 * This is to deal with the instability (as in 298 * pmd_trans_unstable) of the pmd. 299 */ 300 _pmd = READ_ONCE(*pmd); 301 if (pmd_none(_pmd)) 302 goto out; 303 304 ret = false; 305 if (!pmd_present(_pmd)) 306 goto out; 307 308 if (pmd_trans_huge(_pmd)) 309 goto out; 310 311 /* 312 * the pmd is stable (as in !pmd_trans_unstable) so we can re-read it 313 * and use the standard pte_offset_map() instead of parsing _pmd. 314 */ 315 pte = pte_offset_map(pmd, address); 316 /* 317 * Lockless access: we're in a wait_event so it's ok if it 318 * changes under us. 319 */ 320 if (pte_none(*pte)) 321 ret = true; 322 pte_unmap(pte); 323 324 out: 325 return ret; 326 } 327 328 /* 329 * The locking rules involved in returning VM_FAULT_RETRY depending on 330 * FAULT_FLAG_ALLOW_RETRY, FAULT_FLAG_RETRY_NOWAIT and 331 * FAULT_FLAG_KILLABLE are not straightforward. The "Caution" 332 * recommendation in __lock_page_or_retry is not an understatement. 333 * 334 * If FAULT_FLAG_ALLOW_RETRY is set, the mmap_sem must be released 335 * before returning VM_FAULT_RETRY only if FAULT_FLAG_RETRY_NOWAIT is 336 * not set. 337 * 338 * If FAULT_FLAG_ALLOW_RETRY is set but FAULT_FLAG_KILLABLE is not 339 * set, VM_FAULT_RETRY can still be returned if and only if there are 340 * fatal_signal_pending()s, and the mmap_sem must be released before 341 * returning it. 342 */ 343 vm_fault_t handle_userfault(struct vm_fault *vmf, unsigned long reason) 344 { 345 struct mm_struct *mm = vmf->vma->vm_mm; 346 struct userfaultfd_ctx *ctx; 347 struct userfaultfd_wait_queue uwq; 348 vm_fault_t ret = VM_FAULT_SIGBUS; 349 bool must_wait, return_to_userland; 350 long blocking_state; 351 352 /* 353 * We don't do userfault handling for the final child pid update. 354 * 355 * We also don't do userfault handling during 356 * coredumping. hugetlbfs has the special 357 * follow_hugetlb_page() to skip missing pages in the 358 * FOLL_DUMP case, anon memory also checks for FOLL_DUMP with 359 * the no_page_table() helper in follow_page_mask(), but the 360 * shmem_vm_ops->fault method is invoked even during 361 * coredumping without mmap_sem and it ends up here. 362 */ 363 if (current->flags & (PF_EXITING|PF_DUMPCORE)) 364 goto out; 365 366 /* 367 * Coredumping runs without mmap_sem so we can only check that 368 * the mmap_sem is held, if PF_DUMPCORE was not set. 369 */ 370 WARN_ON_ONCE(!rwsem_is_locked(&mm->mmap_sem)); 371 372 ctx = vmf->vma->vm_userfaultfd_ctx.ctx; 373 if (!ctx) 374 goto out; 375 376 BUG_ON(ctx->mm != mm); 377 378 VM_BUG_ON(reason & ~(VM_UFFD_MISSING|VM_UFFD_WP)); 379 VM_BUG_ON(!(reason & VM_UFFD_MISSING) ^ !!(reason & VM_UFFD_WP)); 380 381 if (ctx->features & UFFD_FEATURE_SIGBUS) 382 goto out; 383 384 /* 385 * If it's already released don't get it. This avoids to loop 386 * in __get_user_pages if userfaultfd_release waits on the 387 * caller of handle_userfault to release the mmap_sem. 388 */ 389 if (unlikely(READ_ONCE(ctx->released))) { 390 /* 391 * Don't return VM_FAULT_SIGBUS in this case, so a non 392 * cooperative manager can close the uffd after the 393 * last UFFDIO_COPY, without risking to trigger an 394 * involuntary SIGBUS if the process was starting the 395 * userfaultfd while the userfaultfd was still armed 396 * (but after the last UFFDIO_COPY). If the uffd 397 * wasn't already closed when the userfault reached 398 * this point, that would normally be solved by 399 * userfaultfd_must_wait returning 'false'. 400 * 401 * If we were to return VM_FAULT_SIGBUS here, the non 402 * cooperative manager would be instead forced to 403 * always call UFFDIO_UNREGISTER before it can safely 404 * close the uffd. 405 */ 406 ret = VM_FAULT_NOPAGE; 407 goto out; 408 } 409 410 /* 411 * Check that we can return VM_FAULT_RETRY. 412 * 413 * NOTE: it should become possible to return VM_FAULT_RETRY 414 * even if FAULT_FLAG_TRIED is set without leading to gup() 415 * -EBUSY failures, if the userfaultfd is to be extended for 416 * VM_UFFD_WP tracking and we intend to arm the userfault 417 * without first stopping userland access to the memory. For 418 * VM_UFFD_MISSING userfaults this is enough for now. 419 */ 420 if (unlikely(!(vmf->flags & FAULT_FLAG_ALLOW_RETRY))) { 421 /* 422 * Validate the invariant that nowait must allow retry 423 * to be sure not to return SIGBUS erroneously on 424 * nowait invocations. 425 */ 426 BUG_ON(vmf->flags & FAULT_FLAG_RETRY_NOWAIT); 427 #ifdef CONFIG_DEBUG_VM 428 if (printk_ratelimit()) { 429 printk(KERN_WARNING 430 "FAULT_FLAG_ALLOW_RETRY missing %x\n", 431 vmf->flags); 432 dump_stack(); 433 } 434 #endif 435 goto out; 436 } 437 438 /* 439 * Handle nowait, not much to do other than tell it to retry 440 * and wait. 441 */ 442 ret = VM_FAULT_RETRY; 443 if (vmf->flags & FAULT_FLAG_RETRY_NOWAIT) 444 goto out; 445 446 /* take the reference before dropping the mmap_sem */ 447 userfaultfd_ctx_get(ctx); 448 449 init_waitqueue_func_entry(&uwq.wq, userfaultfd_wake_function); 450 uwq.wq.private = current; 451 uwq.msg = userfault_msg(vmf->address, vmf->flags, reason, 452 ctx->features); 453 uwq.ctx = ctx; 454 uwq.waken = false; 455 456 return_to_userland = 457 (vmf->flags & (FAULT_FLAG_USER|FAULT_FLAG_KILLABLE)) == 458 (FAULT_FLAG_USER|FAULT_FLAG_KILLABLE); 459 blocking_state = return_to_userland ? TASK_INTERRUPTIBLE : 460 TASK_KILLABLE; 461 462 spin_lock(&ctx->fault_pending_wqh.lock); 463 /* 464 * After the __add_wait_queue the uwq is visible to userland 465 * through poll/read(). 466 */ 467 __add_wait_queue(&ctx->fault_pending_wqh, &uwq.wq); 468 /* 469 * The smp_mb() after __set_current_state prevents the reads 470 * following the spin_unlock to happen before the list_add in 471 * __add_wait_queue. 472 */ 473 set_current_state(blocking_state); 474 spin_unlock(&ctx->fault_pending_wqh.lock); 475 476 if (!is_vm_hugetlb_page(vmf->vma)) 477 must_wait = userfaultfd_must_wait(ctx, vmf->address, vmf->flags, 478 reason); 479 else 480 must_wait = userfaultfd_huge_must_wait(ctx, vmf->vma, 481 vmf->address, 482 vmf->flags, reason); 483 up_read(&mm->mmap_sem); 484 485 if (likely(must_wait && !READ_ONCE(ctx->released) && 486 (return_to_userland ? !signal_pending(current) : 487 !fatal_signal_pending(current)))) { 488 wake_up_poll(&ctx->fd_wqh, EPOLLIN); 489 schedule(); 490 ret |= VM_FAULT_MAJOR; 491 492 /* 493 * False wakeups can orginate even from rwsem before 494 * up_read() however userfaults will wait either for a 495 * targeted wakeup on the specific uwq waitqueue from 496 * wake_userfault() or for signals or for uffd 497 * release. 498 */ 499 while (!READ_ONCE(uwq.waken)) { 500 /* 501 * This needs the full smp_store_mb() 502 * guarantee as the state write must be 503 * visible to other CPUs before reading 504 * uwq.waken from other CPUs. 505 */ 506 set_current_state(blocking_state); 507 if (READ_ONCE(uwq.waken) || 508 READ_ONCE(ctx->released) || 509 (return_to_userland ? signal_pending(current) : 510 fatal_signal_pending(current))) 511 break; 512 schedule(); 513 } 514 } 515 516 __set_current_state(TASK_RUNNING); 517 518 if (return_to_userland) { 519 if (signal_pending(current) && 520 !fatal_signal_pending(current)) { 521 /* 522 * If we got a SIGSTOP or SIGCONT and this is 523 * a normal userland page fault, just let 524 * userland return so the signal will be 525 * handled and gdb debugging works. The page 526 * fault code immediately after we return from 527 * this function is going to release the 528 * mmap_sem and it's not depending on it 529 * (unlike gup would if we were not to return 530 * VM_FAULT_RETRY). 531 * 532 * If a fatal signal is pending we still take 533 * the streamlined VM_FAULT_RETRY failure path 534 * and there's no need to retake the mmap_sem 535 * in such case. 536 */ 537 down_read(&mm->mmap_sem); 538 ret = VM_FAULT_NOPAGE; 539 } 540 } 541 542 /* 543 * Here we race with the list_del; list_add in 544 * userfaultfd_ctx_read(), however because we don't ever run 545 * list_del_init() to refile across the two lists, the prev 546 * and next pointers will never point to self. list_add also 547 * would never let any of the two pointers to point to 548 * self. So list_empty_careful won't risk to see both pointers 549 * pointing to self at any time during the list refile. The 550 * only case where list_del_init() is called is the full 551 * removal in the wake function and there we don't re-list_add 552 * and it's fine not to block on the spinlock. The uwq on this 553 * kernel stack can be released after the list_del_init. 554 */ 555 if (!list_empty_careful(&uwq.wq.entry)) { 556 spin_lock(&ctx->fault_pending_wqh.lock); 557 /* 558 * No need of list_del_init(), the uwq on the stack 559 * will be freed shortly anyway. 560 */ 561 list_del(&uwq.wq.entry); 562 spin_unlock(&ctx->fault_pending_wqh.lock); 563 } 564 565 /* 566 * ctx may go away after this if the userfault pseudo fd is 567 * already released. 568 */ 569 userfaultfd_ctx_put(ctx); 570 571 out: 572 return ret; 573 } 574 575 static void userfaultfd_event_wait_completion(struct userfaultfd_ctx *ctx, 576 struct userfaultfd_wait_queue *ewq) 577 { 578 struct userfaultfd_ctx *release_new_ctx; 579 580 if (WARN_ON_ONCE(current->flags & PF_EXITING)) 581 goto out; 582 583 ewq->ctx = ctx; 584 init_waitqueue_entry(&ewq->wq, current); 585 release_new_ctx = NULL; 586 587 spin_lock(&ctx->event_wqh.lock); 588 /* 589 * After the __add_wait_queue the uwq is visible to userland 590 * through poll/read(). 591 */ 592 __add_wait_queue(&ctx->event_wqh, &ewq->wq); 593 for (;;) { 594 set_current_state(TASK_KILLABLE); 595 if (ewq->msg.event == 0) 596 break; 597 if (READ_ONCE(ctx->released) || 598 fatal_signal_pending(current)) { 599 /* 600 * &ewq->wq may be queued in fork_event, but 601 * __remove_wait_queue ignores the head 602 * parameter. It would be a problem if it 603 * didn't. 604 */ 605 __remove_wait_queue(&ctx->event_wqh, &ewq->wq); 606 if (ewq->msg.event == UFFD_EVENT_FORK) { 607 struct userfaultfd_ctx *new; 608 609 new = (struct userfaultfd_ctx *) 610 (unsigned long) 611 ewq->msg.arg.reserved.reserved1; 612 release_new_ctx = new; 613 } 614 break; 615 } 616 617 spin_unlock(&ctx->event_wqh.lock); 618 619 wake_up_poll(&ctx->fd_wqh, EPOLLIN); 620 schedule(); 621 622 spin_lock(&ctx->event_wqh.lock); 623 } 624 __set_current_state(TASK_RUNNING); 625 spin_unlock(&ctx->event_wqh.lock); 626 627 if (release_new_ctx) { 628 struct vm_area_struct *vma; 629 struct mm_struct *mm = release_new_ctx->mm; 630 631 /* the various vma->vm_userfaultfd_ctx still points to it */ 632 down_write(&mm->mmap_sem); 633 for (vma = mm->mmap; vma; vma = vma->vm_next) 634 if (vma->vm_userfaultfd_ctx.ctx == release_new_ctx) { 635 vma->vm_userfaultfd_ctx = NULL_VM_UFFD_CTX; 636 vma->vm_flags &= ~(VM_UFFD_WP | VM_UFFD_MISSING); 637 } 638 up_write(&mm->mmap_sem); 639 640 userfaultfd_ctx_put(release_new_ctx); 641 } 642 643 /* 644 * ctx may go away after this if the userfault pseudo fd is 645 * already released. 646 */ 647 out: 648 WRITE_ONCE(ctx->mmap_changing, false); 649 userfaultfd_ctx_put(ctx); 650 } 651 652 static void userfaultfd_event_complete(struct userfaultfd_ctx *ctx, 653 struct userfaultfd_wait_queue *ewq) 654 { 655 ewq->msg.event = 0; 656 wake_up_locked(&ctx->event_wqh); 657 __remove_wait_queue(&ctx->event_wqh, &ewq->wq); 658 } 659 660 int dup_userfaultfd(struct vm_area_struct *vma, struct list_head *fcs) 661 { 662 struct userfaultfd_ctx *ctx = NULL, *octx; 663 struct userfaultfd_fork_ctx *fctx; 664 665 octx = vma->vm_userfaultfd_ctx.ctx; 666 if (!octx || !(octx->features & UFFD_FEATURE_EVENT_FORK)) { 667 vma->vm_userfaultfd_ctx = NULL_VM_UFFD_CTX; 668 vma->vm_flags &= ~(VM_UFFD_WP | VM_UFFD_MISSING); 669 return 0; 670 } 671 672 list_for_each_entry(fctx, fcs, list) 673 if (fctx->orig == octx) { 674 ctx = fctx->new; 675 break; 676 } 677 678 if (!ctx) { 679 fctx = kmalloc(sizeof(*fctx), GFP_KERNEL); 680 if (!fctx) 681 return -ENOMEM; 682 683 ctx = kmem_cache_alloc(userfaultfd_ctx_cachep, GFP_KERNEL); 684 if (!ctx) { 685 kfree(fctx); 686 return -ENOMEM; 687 } 688 689 atomic_set(&ctx->refcount, 1); 690 ctx->flags = octx->flags; 691 ctx->state = UFFD_STATE_RUNNING; 692 ctx->features = octx->features; 693 ctx->released = false; 694 ctx->mmap_changing = false; 695 ctx->mm = vma->vm_mm; 696 mmgrab(ctx->mm); 697 698 userfaultfd_ctx_get(octx); 699 WRITE_ONCE(octx->mmap_changing, true); 700 fctx->orig = octx; 701 fctx->new = ctx; 702 list_add_tail(&fctx->list, fcs); 703 } 704 705 vma->vm_userfaultfd_ctx.ctx = ctx; 706 return 0; 707 } 708 709 static void dup_fctx(struct userfaultfd_fork_ctx *fctx) 710 { 711 struct userfaultfd_ctx *ctx = fctx->orig; 712 struct userfaultfd_wait_queue ewq; 713 714 msg_init(&ewq.msg); 715 716 ewq.msg.event = UFFD_EVENT_FORK; 717 ewq.msg.arg.reserved.reserved1 = (unsigned long)fctx->new; 718 719 userfaultfd_event_wait_completion(ctx, &ewq); 720 } 721 722 void dup_userfaultfd_complete(struct list_head *fcs) 723 { 724 struct userfaultfd_fork_ctx *fctx, *n; 725 726 list_for_each_entry_safe(fctx, n, fcs, list) { 727 dup_fctx(fctx); 728 list_del(&fctx->list); 729 kfree(fctx); 730 } 731 } 732 733 void mremap_userfaultfd_prep(struct vm_area_struct *vma, 734 struct vm_userfaultfd_ctx *vm_ctx) 735 { 736 struct userfaultfd_ctx *ctx; 737 738 ctx = vma->vm_userfaultfd_ctx.ctx; 739 if (ctx && (ctx->features & UFFD_FEATURE_EVENT_REMAP)) { 740 vm_ctx->ctx = ctx; 741 userfaultfd_ctx_get(ctx); 742 WRITE_ONCE(ctx->mmap_changing, true); 743 } 744 } 745 746 void mremap_userfaultfd_complete(struct vm_userfaultfd_ctx *vm_ctx, 747 unsigned long from, unsigned long to, 748 unsigned long len) 749 { 750 struct userfaultfd_ctx *ctx = vm_ctx->ctx; 751 struct userfaultfd_wait_queue ewq; 752 753 if (!ctx) 754 return; 755 756 if (to & ~PAGE_MASK) { 757 userfaultfd_ctx_put(ctx); 758 return; 759 } 760 761 msg_init(&ewq.msg); 762 763 ewq.msg.event = UFFD_EVENT_REMAP; 764 ewq.msg.arg.remap.from = from; 765 ewq.msg.arg.remap.to = to; 766 ewq.msg.arg.remap.len = len; 767 768 userfaultfd_event_wait_completion(ctx, &ewq); 769 } 770 771 bool userfaultfd_remove(struct vm_area_struct *vma, 772 unsigned long start, unsigned long end) 773 { 774 struct mm_struct *mm = vma->vm_mm; 775 struct userfaultfd_ctx *ctx; 776 struct userfaultfd_wait_queue ewq; 777 778 ctx = vma->vm_userfaultfd_ctx.ctx; 779 if (!ctx || !(ctx->features & UFFD_FEATURE_EVENT_REMOVE)) 780 return true; 781 782 userfaultfd_ctx_get(ctx); 783 WRITE_ONCE(ctx->mmap_changing, true); 784 up_read(&mm->mmap_sem); 785 786 msg_init(&ewq.msg); 787 788 ewq.msg.event = UFFD_EVENT_REMOVE; 789 ewq.msg.arg.remove.start = start; 790 ewq.msg.arg.remove.end = end; 791 792 userfaultfd_event_wait_completion(ctx, &ewq); 793 794 return false; 795 } 796 797 static bool has_unmap_ctx(struct userfaultfd_ctx *ctx, struct list_head *unmaps, 798 unsigned long start, unsigned long end) 799 { 800 struct userfaultfd_unmap_ctx *unmap_ctx; 801 802 list_for_each_entry(unmap_ctx, unmaps, list) 803 if (unmap_ctx->ctx == ctx && unmap_ctx->start == start && 804 unmap_ctx->end == end) 805 return true; 806 807 return false; 808 } 809 810 int userfaultfd_unmap_prep(struct vm_area_struct *vma, 811 unsigned long start, unsigned long end, 812 struct list_head *unmaps) 813 { 814 for ( ; vma && vma->vm_start < end; vma = vma->vm_next) { 815 struct userfaultfd_unmap_ctx *unmap_ctx; 816 struct userfaultfd_ctx *ctx = vma->vm_userfaultfd_ctx.ctx; 817 818 if (!ctx || !(ctx->features & UFFD_FEATURE_EVENT_UNMAP) || 819 has_unmap_ctx(ctx, unmaps, start, end)) 820 continue; 821 822 unmap_ctx = kzalloc(sizeof(*unmap_ctx), GFP_KERNEL); 823 if (!unmap_ctx) 824 return -ENOMEM; 825 826 userfaultfd_ctx_get(ctx); 827 WRITE_ONCE(ctx->mmap_changing, true); 828 unmap_ctx->ctx = ctx; 829 unmap_ctx->start = start; 830 unmap_ctx->end = end; 831 list_add_tail(&unmap_ctx->list, unmaps); 832 } 833 834 return 0; 835 } 836 837 void userfaultfd_unmap_complete(struct mm_struct *mm, struct list_head *uf) 838 { 839 struct userfaultfd_unmap_ctx *ctx, *n; 840 struct userfaultfd_wait_queue ewq; 841 842 list_for_each_entry_safe(ctx, n, uf, list) { 843 msg_init(&ewq.msg); 844 845 ewq.msg.event = UFFD_EVENT_UNMAP; 846 ewq.msg.arg.remove.start = ctx->start; 847 ewq.msg.arg.remove.end = ctx->end; 848 849 userfaultfd_event_wait_completion(ctx->ctx, &ewq); 850 851 list_del(&ctx->list); 852 kfree(ctx); 853 } 854 } 855 856 static int userfaultfd_release(struct inode *inode, struct file *file) 857 { 858 struct userfaultfd_ctx *ctx = file->private_data; 859 struct mm_struct *mm = ctx->mm; 860 struct vm_area_struct *vma, *prev; 861 /* len == 0 means wake all */ 862 struct userfaultfd_wake_range range = { .len = 0, }; 863 unsigned long new_flags; 864 865 WRITE_ONCE(ctx->released, true); 866 867 if (!mmget_not_zero(mm)) 868 goto wakeup; 869 870 /* 871 * Flush page faults out of all CPUs. NOTE: all page faults 872 * must be retried without returning VM_FAULT_SIGBUS if 873 * userfaultfd_ctx_get() succeeds but vma->vma_userfault_ctx 874 * changes while handle_userfault released the mmap_sem. So 875 * it's critical that released is set to true (above), before 876 * taking the mmap_sem for writing. 877 */ 878 down_write(&mm->mmap_sem); 879 prev = NULL; 880 for (vma = mm->mmap; vma; vma = vma->vm_next) { 881 cond_resched(); 882 BUG_ON(!!vma->vm_userfaultfd_ctx.ctx ^ 883 !!(vma->vm_flags & (VM_UFFD_MISSING | VM_UFFD_WP))); 884 if (vma->vm_userfaultfd_ctx.ctx != ctx) { 885 prev = vma; 886 continue; 887 } 888 new_flags = vma->vm_flags & ~(VM_UFFD_MISSING | VM_UFFD_WP); 889 prev = vma_merge(mm, prev, vma->vm_start, vma->vm_end, 890 new_flags, vma->anon_vma, 891 vma->vm_file, vma->vm_pgoff, 892 vma_policy(vma), 893 NULL_VM_UFFD_CTX); 894 if (prev) 895 vma = prev; 896 else 897 prev = vma; 898 vma->vm_flags = new_flags; 899 vma->vm_userfaultfd_ctx = NULL_VM_UFFD_CTX; 900 } 901 up_write(&mm->mmap_sem); 902 mmput(mm); 903 wakeup: 904 /* 905 * After no new page faults can wait on this fault_*wqh, flush 906 * the last page faults that may have been already waiting on 907 * the fault_*wqh. 908 */ 909 spin_lock(&ctx->fault_pending_wqh.lock); 910 __wake_up_locked_key(&ctx->fault_pending_wqh, TASK_NORMAL, &range); 911 __wake_up(&ctx->fault_wqh, TASK_NORMAL, 1, &range); 912 spin_unlock(&ctx->fault_pending_wqh.lock); 913 914 /* Flush pending events that may still wait on event_wqh */ 915 wake_up_all(&ctx->event_wqh); 916 917 wake_up_poll(&ctx->fd_wqh, EPOLLHUP); 918 userfaultfd_ctx_put(ctx); 919 return 0; 920 } 921 922 /* fault_pending_wqh.lock must be hold by the caller */ 923 static inline struct userfaultfd_wait_queue *find_userfault_in( 924 wait_queue_head_t *wqh) 925 { 926 wait_queue_entry_t *wq; 927 struct userfaultfd_wait_queue *uwq; 928 929 VM_BUG_ON(!spin_is_locked(&wqh->lock)); 930 931 uwq = NULL; 932 if (!waitqueue_active(wqh)) 933 goto out; 934 /* walk in reverse to provide FIFO behavior to read userfaults */ 935 wq = list_last_entry(&wqh->head, typeof(*wq), entry); 936 uwq = container_of(wq, struct userfaultfd_wait_queue, wq); 937 out: 938 return uwq; 939 } 940 941 static inline struct userfaultfd_wait_queue *find_userfault( 942 struct userfaultfd_ctx *ctx) 943 { 944 return find_userfault_in(&ctx->fault_pending_wqh); 945 } 946 947 static inline struct userfaultfd_wait_queue *find_userfault_evt( 948 struct userfaultfd_ctx *ctx) 949 { 950 return find_userfault_in(&ctx->event_wqh); 951 } 952 953 static __poll_t userfaultfd_poll(struct file *file, poll_table *wait) 954 { 955 struct userfaultfd_ctx *ctx = file->private_data; 956 __poll_t ret; 957 958 poll_wait(file, &ctx->fd_wqh, wait); 959 960 switch (ctx->state) { 961 case UFFD_STATE_WAIT_API: 962 return EPOLLERR; 963 case UFFD_STATE_RUNNING: 964 /* 965 * poll() never guarantees that read won't block. 966 * userfaults can be waken before they're read(). 967 */ 968 if (unlikely(!(file->f_flags & O_NONBLOCK))) 969 return EPOLLERR; 970 /* 971 * lockless access to see if there are pending faults 972 * __pollwait last action is the add_wait_queue but 973 * the spin_unlock would allow the waitqueue_active to 974 * pass above the actual list_add inside 975 * add_wait_queue critical section. So use a full 976 * memory barrier to serialize the list_add write of 977 * add_wait_queue() with the waitqueue_active read 978 * below. 979 */ 980 ret = 0; 981 smp_mb(); 982 if (waitqueue_active(&ctx->fault_pending_wqh)) 983 ret = EPOLLIN; 984 else if (waitqueue_active(&ctx->event_wqh)) 985 ret = EPOLLIN; 986 987 return ret; 988 default: 989 WARN_ON_ONCE(1); 990 return EPOLLERR; 991 } 992 } 993 994 static const struct file_operations userfaultfd_fops; 995 996 static int resolve_userfault_fork(struct userfaultfd_ctx *ctx, 997 struct userfaultfd_ctx *new, 998 struct uffd_msg *msg) 999 { 1000 int fd; 1001 1002 fd = anon_inode_getfd("[userfaultfd]", &userfaultfd_fops, new, 1003 O_RDWR | (new->flags & UFFD_SHARED_FCNTL_FLAGS)); 1004 if (fd < 0) 1005 return fd; 1006 1007 msg->arg.reserved.reserved1 = 0; 1008 msg->arg.fork.ufd = fd; 1009 return 0; 1010 } 1011 1012 static ssize_t userfaultfd_ctx_read(struct userfaultfd_ctx *ctx, int no_wait, 1013 struct uffd_msg *msg) 1014 { 1015 ssize_t ret; 1016 DECLARE_WAITQUEUE(wait, current); 1017 struct userfaultfd_wait_queue *uwq; 1018 /* 1019 * Handling fork event requires sleeping operations, so 1020 * we drop the event_wqh lock, then do these ops, then 1021 * lock it back and wake up the waiter. While the lock is 1022 * dropped the ewq may go away so we keep track of it 1023 * carefully. 1024 */ 1025 LIST_HEAD(fork_event); 1026 struct userfaultfd_ctx *fork_nctx = NULL; 1027 1028 /* always take the fd_wqh lock before the fault_pending_wqh lock */ 1029 spin_lock(&ctx->fd_wqh.lock); 1030 __add_wait_queue(&ctx->fd_wqh, &wait); 1031 for (;;) { 1032 set_current_state(TASK_INTERRUPTIBLE); 1033 spin_lock(&ctx->fault_pending_wqh.lock); 1034 uwq = find_userfault(ctx); 1035 if (uwq) { 1036 /* 1037 * Use a seqcount to repeat the lockless check 1038 * in wake_userfault() to avoid missing 1039 * wakeups because during the refile both 1040 * waitqueue could become empty if this is the 1041 * only userfault. 1042 */ 1043 write_seqcount_begin(&ctx->refile_seq); 1044 1045 /* 1046 * The fault_pending_wqh.lock prevents the uwq 1047 * to disappear from under us. 1048 * 1049 * Refile this userfault from 1050 * fault_pending_wqh to fault_wqh, it's not 1051 * pending anymore after we read it. 1052 * 1053 * Use list_del() by hand (as 1054 * userfaultfd_wake_function also uses 1055 * list_del_init() by hand) to be sure nobody 1056 * changes __remove_wait_queue() to use 1057 * list_del_init() in turn breaking the 1058 * !list_empty_careful() check in 1059 * handle_userfault(). The uwq->wq.head list 1060 * must never be empty at any time during the 1061 * refile, or the waitqueue could disappear 1062 * from under us. The "wait_queue_head_t" 1063 * parameter of __remove_wait_queue() is unused 1064 * anyway. 1065 */ 1066 list_del(&uwq->wq.entry); 1067 add_wait_queue(&ctx->fault_wqh, &uwq->wq); 1068 1069 write_seqcount_end(&ctx->refile_seq); 1070 1071 /* careful to always initialize msg if ret == 0 */ 1072 *msg = uwq->msg; 1073 spin_unlock(&ctx->fault_pending_wqh.lock); 1074 ret = 0; 1075 break; 1076 } 1077 spin_unlock(&ctx->fault_pending_wqh.lock); 1078 1079 spin_lock(&ctx->event_wqh.lock); 1080 uwq = find_userfault_evt(ctx); 1081 if (uwq) { 1082 *msg = uwq->msg; 1083 1084 if (uwq->msg.event == UFFD_EVENT_FORK) { 1085 fork_nctx = (struct userfaultfd_ctx *) 1086 (unsigned long) 1087 uwq->msg.arg.reserved.reserved1; 1088 list_move(&uwq->wq.entry, &fork_event); 1089 /* 1090 * fork_nctx can be freed as soon as 1091 * we drop the lock, unless we take a 1092 * reference on it. 1093 */ 1094 userfaultfd_ctx_get(fork_nctx); 1095 spin_unlock(&ctx->event_wqh.lock); 1096 ret = 0; 1097 break; 1098 } 1099 1100 userfaultfd_event_complete(ctx, uwq); 1101 spin_unlock(&ctx->event_wqh.lock); 1102 ret = 0; 1103 break; 1104 } 1105 spin_unlock(&ctx->event_wqh.lock); 1106 1107 if (signal_pending(current)) { 1108 ret = -ERESTARTSYS; 1109 break; 1110 } 1111 if (no_wait) { 1112 ret = -EAGAIN; 1113 break; 1114 } 1115 spin_unlock(&ctx->fd_wqh.lock); 1116 schedule(); 1117 spin_lock(&ctx->fd_wqh.lock); 1118 } 1119 __remove_wait_queue(&ctx->fd_wqh, &wait); 1120 __set_current_state(TASK_RUNNING); 1121 spin_unlock(&ctx->fd_wqh.lock); 1122 1123 if (!ret && msg->event == UFFD_EVENT_FORK) { 1124 ret = resolve_userfault_fork(ctx, fork_nctx, msg); 1125 spin_lock(&ctx->event_wqh.lock); 1126 if (!list_empty(&fork_event)) { 1127 /* 1128 * The fork thread didn't abort, so we can 1129 * drop the temporary refcount. 1130 */ 1131 userfaultfd_ctx_put(fork_nctx); 1132 1133 uwq = list_first_entry(&fork_event, 1134 typeof(*uwq), 1135 wq.entry); 1136 /* 1137 * If fork_event list wasn't empty and in turn 1138 * the event wasn't already released by fork 1139 * (the event is allocated on fork kernel 1140 * stack), put the event back to its place in 1141 * the event_wq. fork_event head will be freed 1142 * as soon as we return so the event cannot 1143 * stay queued there no matter the current 1144 * "ret" value. 1145 */ 1146 list_del(&uwq->wq.entry); 1147 __add_wait_queue(&ctx->event_wqh, &uwq->wq); 1148 1149 /* 1150 * Leave the event in the waitqueue and report 1151 * error to userland if we failed to resolve 1152 * the userfault fork. 1153 */ 1154 if (likely(!ret)) 1155 userfaultfd_event_complete(ctx, uwq); 1156 } else { 1157 /* 1158 * Here the fork thread aborted and the 1159 * refcount from the fork thread on fork_nctx 1160 * has already been released. We still hold 1161 * the reference we took before releasing the 1162 * lock above. If resolve_userfault_fork 1163 * failed we've to drop it because the 1164 * fork_nctx has to be freed in such case. If 1165 * it succeeded we'll hold it because the new 1166 * uffd references it. 1167 */ 1168 if (ret) 1169 userfaultfd_ctx_put(fork_nctx); 1170 } 1171 spin_unlock(&ctx->event_wqh.lock); 1172 } 1173 1174 return ret; 1175 } 1176 1177 static ssize_t userfaultfd_read(struct file *file, char __user *buf, 1178 size_t count, loff_t *ppos) 1179 { 1180 struct userfaultfd_ctx *ctx = file->private_data; 1181 ssize_t _ret, ret = 0; 1182 struct uffd_msg msg; 1183 int no_wait = file->f_flags & O_NONBLOCK; 1184 1185 if (ctx->state == UFFD_STATE_WAIT_API) 1186 return -EINVAL; 1187 1188 for (;;) { 1189 if (count < sizeof(msg)) 1190 return ret ? ret : -EINVAL; 1191 _ret = userfaultfd_ctx_read(ctx, no_wait, &msg); 1192 if (_ret < 0) 1193 return ret ? ret : _ret; 1194 if (copy_to_user((__u64 __user *) buf, &msg, sizeof(msg))) 1195 return ret ? ret : -EFAULT; 1196 ret += sizeof(msg); 1197 buf += sizeof(msg); 1198 count -= sizeof(msg); 1199 /* 1200 * Allow to read more than one fault at time but only 1201 * block if waiting for the very first one. 1202 */ 1203 no_wait = O_NONBLOCK; 1204 } 1205 } 1206 1207 static void __wake_userfault(struct userfaultfd_ctx *ctx, 1208 struct userfaultfd_wake_range *range) 1209 { 1210 spin_lock(&ctx->fault_pending_wqh.lock); 1211 /* wake all in the range and autoremove */ 1212 if (waitqueue_active(&ctx->fault_pending_wqh)) 1213 __wake_up_locked_key(&ctx->fault_pending_wqh, TASK_NORMAL, 1214 range); 1215 if (waitqueue_active(&ctx->fault_wqh)) 1216 __wake_up(&ctx->fault_wqh, TASK_NORMAL, 1, range); 1217 spin_unlock(&ctx->fault_pending_wqh.lock); 1218 } 1219 1220 static __always_inline void wake_userfault(struct userfaultfd_ctx *ctx, 1221 struct userfaultfd_wake_range *range) 1222 { 1223 unsigned seq; 1224 bool need_wakeup; 1225 1226 /* 1227 * To be sure waitqueue_active() is not reordered by the CPU 1228 * before the pagetable update, use an explicit SMP memory 1229 * barrier here. PT lock release or up_read(mmap_sem) still 1230 * have release semantics that can allow the 1231 * waitqueue_active() to be reordered before the pte update. 1232 */ 1233 smp_mb(); 1234 1235 /* 1236 * Use waitqueue_active because it's very frequent to 1237 * change the address space atomically even if there are no 1238 * userfaults yet. So we take the spinlock only when we're 1239 * sure we've userfaults to wake. 1240 */ 1241 do { 1242 seq = read_seqcount_begin(&ctx->refile_seq); 1243 need_wakeup = waitqueue_active(&ctx->fault_pending_wqh) || 1244 waitqueue_active(&ctx->fault_wqh); 1245 cond_resched(); 1246 } while (read_seqcount_retry(&ctx->refile_seq, seq)); 1247 if (need_wakeup) 1248 __wake_userfault(ctx, range); 1249 } 1250 1251 static __always_inline int validate_range(struct mm_struct *mm, 1252 __u64 start, __u64 len) 1253 { 1254 __u64 task_size = mm->task_size; 1255 1256 if (start & ~PAGE_MASK) 1257 return -EINVAL; 1258 if (len & ~PAGE_MASK) 1259 return -EINVAL; 1260 if (!len) 1261 return -EINVAL; 1262 if (start < mmap_min_addr) 1263 return -EINVAL; 1264 if (start >= task_size) 1265 return -EINVAL; 1266 if (len > task_size - start) 1267 return -EINVAL; 1268 return 0; 1269 } 1270 1271 static inline bool vma_can_userfault(struct vm_area_struct *vma) 1272 { 1273 return vma_is_anonymous(vma) || is_vm_hugetlb_page(vma) || 1274 vma_is_shmem(vma); 1275 } 1276 1277 static int userfaultfd_register(struct userfaultfd_ctx *ctx, 1278 unsigned long arg) 1279 { 1280 struct mm_struct *mm = ctx->mm; 1281 struct vm_area_struct *vma, *prev, *cur; 1282 int ret; 1283 struct uffdio_register uffdio_register; 1284 struct uffdio_register __user *user_uffdio_register; 1285 unsigned long vm_flags, new_flags; 1286 bool found; 1287 bool basic_ioctls; 1288 unsigned long start, end, vma_end; 1289 1290 user_uffdio_register = (struct uffdio_register __user *) arg; 1291 1292 ret = -EFAULT; 1293 if (copy_from_user(&uffdio_register, user_uffdio_register, 1294 sizeof(uffdio_register)-sizeof(__u64))) 1295 goto out; 1296 1297 ret = -EINVAL; 1298 if (!uffdio_register.mode) 1299 goto out; 1300 if (uffdio_register.mode & ~(UFFDIO_REGISTER_MODE_MISSING| 1301 UFFDIO_REGISTER_MODE_WP)) 1302 goto out; 1303 vm_flags = 0; 1304 if (uffdio_register.mode & UFFDIO_REGISTER_MODE_MISSING) 1305 vm_flags |= VM_UFFD_MISSING; 1306 if (uffdio_register.mode & UFFDIO_REGISTER_MODE_WP) { 1307 vm_flags |= VM_UFFD_WP; 1308 /* 1309 * FIXME: remove the below error constraint by 1310 * implementing the wprotect tracking mode. 1311 */ 1312 ret = -EINVAL; 1313 goto out; 1314 } 1315 1316 ret = validate_range(mm, uffdio_register.range.start, 1317 uffdio_register.range.len); 1318 if (ret) 1319 goto out; 1320 1321 start = uffdio_register.range.start; 1322 end = start + uffdio_register.range.len; 1323 1324 ret = -ENOMEM; 1325 if (!mmget_not_zero(mm)) 1326 goto out; 1327 1328 down_write(&mm->mmap_sem); 1329 vma = find_vma_prev(mm, start, &prev); 1330 if (!vma) 1331 goto out_unlock; 1332 1333 /* check that there's at least one vma in the range */ 1334 ret = -EINVAL; 1335 if (vma->vm_start >= end) 1336 goto out_unlock; 1337 1338 /* 1339 * If the first vma contains huge pages, make sure start address 1340 * is aligned to huge page size. 1341 */ 1342 if (is_vm_hugetlb_page(vma)) { 1343 unsigned long vma_hpagesize = vma_kernel_pagesize(vma); 1344 1345 if (start & (vma_hpagesize - 1)) 1346 goto out_unlock; 1347 } 1348 1349 /* 1350 * Search for not compatible vmas. 1351 */ 1352 found = false; 1353 basic_ioctls = false; 1354 for (cur = vma; cur && cur->vm_start < end; cur = cur->vm_next) { 1355 cond_resched(); 1356 1357 BUG_ON(!!cur->vm_userfaultfd_ctx.ctx ^ 1358 !!(cur->vm_flags & (VM_UFFD_MISSING | VM_UFFD_WP))); 1359 1360 /* check not compatible vmas */ 1361 ret = -EINVAL; 1362 if (!vma_can_userfault(cur)) 1363 goto out_unlock; 1364 /* 1365 * If this vma contains ending address, and huge pages 1366 * check alignment. 1367 */ 1368 if (is_vm_hugetlb_page(cur) && end <= cur->vm_end && 1369 end > cur->vm_start) { 1370 unsigned long vma_hpagesize = vma_kernel_pagesize(cur); 1371 1372 ret = -EINVAL; 1373 1374 if (end & (vma_hpagesize - 1)) 1375 goto out_unlock; 1376 } 1377 1378 /* 1379 * Check that this vma isn't already owned by a 1380 * different userfaultfd. We can't allow more than one 1381 * userfaultfd to own a single vma simultaneously or we 1382 * wouldn't know which one to deliver the userfaults to. 1383 */ 1384 ret = -EBUSY; 1385 if (cur->vm_userfaultfd_ctx.ctx && 1386 cur->vm_userfaultfd_ctx.ctx != ctx) 1387 goto out_unlock; 1388 1389 /* 1390 * Note vmas containing huge pages 1391 */ 1392 if (is_vm_hugetlb_page(cur)) 1393 basic_ioctls = true; 1394 1395 found = true; 1396 } 1397 BUG_ON(!found); 1398 1399 if (vma->vm_start < start) 1400 prev = vma; 1401 1402 ret = 0; 1403 do { 1404 cond_resched(); 1405 1406 BUG_ON(!vma_can_userfault(vma)); 1407 BUG_ON(vma->vm_userfaultfd_ctx.ctx && 1408 vma->vm_userfaultfd_ctx.ctx != ctx); 1409 1410 /* 1411 * Nothing to do: this vma is already registered into this 1412 * userfaultfd and with the right tracking mode too. 1413 */ 1414 if (vma->vm_userfaultfd_ctx.ctx == ctx && 1415 (vma->vm_flags & vm_flags) == vm_flags) 1416 goto skip; 1417 1418 if (vma->vm_start > start) 1419 start = vma->vm_start; 1420 vma_end = min(end, vma->vm_end); 1421 1422 new_flags = (vma->vm_flags & ~vm_flags) | vm_flags; 1423 prev = vma_merge(mm, prev, start, vma_end, new_flags, 1424 vma->anon_vma, vma->vm_file, vma->vm_pgoff, 1425 vma_policy(vma), 1426 ((struct vm_userfaultfd_ctx){ ctx })); 1427 if (prev) { 1428 vma = prev; 1429 goto next; 1430 } 1431 if (vma->vm_start < start) { 1432 ret = split_vma(mm, vma, start, 1); 1433 if (ret) 1434 break; 1435 } 1436 if (vma->vm_end > end) { 1437 ret = split_vma(mm, vma, end, 0); 1438 if (ret) 1439 break; 1440 } 1441 next: 1442 /* 1443 * In the vma_merge() successful mprotect-like case 8: 1444 * the next vma was merged into the current one and 1445 * the current one has not been updated yet. 1446 */ 1447 vma->vm_flags = new_flags; 1448 vma->vm_userfaultfd_ctx.ctx = ctx; 1449 1450 skip: 1451 prev = vma; 1452 start = vma->vm_end; 1453 vma = vma->vm_next; 1454 } while (vma && vma->vm_start < end); 1455 out_unlock: 1456 up_write(&mm->mmap_sem); 1457 mmput(mm); 1458 if (!ret) { 1459 /* 1460 * Now that we scanned all vmas we can already tell 1461 * userland which ioctls methods are guaranteed to 1462 * succeed on this range. 1463 */ 1464 if (put_user(basic_ioctls ? UFFD_API_RANGE_IOCTLS_BASIC : 1465 UFFD_API_RANGE_IOCTLS, 1466 &user_uffdio_register->ioctls)) 1467 ret = -EFAULT; 1468 } 1469 out: 1470 return ret; 1471 } 1472 1473 static int userfaultfd_unregister(struct userfaultfd_ctx *ctx, 1474 unsigned long arg) 1475 { 1476 struct mm_struct *mm = ctx->mm; 1477 struct vm_area_struct *vma, *prev, *cur; 1478 int ret; 1479 struct uffdio_range uffdio_unregister; 1480 unsigned long new_flags; 1481 bool found; 1482 unsigned long start, end, vma_end; 1483 const void __user *buf = (void __user *)arg; 1484 1485 ret = -EFAULT; 1486 if (copy_from_user(&uffdio_unregister, buf, sizeof(uffdio_unregister))) 1487 goto out; 1488 1489 ret = validate_range(mm, uffdio_unregister.start, 1490 uffdio_unregister.len); 1491 if (ret) 1492 goto out; 1493 1494 start = uffdio_unregister.start; 1495 end = start + uffdio_unregister.len; 1496 1497 ret = -ENOMEM; 1498 if (!mmget_not_zero(mm)) 1499 goto out; 1500 1501 down_write(&mm->mmap_sem); 1502 vma = find_vma_prev(mm, start, &prev); 1503 if (!vma) 1504 goto out_unlock; 1505 1506 /* check that there's at least one vma in the range */ 1507 ret = -EINVAL; 1508 if (vma->vm_start >= end) 1509 goto out_unlock; 1510 1511 /* 1512 * If the first vma contains huge pages, make sure start address 1513 * is aligned to huge page size. 1514 */ 1515 if (is_vm_hugetlb_page(vma)) { 1516 unsigned long vma_hpagesize = vma_kernel_pagesize(vma); 1517 1518 if (start & (vma_hpagesize - 1)) 1519 goto out_unlock; 1520 } 1521 1522 /* 1523 * Search for not compatible vmas. 1524 */ 1525 found = false; 1526 ret = -EINVAL; 1527 for (cur = vma; cur && cur->vm_start < end; cur = cur->vm_next) { 1528 cond_resched(); 1529 1530 BUG_ON(!!cur->vm_userfaultfd_ctx.ctx ^ 1531 !!(cur->vm_flags & (VM_UFFD_MISSING | VM_UFFD_WP))); 1532 1533 /* 1534 * Check not compatible vmas, not strictly required 1535 * here as not compatible vmas cannot have an 1536 * userfaultfd_ctx registered on them, but this 1537 * provides for more strict behavior to notice 1538 * unregistration errors. 1539 */ 1540 if (!vma_can_userfault(cur)) 1541 goto out_unlock; 1542 1543 found = true; 1544 } 1545 BUG_ON(!found); 1546 1547 if (vma->vm_start < start) 1548 prev = vma; 1549 1550 ret = 0; 1551 do { 1552 cond_resched(); 1553 1554 BUG_ON(!vma_can_userfault(vma)); 1555 1556 /* 1557 * Nothing to do: this vma is already registered into this 1558 * userfaultfd and with the right tracking mode too. 1559 */ 1560 if (!vma->vm_userfaultfd_ctx.ctx) 1561 goto skip; 1562 1563 if (vma->vm_start > start) 1564 start = vma->vm_start; 1565 vma_end = min(end, vma->vm_end); 1566 1567 if (userfaultfd_missing(vma)) { 1568 /* 1569 * Wake any concurrent pending userfault while 1570 * we unregister, so they will not hang 1571 * permanently and it avoids userland to call 1572 * UFFDIO_WAKE explicitly. 1573 */ 1574 struct userfaultfd_wake_range range; 1575 range.start = start; 1576 range.len = vma_end - start; 1577 wake_userfault(vma->vm_userfaultfd_ctx.ctx, &range); 1578 } 1579 1580 new_flags = vma->vm_flags & ~(VM_UFFD_MISSING | VM_UFFD_WP); 1581 prev = vma_merge(mm, prev, start, vma_end, new_flags, 1582 vma->anon_vma, vma->vm_file, vma->vm_pgoff, 1583 vma_policy(vma), 1584 NULL_VM_UFFD_CTX); 1585 if (prev) { 1586 vma = prev; 1587 goto next; 1588 } 1589 if (vma->vm_start < start) { 1590 ret = split_vma(mm, vma, start, 1); 1591 if (ret) 1592 break; 1593 } 1594 if (vma->vm_end > end) { 1595 ret = split_vma(mm, vma, end, 0); 1596 if (ret) 1597 break; 1598 } 1599 next: 1600 /* 1601 * In the vma_merge() successful mprotect-like case 8: 1602 * the next vma was merged into the current one and 1603 * the current one has not been updated yet. 1604 */ 1605 vma->vm_flags = new_flags; 1606 vma->vm_userfaultfd_ctx = NULL_VM_UFFD_CTX; 1607 1608 skip: 1609 prev = vma; 1610 start = vma->vm_end; 1611 vma = vma->vm_next; 1612 } while (vma && vma->vm_start < end); 1613 out_unlock: 1614 up_write(&mm->mmap_sem); 1615 mmput(mm); 1616 out: 1617 return ret; 1618 } 1619 1620 /* 1621 * userfaultfd_wake may be used in combination with the 1622 * UFFDIO_*_MODE_DONTWAKE to wakeup userfaults in batches. 1623 */ 1624 static int userfaultfd_wake(struct userfaultfd_ctx *ctx, 1625 unsigned long arg) 1626 { 1627 int ret; 1628 struct uffdio_range uffdio_wake; 1629 struct userfaultfd_wake_range range; 1630 const void __user *buf = (void __user *)arg; 1631 1632 ret = -EFAULT; 1633 if (copy_from_user(&uffdio_wake, buf, sizeof(uffdio_wake))) 1634 goto out; 1635 1636 ret = validate_range(ctx->mm, uffdio_wake.start, uffdio_wake.len); 1637 if (ret) 1638 goto out; 1639 1640 range.start = uffdio_wake.start; 1641 range.len = uffdio_wake.len; 1642 1643 /* 1644 * len == 0 means wake all and we don't want to wake all here, 1645 * so check it again to be sure. 1646 */ 1647 VM_BUG_ON(!range.len); 1648 1649 wake_userfault(ctx, &range); 1650 ret = 0; 1651 1652 out: 1653 return ret; 1654 } 1655 1656 static int userfaultfd_copy(struct userfaultfd_ctx *ctx, 1657 unsigned long arg) 1658 { 1659 __s64 ret; 1660 struct uffdio_copy uffdio_copy; 1661 struct uffdio_copy __user *user_uffdio_copy; 1662 struct userfaultfd_wake_range range; 1663 1664 user_uffdio_copy = (struct uffdio_copy __user *) arg; 1665 1666 ret = -EAGAIN; 1667 if (READ_ONCE(ctx->mmap_changing)) 1668 goto out; 1669 1670 ret = -EFAULT; 1671 if (copy_from_user(&uffdio_copy, user_uffdio_copy, 1672 /* don't copy "copy" last field */ 1673 sizeof(uffdio_copy)-sizeof(__s64))) 1674 goto out; 1675 1676 ret = validate_range(ctx->mm, uffdio_copy.dst, uffdio_copy.len); 1677 if (ret) 1678 goto out; 1679 /* 1680 * double check for wraparound just in case. copy_from_user() 1681 * will later check uffdio_copy.src + uffdio_copy.len to fit 1682 * in the userland range. 1683 */ 1684 ret = -EINVAL; 1685 if (uffdio_copy.src + uffdio_copy.len <= uffdio_copy.src) 1686 goto out; 1687 if (uffdio_copy.mode & ~UFFDIO_COPY_MODE_DONTWAKE) 1688 goto out; 1689 if (mmget_not_zero(ctx->mm)) { 1690 ret = mcopy_atomic(ctx->mm, uffdio_copy.dst, uffdio_copy.src, 1691 uffdio_copy.len, &ctx->mmap_changing); 1692 mmput(ctx->mm); 1693 } else { 1694 return -ESRCH; 1695 } 1696 if (unlikely(put_user(ret, &user_uffdio_copy->copy))) 1697 return -EFAULT; 1698 if (ret < 0) 1699 goto out; 1700 BUG_ON(!ret); 1701 /* len == 0 would wake all */ 1702 range.len = ret; 1703 if (!(uffdio_copy.mode & UFFDIO_COPY_MODE_DONTWAKE)) { 1704 range.start = uffdio_copy.dst; 1705 wake_userfault(ctx, &range); 1706 } 1707 ret = range.len == uffdio_copy.len ? 0 : -EAGAIN; 1708 out: 1709 return ret; 1710 } 1711 1712 static int userfaultfd_zeropage(struct userfaultfd_ctx *ctx, 1713 unsigned long arg) 1714 { 1715 __s64 ret; 1716 struct uffdio_zeropage uffdio_zeropage; 1717 struct uffdio_zeropage __user *user_uffdio_zeropage; 1718 struct userfaultfd_wake_range range; 1719 1720 user_uffdio_zeropage = (struct uffdio_zeropage __user *) arg; 1721 1722 ret = -EAGAIN; 1723 if (READ_ONCE(ctx->mmap_changing)) 1724 goto out; 1725 1726 ret = -EFAULT; 1727 if (copy_from_user(&uffdio_zeropage, user_uffdio_zeropage, 1728 /* don't copy "zeropage" last field */ 1729 sizeof(uffdio_zeropage)-sizeof(__s64))) 1730 goto out; 1731 1732 ret = validate_range(ctx->mm, uffdio_zeropage.range.start, 1733 uffdio_zeropage.range.len); 1734 if (ret) 1735 goto out; 1736 ret = -EINVAL; 1737 if (uffdio_zeropage.mode & ~UFFDIO_ZEROPAGE_MODE_DONTWAKE) 1738 goto out; 1739 1740 if (mmget_not_zero(ctx->mm)) { 1741 ret = mfill_zeropage(ctx->mm, uffdio_zeropage.range.start, 1742 uffdio_zeropage.range.len, 1743 &ctx->mmap_changing); 1744 mmput(ctx->mm); 1745 } else { 1746 return -ESRCH; 1747 } 1748 if (unlikely(put_user(ret, &user_uffdio_zeropage->zeropage))) 1749 return -EFAULT; 1750 if (ret < 0) 1751 goto out; 1752 /* len == 0 would wake all */ 1753 BUG_ON(!ret); 1754 range.len = ret; 1755 if (!(uffdio_zeropage.mode & UFFDIO_ZEROPAGE_MODE_DONTWAKE)) { 1756 range.start = uffdio_zeropage.range.start; 1757 wake_userfault(ctx, &range); 1758 } 1759 ret = range.len == uffdio_zeropage.range.len ? 0 : -EAGAIN; 1760 out: 1761 return ret; 1762 } 1763 1764 static inline unsigned int uffd_ctx_features(__u64 user_features) 1765 { 1766 /* 1767 * For the current set of features the bits just coincide 1768 */ 1769 return (unsigned int)user_features; 1770 } 1771 1772 /* 1773 * userland asks for a certain API version and we return which bits 1774 * and ioctl commands are implemented in this kernel for such API 1775 * version or -EINVAL if unknown. 1776 */ 1777 static int userfaultfd_api(struct userfaultfd_ctx *ctx, 1778 unsigned long arg) 1779 { 1780 struct uffdio_api uffdio_api; 1781 void __user *buf = (void __user *)arg; 1782 int ret; 1783 __u64 features; 1784 1785 ret = -EINVAL; 1786 if (ctx->state != UFFD_STATE_WAIT_API) 1787 goto out; 1788 ret = -EFAULT; 1789 if (copy_from_user(&uffdio_api, buf, sizeof(uffdio_api))) 1790 goto out; 1791 features = uffdio_api.features; 1792 if (uffdio_api.api != UFFD_API || (features & ~UFFD_API_FEATURES)) { 1793 memset(&uffdio_api, 0, sizeof(uffdio_api)); 1794 if (copy_to_user(buf, &uffdio_api, sizeof(uffdio_api))) 1795 goto out; 1796 ret = -EINVAL; 1797 goto out; 1798 } 1799 /* report all available features and ioctls to userland */ 1800 uffdio_api.features = UFFD_API_FEATURES; 1801 uffdio_api.ioctls = UFFD_API_IOCTLS; 1802 ret = -EFAULT; 1803 if (copy_to_user(buf, &uffdio_api, sizeof(uffdio_api))) 1804 goto out; 1805 ctx->state = UFFD_STATE_RUNNING; 1806 /* only enable the requested features for this uffd context */ 1807 ctx->features = uffd_ctx_features(features); 1808 ret = 0; 1809 out: 1810 return ret; 1811 } 1812 1813 static long userfaultfd_ioctl(struct file *file, unsigned cmd, 1814 unsigned long arg) 1815 { 1816 int ret = -EINVAL; 1817 struct userfaultfd_ctx *ctx = file->private_data; 1818 1819 if (cmd != UFFDIO_API && ctx->state == UFFD_STATE_WAIT_API) 1820 return -EINVAL; 1821 1822 switch(cmd) { 1823 case UFFDIO_API: 1824 ret = userfaultfd_api(ctx, arg); 1825 break; 1826 case UFFDIO_REGISTER: 1827 ret = userfaultfd_register(ctx, arg); 1828 break; 1829 case UFFDIO_UNREGISTER: 1830 ret = userfaultfd_unregister(ctx, arg); 1831 break; 1832 case UFFDIO_WAKE: 1833 ret = userfaultfd_wake(ctx, arg); 1834 break; 1835 case UFFDIO_COPY: 1836 ret = userfaultfd_copy(ctx, arg); 1837 break; 1838 case UFFDIO_ZEROPAGE: 1839 ret = userfaultfd_zeropage(ctx, arg); 1840 break; 1841 } 1842 return ret; 1843 } 1844 1845 #ifdef CONFIG_PROC_FS 1846 static void userfaultfd_show_fdinfo(struct seq_file *m, struct file *f) 1847 { 1848 struct userfaultfd_ctx *ctx = f->private_data; 1849 wait_queue_entry_t *wq; 1850 unsigned long pending = 0, total = 0; 1851 1852 spin_lock(&ctx->fault_pending_wqh.lock); 1853 list_for_each_entry(wq, &ctx->fault_pending_wqh.head, entry) { 1854 pending++; 1855 total++; 1856 } 1857 list_for_each_entry(wq, &ctx->fault_wqh.head, entry) { 1858 total++; 1859 } 1860 spin_unlock(&ctx->fault_pending_wqh.lock); 1861 1862 /* 1863 * If more protocols will be added, there will be all shown 1864 * separated by a space. Like this: 1865 * protocols: aa:... bb:... 1866 */ 1867 seq_printf(m, "pending:\t%lu\ntotal:\t%lu\nAPI:\t%Lx:%x:%Lx\n", 1868 pending, total, UFFD_API, ctx->features, 1869 UFFD_API_IOCTLS|UFFD_API_RANGE_IOCTLS); 1870 } 1871 #endif 1872 1873 static const struct file_operations userfaultfd_fops = { 1874 #ifdef CONFIG_PROC_FS 1875 .show_fdinfo = userfaultfd_show_fdinfo, 1876 #endif 1877 .release = userfaultfd_release, 1878 .poll = userfaultfd_poll, 1879 .read = userfaultfd_read, 1880 .unlocked_ioctl = userfaultfd_ioctl, 1881 .compat_ioctl = userfaultfd_ioctl, 1882 .llseek = noop_llseek, 1883 }; 1884 1885 static void init_once_userfaultfd_ctx(void *mem) 1886 { 1887 struct userfaultfd_ctx *ctx = (struct userfaultfd_ctx *) mem; 1888 1889 init_waitqueue_head(&ctx->fault_pending_wqh); 1890 init_waitqueue_head(&ctx->fault_wqh); 1891 init_waitqueue_head(&ctx->event_wqh); 1892 init_waitqueue_head(&ctx->fd_wqh); 1893 seqcount_init(&ctx->refile_seq); 1894 } 1895 1896 SYSCALL_DEFINE1(userfaultfd, int, flags) 1897 { 1898 struct userfaultfd_ctx *ctx; 1899 int fd; 1900 1901 BUG_ON(!current->mm); 1902 1903 /* Check the UFFD_* constants for consistency. */ 1904 BUILD_BUG_ON(UFFD_CLOEXEC != O_CLOEXEC); 1905 BUILD_BUG_ON(UFFD_NONBLOCK != O_NONBLOCK); 1906 1907 if (flags & ~UFFD_SHARED_FCNTL_FLAGS) 1908 return -EINVAL; 1909 1910 ctx = kmem_cache_alloc(userfaultfd_ctx_cachep, GFP_KERNEL); 1911 if (!ctx) 1912 return -ENOMEM; 1913 1914 atomic_set(&ctx->refcount, 1); 1915 ctx->flags = flags; 1916 ctx->features = 0; 1917 ctx->state = UFFD_STATE_WAIT_API; 1918 ctx->released = false; 1919 ctx->mmap_changing = false; 1920 ctx->mm = current->mm; 1921 /* prevent the mm struct to be freed */ 1922 mmgrab(ctx->mm); 1923 1924 fd = anon_inode_getfd("[userfaultfd]", &userfaultfd_fops, ctx, 1925 O_RDWR | (flags & UFFD_SHARED_FCNTL_FLAGS)); 1926 if (fd < 0) { 1927 mmdrop(ctx->mm); 1928 kmem_cache_free(userfaultfd_ctx_cachep, ctx); 1929 } 1930 return fd; 1931 } 1932 1933 static int __init userfaultfd_init(void) 1934 { 1935 userfaultfd_ctx_cachep = kmem_cache_create("userfaultfd_ctx_cache", 1936 sizeof(struct userfaultfd_ctx), 1937 0, 1938 SLAB_HWCACHE_ALIGN|SLAB_PANIC, 1939 init_once_userfaultfd_ctx); 1940 return 0; 1941 } 1942 __initcall(userfaultfd_init); 1943