kernel-fxtec-pro1x/mm
Naoya Horiguchi 3e030ecc0f mm/memory-failure.c: fix memory leak by race between poison and unpoison
When a memory error happens on an in-use page or (free and in-use)
hugepage, the victim page is isolated with its refcount set to one.

When you try to unpoison it later, unpoison_memory() calls put_page()
for it twice in order to bring the page back to free page pool (buddy or
free hugepage list).  However, if another memory error occurs on the
page which we are unpoisoning, memory_failure() returns without
releasing the refcount which was incremented in the same call at first,
which results in memory leak and unconsistent num_poisoned_pages
statistics.  This patch fixes it.

Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: <stable@vger.kernel.org>    [2.6.32+]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2014-05-23 09:37:30 -07:00
..
backing-dev.c
balloon_compaction.c
bootmem.c
bounce.c
cleancache.c
compaction.c mm/compaction: make isolate_freepages start at pageblock boundary 2014-05-06 13:04:59 -07:00
debug-pagealloc.c
dmapool.c
early_ioremap.c
fadvise.c
failslab.c
filemap.c mm/filemap.c: avoid always dirtying mapping->flags on O_DIRECT 2014-05-23 09:37:29 -07:00
filemap_xip.c
fremap.c
frontswap.c
highmem.c
huge_memory.c thp: close race between split and zap huge pages 2014-04-18 16:40:09 -07:00
hugetlb.c hugetlb: ensure hugepage access is denied if hugepages are not supported 2014-05-06 13:04:58 -07:00
hugetlb_cgroup.c
hwpoison-inject.c
init-mm.c
internal.h
interval_tree.c
iov_iter.c
Kconfig parisc,metag: Do not hardcode maximum userspace stack size 2014-05-15 00:01:41 +01:00
Kconfig.debug
kmemcheck.c
kmemleak-test.c
kmemleak.c mm: postpone the disabling of kmemleak early logging 2014-05-11 17:55:48 +09:00
ksm.c
list_lru.c
maccess.c
madvise.c mm: madvise: fix MADV_WILLNEED on shmem swapouts 2014-05-23 09:37:29 -07:00
Makefile Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2014-04-12 14:49:50 -07:00
memblock.c
memcontrol.c memcg: fix swapcache charge from kernel thread context 2014-05-23 09:37:29 -07:00
memory-failure.c mm/memory-failure.c: fix memory leak by race between poison and unpoison 2014-05-23 09:37:30 -07:00
memory.c mm: split 'tlb_flush_mmu()' into tlb flushing and memory freeing parts 2014-04-25 16:05:40 -07:00
memory_hotplug.c
mempolicy.c
mempool.c
migrate.c
mincore.c
mlock.c
mm_init.c
mmap.c
mmu_context.c
mmu_notifier.c
mmzone.c
mprotect.c
mremap.c mm, thp: close race between mremap() and split_huge_page() 2014-05-11 17:55:48 +09:00
msync.c
nobootmem.c
nommu.c
oom_kill.c
page-writeback.c mm/page-writeback.c: fix divide by zero in pos_ratio_polynom 2014-05-06 13:04:58 -07:00
page_alloc.c
page_cgroup.c
page_io.c
page_isolation.c
pagewalk.c
percpu-km.c
percpu-vm.c
percpu.c percpu: make pcpu_alloc_chunk() use pcpu_mem_free() instead of kfree() 2014-04-14 16:18:06 -04:00
pgtable-generic.c
process_vm_access.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2014-04-12 14:49:50 -07:00
quicklist.c
readahead.c
rmap.c
shmem.c mm: Initialize error in shmem_file_aio_read() 2014-04-13 14:10:26 -07:00
slab.c slab: Fix off by one in object max number tests. 2014-05-05 20:38:49 -07:00
slab.h slub: use sysfs'es release mechanism for kmem_cache 2014-05-06 13:04:59 -07:00
slab_common.c slub: use sysfs'es release mechanism for kmem_cache 2014-05-06 13:04:59 -07:00
slob.c
slub.c slub: use sysfs'es release mechanism for kmem_cache 2014-05-06 13:04:59 -07:00
sparse-vmemmap.c
sparse.c
swap.c
swap_state.c
swapfile.c
truncate.c mm: filemap: update find_get_pages_tag() to deal with shadow entries 2014-05-06 13:04:59 -07:00
util.c nick kvfree() from apparmor 2014-05-06 14:02:53 -04:00
vmacache.c mm: don't pointlessly use BUG_ON() for sanity check 2014-04-28 14:24:09 -07:00
vmalloc.c
vmpressure.c
vmscan.c revert "mm: vmscan: do not swap anon pages just because free+file is low" 2014-05-06 13:04:59 -07:00
vmstat.c
workingset.c
zbud.c
zsmalloc.c
zswap.c