sparc64: Fix race in signal instruction flushing.
authorDavid S. Miller <davem@davemloft.net>
Tue, 21 Sep 2010 06:24:52 +0000 (23:24 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 21 Sep 2010 06:24:52 +0000 (23:24 -0700)
commit05c5e7698bdc54b3079a3517d86077f49ebcc788
tree07fe8d2d072d4d143c4edf4fea01ddcaff37840f
parentb343ae51c116dffaef07a8596661774c12212b66
sparc64: Fix race in signal instruction flushing.

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>
arch/sparc/kernel/signal32.c