The patch titled mlock: fix return value for munmap/mlock vma race has been removed from the -mm tree. Its filename was mmap-handle-mlocked-pages-during-map-remap-unmap-mlock-fix-return-value-for-munmap-mlock-vma-race.patch This patch was dropped because it was folded into mmap-handle-mlocked-pages-during-map-remap-unmap.patch The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: mlock: fix return value for munmap/mlock vma race From: Lee Schermerhorn <lee.schermerhorn@xxxxxx> Now, We call downgrade_write(&mm->mmap_sem) at begin of mlock. It increase mlock scalability. But if mlock and munmap conflict happend, We can find vma gone. At that time, kernel should return ENOMEM because mlock after munmap return ENOMEM. (in addition, EAGAIN indicate "please try again", but mlock() called again cause error again) This problem is theoretical issue. I can't reproduce that vma gone on my box, but fixes is better. Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/mlock.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff -puN mm/mlock.c~mmap-handle-mlocked-pages-during-map-remap-unmap-mlock-fix-return-value-for-munmap-mlock-vma-race mm/mlock.c --- a/mm/mlock.c~mmap-handle-mlocked-pages-during-map-remap-unmap-mlock-fix-return-value-for-munmap-mlock-vma-race +++ a/mm/mlock.c @@ -282,7 +282,7 @@ long mlock_vma_pages_range(struct vm_are vma = find_vma(mm, start); /* non-NULL vma must contain @start, but need to check @end */ if (!vma || end > vma->vm_end) - return -EAGAIN; + return -ENOMEM; return 0; /* hide other errors from mmap(), et al */ } @@ -404,7 +404,7 @@ success: *prev = find_vma(mm, start); /* non-NULL *prev must contain @start, but need to check @end */ if (!(*prev) || end > (*prev)->vm_end) - ret = -EAGAIN; + ret = -ENOMEM; } else { /* * TODO: for unlocking, pages will already be resident, so _ Patches currently in -mm which might be from lee.schermerhorn@xxxxxx are vmscan-use-an-indexed-array-for-lru-variables.patch define-page_file_cache-function.patch vmscan-split-lru-lists-into-anon-file-sets.patch pageflag-helpers-for-configed-out-flags.patch unevictable-lru-infrastructure.patch unevictable-infrastructure-lru-add-event-counting-with-statistics.patch unevictable-lru-page-statistics.patch ramfs-and-ram-disk-pages-are-unevictable.patch shm_locked-pages-are-unevictable.patch mlock-mlocked-pages-are-unevictable.patch doc-unevictable-lru-and-mlocked-pages-documentation.patch mlock-downgrade-mmap-sem-while-populating-mlocked-regions.patch mmap-handle-mlocked-pages-during-map-remap-unmap.patch mmap-handle-mlocked-pages-during-map-remap-unmap-mlock-fix-return-value-for-munmap-mlock-vma-race.patch mmap-handle-mlocked-pages-during-map-remap-unmap-mlock-update-locked_vm-on-munmap-of-mlocked-region.patch vmstat-mlocked-pages-statistics.patch vmstat-mlocked-pages-statistics-mlocked-pages-add-event-counting-with-statistics.patch swap-cull-unevictable-pages-in-fault-path.patch vmscan-unevictable-lru-scan-sysctl.patch mlock-count-attempts-to-free-mlocked-page-2.patch mlock-revert-mainline-handling-of-mlock-error-return.patch mlock-make-mlock-error-return-posixly-correct.patch mlock-make-mlock-error-return-posixly-correct-fix.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html