original_kernel/mm
Linus Torvalds 95042f9eb7 vm: fix mlock() on stack guard page
Commit 53a7706d5e ("mlock: do not hold mmap_sem for extended periods
of time") changed mlock() to care about the exact number of pages that
__get_user_pages() had brought it.  Before, it would only care about
errors.

And that doesn't work, because we also handled one page specially in
__mlock_vma_pages_range(), namely the stack guard page.  So when that
case was handled, the number of pages that the function returned was off
by one.  In particular, it could be zero, and then the caller would end
up not making any progress at all.

Rather than try to fix up that off-by-one error for the mlock case
specially, this just moves the logic to handle the stack guard page
into__get_user_pages() itself, thus making all the counts come out
right automatically.

Reported-by: Robert Święcki <robert@swiecki.net>
Cc: Hugh Dickins <hughd@google.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: stable@kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-04-12 14:15:51 -07:00
..
Kconfig
Kconfig.debug
Makefile
backing-dev.c Fix common misspellings 2011-03-31 11:26:23 -03:00
bootmem.c crash_dump: export is_kdump_kernel to modules, consolidate elfcorehdr_addr, setup_elfcorehdr and saved_max_pfn 2011-03-23 19:47:19 -07:00
bounce.c
compaction.c
debug-pagealloc.c
dmapool.c
fadvise.c
failslab.c
filemap.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 2011-03-24 19:01:30 -07:00
filemap_xip.c
fremap.c
highmem.c
huge_memory.c
hugetlb.c Fix common misspellings 2011-03-31 11:26:23 -03:00
hwpoison-inject.c Fix common misspellings 2011-03-31 11:26:23 -03:00
init-mm.c
internal.h Fix common misspellings 2011-03-31 11:26:23 -03:00
kmemcheck.c
kmemleak-test.c
kmemleak.c Fix common misspellings 2011-03-31 11:26:23 -03:00
ksm.c Fix common misspellings 2011-03-31 11:26:23 -03:00
maccess.c
madvise.c
memblock.c mm/memblock: properly handle overlaps and fix error path 2011-03-22 17:44:09 -07:00
memcontrol.c Fix common misspellings 2011-03-31 11:26:23 -03:00
memory-failure.c Fix common misspellings 2011-03-31 11:26:23 -03:00
memory.c vm: fix mlock() on stack guard page 2011-04-12 14:15:51 -07:00
memory_hotplug.c Fix common misspellings 2011-03-31 11:26:23 -03:00
mempolicy.c
mempool.c
migrate.c Fix common misspellings 2011-03-31 11:26:23 -03:00
mincore.c
mlock.c vm: fix mlock() on stack guard page 2011-04-12 14:15:51 -07:00
mm_init.c
mmap.c
mmu_context.c
mmu_notifier.c
mmzone.c
mprotect.c
mremap.c mm: avoid wrapping vm_pgoff in mremap() 2011-04-07 07:35:51 -07:00
msync.c
nobootmem.c Fix common misspellings 2011-03-31 11:26:23 -03:00
nommu.c NOMMU: implement access_remote_vm 2011-03-29 14:05:12 +01:00
oom_kill.c lib, arch: add filter argument to show_mem and fix private implementations 2011-03-24 17:49:37 -07:00
page-writeback.c Merge branch 'for-2.6.39/core' of git://git.kernel.dk/linux-2.6-block 2011-03-24 10:16:26 -07:00
page_alloc.c Fix common misspellings 2011-03-31 11:26:23 -03:00
page_cgroup.c Fix common misspellings 2011-03-31 11:26:23 -03:00
page_io.c
page_isolation.c
pagewalk.c
percpu-km.c
percpu-vm.c
percpu.c Fix common misspellings 2011-03-31 11:26:23 -03:00
pgtable-generic.c
prio_tree.c
quicklist.c
readahead.c
rmap.c fs: move i_wb_list out from under inode_lock 2011-03-24 21:17:51 -04:00
shmem.c Merge branch 'for-2.6.39/core' of git://git.kernel.dk/linux-2.6-block 2011-03-24 10:16:26 -07:00
slab.c Fix common misspellings 2011-03-31 11:26:23 -03:00
slob.c
slub.c Fix common misspellings 2011-03-31 11:26:23 -03:00
sparse-vmemmap.c
sparse.c Fix common misspellings 2011-03-31 11:26:23 -03:00
swap.c mm: simplify code of swap.c 2011-03-22 17:44:09 -07:00
swap_state.c
swapfile.c Merge branch 'for-2.6.39/core' of git://git.kernel.dk/linux-2.6-block 2011-03-24 10:16:26 -07:00
thrash.c
truncate.c
util.c Fix common misspellings 2011-03-31 11:26:23 -03:00
vmalloc.c vmalloc: remove confusing comment on vwrite() 2011-03-22 17:44:09 -07:00
vmscan.c Fix common misspellings 2011-03-31 11:26:23 -03:00
vmstat.c