Andy Whitcroft
6babc32c41
mm: handle initialising compound pages at orders greater than MAX_ORDER
...
When we initialise a compound page we initialise the page flags and head
page pointer for all base pages spanned by that page. When we initialise
a gigantic page (a page of order greater than or equal to MAX_ORDER) we
have to initialise more than MAX_ORDER_NR_PAGES pages. Currently we
assume that all elements of the mem_map in this page are contigious in
memory. However this is only guarenteed out to MAX_ORDER_NR_PAGES pages,
and with SPARSEMEM enabled they will not be contigious. This leads us to
walk off the end of the first section and scribble on everything which
follows, BAD.
When we reach a MAX_ORDER_NR_PAGES boundary we much locate the next
section of the mem_map. As gigantic pages can only be maximally aligned
we know this will occur at exact multiple of MAX_ORDER_NR_PAGES pages from
the start of the page.
This is a bug fix for the gigantic page support in hugetlbfs.
Credit to Mel Gorman for spotting the issue.
Signed-off-by: Andy Whitcroft <apw@shadowen.org>
Cc: Mel Gorman <mel@csn.ul.ie>
Cc: Jon Tollefson <kniht@linux.vnet.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-10-02 15:53:13 -07:00
..
allocpercpu.c
mm/allocpercpu.c: make 4 functions static
2008-07-26 12:00:12 -07:00
backing-dev.c
bootmem.c
bootmem: fix aligning of node-relative indexes and offsets
2008-08-20 15:40:31 -07:00
bounce.c
dmapool.c
fadvise.c
filemap.c
VFS: fix dio write returning EIO when try_to_release_page fails
2008-09-02 19:21:37 -07:00
filemap_xip.c
mm: xip/ext2 fix block allocation race
2008-08-20 15:40:32 -07:00
fremap.c
mmu-notifiers: core
2008-07-28 16:30:21 -07:00
highmem.c
hugetlb.c
allocate structures for reservation tracking in hugetlbfs outside of spinlocks v2
2008-08-12 16:07:28 -07:00
internal.h
Kconfig
mm: Make generic weak get_user_pages_fast and EXPORT_GPL it
2008-08-12 17:52:53 +10:00
maccess.c
madvise.c
madvise: update function comment of madvise_dontneed
2008-07-30 09:41:45 -07:00
Makefile
mmu-notifiers: core
2008-07-28 16:30:21 -07:00
memcontrol.c
mm owner: fix race between swapoff and exit
2008-09-29 08:41:47 -07:00
memory.c
mm: rename page trylock
2008-08-04 21:31:34 -07:00
memory_hotplug.c
memory-hotplug: add sysfs removable attribute for hotplug memory remove
2008-07-24 10:47:21 -07:00
mempolicy.c
do_migrate_pages(): remove unused variable
2008-08-12 16:07:29 -07:00
mempool.c
migrate.c
mm: rename page trylock
2008-08-04 21:31:34 -07:00
mincore.c
mlock.c
mlock() fix return values
2008-08-04 16:58:45 -07:00
mm_init.c
mm: mminit_loglevel cannot be __meminitdata anymore
2008-08-20 15:40:30 -07:00
mmap.c
mmap: fix petty bug in anonymous shared mmap offset handling
2008-09-03 19:58:53 -07:00
mmu_notifier.c
mmu-notifiers: core
2008-07-28 16:30:21 -07:00
mmzone.c
mm: mark the correct zone as full when scanning zonelists
2008-09-13 14:41:52 -07:00
mprotect.c
mmu-notifiers: core
2008-07-28 16:30:21 -07:00
mremap.c
mmu-notifiers: core
2008-07-28 16:30:21 -07:00
msync.c
nommu.c
nommu: Provide vmalloc_exec().
2008-08-04 16:01:47 +09:00
oom_kill.c
security: Fix setting of PF_SUPERPRIV by __capable()
2008-08-14 22:59:43 +10:00
page-writeback.c
mm: spinlock tree_lock
2008-07-26 12:00:06 -07:00
page_alloc.c
mm: handle initialising compound pages at orders greater than MAX_ORDER
2008-10-02 15:53:13 -07:00
page_io.c
page_isolation.c
memory hotplug: missing zone->lock in test_pages_isolated()
2008-10-02 15:53:13 -07:00
pagewalk.c
pdflush.c
pdflush: use time_after() instead of open-coding it
2008-07-25 10:53:28 -07:00
prio_tree.c
quicklist.c
mm: size of quicklists shouldn't be proportional to the number of CPUs
2008-09-02 19:21:38 -07:00
readahead.c
mm: readahead scan lockless
2008-07-26 12:00:06 -07:00
rmap.c
mm: dirty page tracking race fix
2008-08-20 15:40:32 -07:00
shmem.c
mm: rename page trylock
2008-08-04 21:31:34 -07:00
shmem_acl.c
[PATCH] sanitize ->permission() prototype
2008-07-26 20:53:14 -04:00
slab.c
mm: unexport ksize
2008-07-29 23:44:26 +03:00
slob.c
mm: unexport ksize
2008-07-29 23:44:26 +03:00
slub.c
slub: fixed uninitialized counter in struct kmem_cache_node
2008-09-15 09:49:05 +03:00
sparse-vmemmap.c
sparse.c
mm/sparse.c: removed duplicated include
2008-08-12 16:07:30 -07:00
swap.c
mm: rename page trylock
2008-08-04 21:31:34 -07:00
swap_state.c
mm: show free swap as signed
2008-08-20 15:40:30 -07:00
swapfile.c
mm: rename page trylock
2008-08-04 21:31:34 -07:00
thrash.c
tiny-shmem.c
mm: tiny-shmem nommu fix
2008-10-02 15:53:13 -07:00
truncate.c
VFS: fix dio write returning EIO when try_to_release_page fails
2008-09-02 19:21:37 -07:00
util.c
mm: Make generic weak get_user_pages_fast and EXPORT_GPL it
2008-08-12 17:52:53 +10:00
vmalloc.c
Use WARN() in mm/vmalloc.c
2008-07-26 12:00:07 -07:00
vmscan.c
mm: rename page trylock
2008-08-04 21:31:34 -07:00
vmstat.c
[ARM] Skip memory holes in FLATMEM when reading /proc/pagetypeinfo
2008-08-27 20:09:28 +01:00