linux/mm
Nick Piggin 9a61c349b2 [PATCH] mm: remap ZERO_PAGE mappings
filemap_xip's nopage routine maps the ZERO_PAGE into readonly mappings, if it
has no data page to map there: then if the hole in the file is later filled,
__xip_unmap uses an rmap technique to replace the ZERO_PAGEs mapped for that
offset by the newly allocated file page, so that established mappings will see
the newly written data.

However, on MIPS (alone) there's not one but as many as eight ZERO_PAGEs,
chosen for coloring by user virtual address; and if mremap has meanwhile been
used to move a mapping containing a ZERO_PAGE, it will generally not match the
ZERO_PAGE(address) __xip_unmap is looking for.

To maintain XIP's established mappings correctly on MIPS, we need Nick's fix
to mremap's move_one_page (originally presented as an optimization), to
replace the ZERO_PAGE appropriate to the old address by the ZERO_PAGE
appropriate to the new address.

(But when I first saw this, I was thinking the ZERO_PAGEs themselves would get
corrupted, very bad.  Now I think it's the other way round, that the
established mappings will fail to see the newly written data: incorrect, but
not corrupting everything else.  Whether filemap_xip's technique is generally
safe, I'd hesitate to say in a hurry: it's interesting, but we've never tried
to do that in tmpfs.)

Signed-off-by: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Nick Piggin <npiggin@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-05 00:05:44 -07:00
..
bootmem.c [PATCH] Use ALIGN to remove duplicate code 2005-06-25 16:25:02 -07:00
fadvise.c [PATCH] xip: madvice/fadvice: execute in place 2005-06-24 00:06:42 -07:00
filemap_xip.c [PATCH] execute-in-place fixes 2005-07-15 09:54:50 -07:00
filemap.c [PATCH] swap: swap_lock replace list+device 2005-09-05 00:05:42 -07:00
filemap.h [PATCH] xip: reduce code duplication 2005-06-24 00:06:41 -07:00
fremap.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
highmem.c [PATCH] count bounce buffer pages in vmstat 2005-05-01 08:58:37 -07:00
hugetlb.c [PATCH] Fix hugepage crash on failing mmap() 2005-08-05 12:22:37 -07:00
internal.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Kconfig [PATCH] sparsemem extreme implementation 2005-09-05 00:05:38 -07:00
madvise.c [PATCH] madvise() does not always return -EBADF on non-file mapped area 2005-07-27 16:25:54 -07:00
Makefile [PATCH] xip: fs/mm: execute in place 2005-06-24 00:06:41 -07:00
memory.c [PATCH] Lazy page table copies in fork() 2005-08-29 17:25:04 -07:00
mempolicy.c [PATCH] /proc/<pid>/numa_maps to show on which nodes pages reside 2005-09-05 00:05:43 -07:00
mempool.c [PATCH] propagate __nocast annotations 2005-07-07 18:23:46 -07:00
mincore.c [PATCH] freepgt: sys_mincore ignore FIRST_USER_PGD_NR 2005-04-19 13:29:20 -07:00
mlock.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mmap.c [PATCH] __vm_enough_memory() signedness fix 2005-08-04 21:43:14 -07:00
mprotect.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mremap.c [PATCH] mm: remap ZERO_PAGE mappings 2005-09-05 00:05:44 -07:00
msync.c [PATCH] msync: check pte dirty earlier 2005-06-21 18:46:21 -07:00
nommu.c [PATCH] __vm_enough_memory() signedness fix 2005-08-04 21:43:14 -07:00
oom_kill.c [PATCH] mm: quieten OOM killer noise 2005-07-07 18:23:36 -07:00
page_alloc.c [PATCH] Fix NUMA node sizing in nr_free_zone_pages 2005-07-30 10:14:46 -07:00
page_io.c [PATCH] swsusp: kill config_pm_disk 2005-06-25 16:24:32 -07:00
page-writeback.c [PATCH] rename wakeup_bdflush to wakeup_pdflush 2005-06-28 21:20:31 -07:00
pdflush.c [PATCH] Cleanup patch for process freezing 2005-06-25 17:10:13 -07:00
prio_tree.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
readahead.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
rmap.c [PATCH] mm: cleanup rmap 2005-09-05 00:05:43 -07:00
shmem.c Fix nasty ncpfs symlink handling bug. 2005-08-19 18:02:56 -07:00
slab.c [PATCH] propagate __nocast annotations 2005-07-07 18:23:46 -07:00
sparse.c [PATCH] sparsemem extreme: hotplug preparation 2005-09-05 00:05:38 -07:00
swap_state.c [PATCH] delete from_swap_cache BUG_ONs 2005-09-05 00:05:42 -07:00
swap.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
swapfile.c [PATCH] swap: swap_lock replace list+device 2005-09-05 00:05:42 -07:00
thrash.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
tiny-shmem.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
truncate.c [PATCH] DocBook: fix some descriptions 2005-05-01 08:59:26 -07:00
vmalloc.c [PATCH] x86_64: Fixed guard page handling again in iounmap 2005-05-20 15:48:20 -07:00
vmscan.c [PATCH] rename wakeup_bdflush to wakeup_pdflush 2005-06-28 21:20:31 -07:00