https://github.com/torvalds/linux
Revision bf85fa6c878aa3968df47d7f70a2b506c3e53b99 authored by Anton W\xf6llert on 27 July 2005, 07:45:17 UTC, committed by Linus Torvalds on 27 July 2005, 23:34:34 UTC
On 8xx, in the case where a pagefault happens for a process who's not the owner of the vma in question (ptrace for instance), the flush operation is performed via the physical address. Unfortunately, that results in a strange, unexplainable "icbi" instruction fault, most likely due to a CPU bug (see oops below). Avoid that by flushing the page via its kernel virtual address. Oops: kernel access of bad area, sig: 11 [#2] NIP: C000543C LR: C000B060 SP: C0F35DF0 REGS: c0f35d40 TRAP: 0300 Not tainted MSR: 00009022 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 10 DAR: 00000010, DSISR: C2000000 TASK = c0ea8430[761] 'gdbserver' THREAD: c0f34000 Last syscall: 26 GPR00: 00009022 C0F35DF0 C0EA8430 00F59000 00000100 FFFFFFFF 00F58000 00000001 GPR08: C021DAEF C0270000 00009032 C0270000 22044024 10025428 01000800 00000001 GPR16: 007FFF3F 00000001 00000000 7FBC6AC0 00F61022 00000001 C0839300 C01E0000 GPR24: 00CD0889 C082F568 3000AC18 C02A7A00 C0EA15C8 00F588A9 C02ACB00 C02ACB00 NIP [c000543c] __flush_dcache_icache_phys+0x38/0x54 LR [c000b060] flush_dcache_icache_page+0x20/0x30 Call trace: [c000b154] update_mmu_cache+0x7c/0xa4 [c005ae98] do_wp_page+0x460/0x5ec [c005c8a0] handle_mm_fault+0x7cc/0x91c [c005ccec] get_user_pages+0x2fc/0x65c [c0027104] access_process_vm+0x9c/0x1d4 [c00076e0] sys_ptrace+0x240/0x4a4 [c0002bd0] ret_from_syscall+0x0/0x44 Signed-off-by: Marcelo Tosatti <marcelo.tosatti@cyclades.com> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
1 parent 5990415
Tip revision: bf85fa6c878aa3968df47d7f70a2b506c3e53b99 authored by Anton W\xf6llert on 27 July 2005, 07:45:17 UTC
[PATCH] ppc32: 8xx avoid icbi misbehaviour in __flush_dcache_icache_phys
[PATCH] ppc32: 8xx avoid icbi misbehaviour in __flush_dcache_icache_phys
Tip revision: bf85fa6
File | Mode | Size |
---|---|---|
irq | ||
power | ||
Kconfig.hz | -rw-r--r-- | 1.2 KB |
Kconfig.preempt | -rw-r--r-- | 2.3 KB |
Makefile | -rw-r--r-- | 2.1 KB |
acct.c | -rw-r--r-- | 14.4 KB |
audit.c | -rw-r--r-- | 23.6 KB |
auditsc.c | -rw-r--r-- | 30.6 KB |
capability.c | -rw-r--r-- | 6.3 KB |
compat.c | -rw-r--r-- | 21.4 KB |
configs.c | -rw-r--r-- | 3.3 KB |
cpu.c | -rw-r--r-- | 4.0 KB |
cpuset.c | -rw-r--r-- | 42.3 KB |
crash_dump.c | -rw-r--r-- | 1.6 KB |
dma.c | -rw-r--r-- | 3.5 KB |
exec_domain.c | -rw-r--r-- | 4.3 KB |
exit.c | -rw-r--r-- | 39.0 KB |
extable.c | -rw-r--r-- | 2.0 KB |
fork.c | -rw-r--r-- | 31.7 KB |
futex.c | -rw-r--r-- | 19.3 KB |
intermodule.c | -rw-r--r-- | 5.1 KB |
itimer.c | -rw-r--r-- | 6.7 KB |
kallsyms.c | -rw-r--r-- | 10.4 KB |
kexec.c | -rw-r--r-- | 27.1 KB |
kfifo.c | -rw-r--r-- | 4.7 KB |
kmod.c | -rw-r--r-- | 7.6 KB |
kprobes.c | -rw-r--r-- | 14.9 KB |
ksysfs.c | -rw-r--r-- | 1.5 KB |
kthread.c | -rw-r--r-- | 4.7 KB |
module.c | -rw-r--r-- | 56.0 KB |
panic.c | -rw-r--r-- | 4.0 KB |
params.c | -rw-r--r-- | 16.8 KB |
pid.c | -rw-r--r-- | 7.5 KB |
posix-cpu-timers.c | -rw-r--r-- | 40.8 KB |
posix-timers.c | -rw-r--r-- | 44.2 KB |
printk.c | -rw-r--r-- | 25.5 KB |
profile.c | -rw-r--r-- | 14.9 KB |
ptrace.c | -rw-r--r-- | 8.8 KB |
rcupdate.c | -rw-r--r-- | 14.0 KB |
resource.c | -rw-r--r-- | 11.6 KB |
sched.c | -rw-r--r-- | 130.3 KB |
seccomp.c | -rw-r--r-- | 1.1 KB |
signal.c | -rw-r--r-- | 69.3 KB |
softirq.c | -rw-r--r-- | 11.1 KB |
spinlock.c | -rw-r--r-- | 7.7 KB |
stop_machine.c | -rw-r--r-- | 4.8 KB |
sys.c | -rw-r--r-- | 42.0 KB |
sys_ni.c | -rw-r--r-- | 2.5 KB |
sysctl.c | -rw-r--r-- | 54.9 KB |
time.c | -rw-r--r-- | 15.6 KB |
timer.c | -rw-r--r-- | 42.0 KB |
uid16.c | -rw-r--r-- | 4.2 KB |
user.c | -rw-r--r-- | 4.4 KB |
wait.c | -rw-r--r-- | 7.1 KB |
workqueue.c | -rw-r--r-- | 13.5 KB |
Computing file changes ...