userfaultfd.c (90794bf19dc19691a16b71bcd75c04094d9e392d) | userfaultfd.c (05ce77249d5068b057082d24ec22d3824f4816ac) |
---|---|
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 --- 619 unchanged lines hidden (view full) --- 628 ewq.msg.event = UFFD_EVENT_REMAP; 629 ewq.msg.arg.remap.from = from; 630 ewq.msg.arg.remap.to = to; 631 ewq.msg.arg.remap.len = len; 632 633 userfaultfd_event_wait_completion(ctx, &ewq); 634} 635 | 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 --- 619 unchanged lines hidden (view full) --- 628 ewq.msg.event = UFFD_EVENT_REMAP; 629 ewq.msg.arg.remap.from = from; 630 ewq.msg.arg.remap.to = to; 631 ewq.msg.arg.remap.len = len; 632 633 userfaultfd_event_wait_completion(ctx, &ewq); 634} 635 |
636void madvise_userfault_dontneed(struct vm_area_struct *vma, 637 struct vm_area_struct **prev, 638 unsigned long start, unsigned long end) 639{ 640 struct mm_struct *mm = vma->vm_mm; 641 struct userfaultfd_ctx *ctx; 642 struct userfaultfd_wait_queue ewq; 643 644 ctx = vma->vm_userfaultfd_ctx.ctx; 645 if (!ctx || !(ctx->features & UFFD_FEATURE_EVENT_MADVDONTNEED)) 646 return; 647 648 userfaultfd_ctx_get(ctx); 649 up_read(&mm->mmap_sem); 650 651 *prev = NULL; /* We wait for ACK w/o the mmap semaphore */ 652 653 msg_init(&ewq.msg); 654 655 ewq.msg.event = UFFD_EVENT_MADVDONTNEED; 656 ewq.msg.arg.madv_dn.start = start; 657 ewq.msg.arg.madv_dn.end = end; 658 659 userfaultfd_event_wait_completion(ctx, &ewq); 660 661 down_read(&mm->mmap_sem); 662} 663 |
|
636static int userfaultfd_release(struct inode *inode, struct file *file) 637{ 638 struct userfaultfd_ctx *ctx = file->private_data; 639 struct mm_struct *mm = ctx->mm; 640 struct vm_area_struct *vma, *prev; 641 /* len == 0 means wake all */ 642 struct userfaultfd_wake_range range = { .len = 0, }; 643 unsigned long new_flags; --- 1027 unchanged lines hidden --- | 664static int userfaultfd_release(struct inode *inode, struct file *file) 665{ 666 struct userfaultfd_ctx *ctx = file->private_data; 667 struct mm_struct *mm = ctx->mm; 668 struct vm_area_struct *vma, *prev; 669 /* len == 0 means wake all */ 670 struct userfaultfd_wake_range range = { .len = 0, }; 671 unsigned long new_flags; --- 1027 unchanged lines hidden --- |