parisc: only re-enable interrupts if we need to schedule or deliver signals when...
authorJohn David Anglin <dave.anglin@bell.net>
Tue, 7 May 2013 00:07:25 +0000 (00:07 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 19 May 2013 18:38:45 +0000 (11:38 -0700)
commitcdc9fd4956b3a525f68eae79b0f6b859e944a5ce
treeb71051e5b2ddb087be3805874bf362e9e6986a64
parent98b17e9decaf1b103e4d0dd9ded21188c63dd475
parisc: only re-enable interrupts if we need to schedule or deliver signals when returning to userspace

commit c207a76bf155cb5cf24cf849c08f6555e9180594 upstream.

Helge and I have found that we have a kernel stack overflow problem
which causes a variety of random failures.
Currently, we re-enable interrupts when returning from an external
interrupt incase we need to schedule or delivery
signals.  As a result, a potentially unlimited number of interrupts
can occur while we are running on the kernel
stack.  It is very limited in space (currently, 16k).  This change
defers enabling interrupts until we have
actually decided to schedule or delivery signals.  This only occurs
when we about to return to userspace.  This
limits the number of interrupts on the kernel stack to one.  In other
cases, interrupts remain disabled until the
final return from interrupt (rfi).

Signed-off-by: John David Anglin <dave.anglin@bell.net>
Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/parisc/kernel/entry.S