Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

parisc: disable UP-optimized flush_tlb_mm

flush_tlb_mm's "optimized" uniprocessor case of allocating a new
context for userspace is exposing a race where we can suddely return
to a syscall with the protection id and space id out of sync, trapping
on the next userspace access.

Debugged-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Tested-by: Helge Deller <deller@gmx.de>
Signed-off-by: Kyle McMartin <kyle@mcmartin.ca>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Kyle McMartin and committed by
Linus Torvalds
5289f46b 8960223d

+4 -1
+4 -1
arch/parisc/include/asm/tlbflush.h
··· 44 44 { 45 45 BUG_ON(mm == &init_mm); /* Should never happen */ 46 46 47 - #ifdef CONFIG_SMP 47 + #if 1 || defined(CONFIG_SMP) 48 48 flush_tlb_all(); 49 49 #else 50 + /* FIXME: currently broken, causing space id and protection ids 51 + * to go out of sync, resulting in faults on userspace accesses. 52 + */ 50 53 if (mm) { 51 54 if (mm->context != 0) 52 55 free_sid(mm->context);