linux/arch/ia64/kernel
Christoph Lameter d8117ce5a6 [IA64] Fix race in the accessed/dirty bit handlers
A pte may be zapped by the swapper, exiting process, unmapping or page
migration while the accessed or dirty bit handers are about to run. In that
case the accessed bit or dirty is set on an zeroed pte which leads the VM to
conclude that this is a swap pte. This may lead to

- Messages from the vm like

swap_free: Bad swap file entry 4000000000000000

- Processes being aborted

swap_dup: Bad swap file entry 4000000000000000
VM: killing process ....

Page migration is particular suitable for the creation of this race since
it needs to remove and restore page table entries.

The fix here is to check for the present bit and simply not update
the pte if the page is not present anymore. If the page is not present
then the fault handler should run next which will take care of the problem
by bringing the page back and then mark the page dirty or move it onto the
active list.

Signed-off-by: Christoph Lameter <clameter@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
2006-03-08 16:07:55 -08:00
..
cpufreq [ACPI] IA64 ZX1 buildfix for _PDC patch 2005-12-05 17:24:45 -05:00
Makefile [ACPI] IA64 ZX1 buildfix for _PDC patch 2005-12-05 17:24:45 -05:00
acpi-ext.c [ACPI] ACPICA 20050930 2005-12-10 00:20:25 -05:00
acpi-processor.c [ACPI] IA64 ZX1 buildfix for _PDC patch 2005-12-05 17:24:45 -05:00
acpi.c [IA64] Count disabled cpus as potential hot-pluggable CPUs 2006-02-16 14:10:50 -08:00
asm-offsets.c [IA64] fix circular dependency on generation of asm-offsets.h 2005-09-13 08:50:39 -07:00
brl_emu.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cyclone.c [IA64] don't report !sn2 or !summit hardware as an error 2006-03-07 15:26:49 -08:00
efi.c [IA64] Fix wrong use of memparse in efi.c 2006-02-07 14:13:09 -08:00
efi_stub.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
entry.S [IA64] Missing check for TIF_WORK if trace/audit enabled 2006-02-16 10:20:08 -08:00
entry.h [IA64] Drop spurious paren in entry.h 2005-06-20 09:34:02 -07:00
fsys.S [IA64] cleanup in fsys.S 2006-02-28 08:53:32 -08:00
gate-data.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
gate.S kbuild: ia64 use generic asm-offsets.h support 2005-09-09 22:03:13 +02:00
gate.lds.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
head.S [IA64] Fix CONFIG_PRINTK_TIME 2006-02-07 15:25:57 -08:00
ia64_ksyms.c [IA64] Remove duplicate EXPORT_SYMBOLs 2006-02-15 13:23:32 -08:00
init_task.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
iosapic.c [IA64] Manual merge fix for 3 files 2005-09-08 14:27:13 -07:00
irq.c [IA64] wider use of for_each_cpu_mask() in arch/ia64 2005-10-25 15:10:08 -07:00
irq_ia64.c [IA64] assign_irq_vector() should not panic 2005-07-11 10:30:07 -07:00
irq_lsapic.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ivt.S [IA64] Fix race in the accessed/dirty bit handlers 2006-03-08 16:07:55 -08:00
jprobes.S [IA64] prevent accidental modification of args in jprobe handler 2006-01-13 14:45:21 -08:00
kprobes.c [IA64] prevent accidental modification of args in jprobe handler 2006-01-13 14:45:21 -08:00
machvec.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mca.c [PATCH] ia64: task_thread_info() 2006-01-12 09:08:58 -08:00
mca_asm.S [IA64] Set the correct default OS status in the MCA handler 2006-01-24 11:50:07 -08:00
mca_drv.c [IA64] mca recovery return value when no bus check 2006-03-07 15:40:06 -08:00
mca_drv.h [IA64] mca_drv cleanup 2005-09-16 10:39:40 -07:00
mca_drv_asm.S [IA64] mca_drv cleanup 2005-09-16 10:39:40 -07:00
minstate.h [IA64] MCA/INIT: remove the physical mode path from minstate.h 2005-09-11 14:09:12 -07:00
module.c [IA64] wider use of for_each_cpu_mask() in arch/ia64 2005-10-25 15:10:08 -07:00
numa.c [IA64] fix generic/up builds 2005-07-06 18:18:10 -07:00
pal.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
palinfo.c [IA64] Allow /proc/pal/cpu0/vm_info under the simulator 2005-08-31 08:34:51 -07:00
patch.c [IA64] Fix 2.6 kernel for the new ia64 assembler 2005-10-25 15:05:45 -07:00
perfmon.c [IA64] sem2mutex: arch/ia64/kernel/perfmon.c 2006-01-19 11:17:56 -08:00
perfmon_default_smpl.c [IA64] perfmon: make pfm_sysctl a global, and other cleanup 2005-04-25 13:08:30 -07:00
perfmon_generic.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
perfmon_itanium.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
perfmon_mckinley.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
perfmon_montecito.h [IA64] Perfmon for Montecito 2006-01-16 10:31:44 -08:00
process.c [PATCH] ia64: task_pt_regs() 2006-01-12 09:08:58 -08:00
ptrace.c [PATCH] ia64: task_pt_regs() 2006-01-12 09:08:58 -08:00
sal.c [IA64] avoid broken SAL_CACHE_FLUSH implementations 2006-02-02 13:25:54 -08:00
salinfo.c [IA64] Add hotplug cpu to salinfo.c, replace semaphore with mutex 2006-01-13 14:22:35 -08:00
semaphore.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
setup.c [IA64] Count disabled cpus as potential hot-pluggable CPUs 2006-02-14 15:37:58 -08:00
sigframe.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
signal.c [PATCH] ia64: task_thread_info() 2006-01-12 09:08:58 -08:00
smp.c [IA64] wider use of for_each_cpu_mask() in arch/ia64 2005-10-25 15:10:08 -07:00
smpboot.c [IA64] Dont set NR_CPUS for cpu_possible_map when CPU hotplug is enabled. 2006-02-14 15:35:10 -08:00
sys_ia64.c [PATCH] ia64: task_pt_regs() 2006-01-12 09:08:58 -08:00
time.c [IA64] ia64: simplify and fix udelay() 2006-02-15 13:37:04 -08:00
topology.c [PATCH] Export cpu topology in sysfs 2006-02-03 08:32:09 -08:00
traps.c [IA64] support panic_on_oops sysctl 2006-02-15 15:16:50 -08:00
unaligned.c [IA64] sysctl option to silence unaligned trap warnings 2006-02-28 09:42:23 -08:00
uncached.c [IA64] eliminate softlockup warning 2006-01-19 11:18:25 -08:00
unwind.c [IA64] MCA/INIT: remove obsolete unwind code 2005-09-11 14:09:34 -07:00
unwind_decoder.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
unwind_i.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
vmlinux.lds.S [IA64] Add __read_mostly support for IA64 2005-12-16 10:52:46 -08:00