@@ -601,8 +601,6 @@ static void userfaultfd_event_wait_completion(struct userfaultfd_ctx *ctx,
601601
602602 /* the various vma->vm_userfaultfd_ctx still points to it */
603603 mmap_write_lock (mm );
604- /* no task can run (and in turn coredump) yet */
605- VM_WARN_ON (!mmget_still_valid (mm ));
606604 for (vma = mm -> mmap ; vma ; vma = vma -> vm_next )
607605 if (vma -> vm_userfaultfd_ctx .ctx == release_new_ctx ) {
608606 vma -> vm_userfaultfd_ctx = NULL_VM_UFFD_CTX ;
@@ -842,7 +840,6 @@ static int userfaultfd_release(struct inode *inode, struct file *file)
842840 /* len == 0 means wake all */
843841 struct userfaultfd_wake_range range = { .len = 0 , };
844842 unsigned long new_flags ;
845- bool still_valid ;
846843
847844 WRITE_ONCE (ctx -> released , true);
848845
@@ -858,7 +855,6 @@ static int userfaultfd_release(struct inode *inode, struct file *file)
858855 * taking the mmap_lock for writing.
859856 */
860857 mmap_write_lock (mm );
861- still_valid = mmget_still_valid (mm );
862858 prev = NULL ;
863859 for (vma = mm -> mmap ; vma ; vma = vma -> vm_next ) {
864860 cond_resched ();
@@ -869,17 +865,15 @@ static int userfaultfd_release(struct inode *inode, struct file *file)
869865 continue ;
870866 }
871867 new_flags = vma -> vm_flags & ~(VM_UFFD_MISSING | VM_UFFD_WP );
872- if (still_valid ) {
873- prev = vma_merge (mm , prev , vma -> vm_start , vma -> vm_end ,
874- new_flags , vma -> anon_vma ,
875- vma -> vm_file , vma -> vm_pgoff ,
876- vma_policy (vma ),
877- NULL_VM_UFFD_CTX );
878- if (prev )
879- vma = prev ;
880- else
881- prev = vma ;
882- }
868+ prev = vma_merge (mm , prev , vma -> vm_start , vma -> vm_end ,
869+ new_flags , vma -> anon_vma ,
870+ vma -> vm_file , vma -> vm_pgoff ,
871+ vma_policy (vma ),
872+ NULL_VM_UFFD_CTX );
873+ if (prev )
874+ vma = prev ;
875+ else
876+ prev = vma ;
883877 vma -> vm_flags = new_flags ;
884878 vma -> vm_userfaultfd_ctx = NULL_VM_UFFD_CTX ;
885879 }
@@ -1309,8 +1303,6 @@ static int userfaultfd_register(struct userfaultfd_ctx *ctx,
13091303 goto out ;
13101304
13111305 mmap_write_lock (mm );
1312- if (!mmget_still_valid (mm ))
1313- goto out_unlock ;
13141306 vma = find_vma_prev (mm , start , & prev );
13151307 if (!vma )
13161308 goto out_unlock ;
@@ -1511,8 +1503,6 @@ static int userfaultfd_unregister(struct userfaultfd_ctx *ctx,
15111503 goto out ;
15121504
15131505 mmap_write_lock (mm );
1514- if (!mmget_still_valid (mm ))
1515- goto out_unlock ;
15161506 vma = find_vma_prev (mm , start , & prev );
15171507 if (!vma )
15181508 goto out_unlock ;
0 commit comments