sparc64: Fix race in signal instruction flushing.
authorDavid S. Miller <davem@davemloft.net>
Tue, 21 Sep 2010 06:24:52 +0000 (23:24 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 9 Dec 2010 21:27:06 +0000 (13:27 -0800)
commit9d59c97ca886608e1e18d20bbd5eab09b96af683
tree6fad55c97e7e65b7c261475cb072149657da87d7
parent61690148345a4a1ccced61ad9c44862f74d947cf
sparc64: Fix race in signal instruction flushing.

[ Upstream commit 05c5e7698bdc54b3079a3517d86077f49ebcc788 ]

If another cpu does a very wide munmap() on the signal frame area,
it can tear down the page table hierarchy from underneath us.

Borrow an idea from the 64-bit fault path's get_user_insn(), and
disable cross call interrupts during the page table traversal
to lock them in place while we operate.

Reported-by: Al Viro <viro@ZenIV.linux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
arch/sparc/kernel/signal32.c