summaryrefslogtreecommitdiffstats
path: root/arch/parisc/kernel
diff options
context:
space:
mode:
authorHelge Deller2016-04-08 18:32:52 +0200
committerHelge Deller2016-04-08 22:14:14 +0200
commit2ef4dfd9d9f288943e249b78365a69e3ea3ec072 (patch)
treeb2add375348d201853d93329c144159cf45b96ae /arch/parisc/kernel
parentparisc: Fix kernel crash with reversed copy_from_user() (diff)
downloadkernel-qcow2-linux-2ef4dfd9d9f288943e249b78365a69e3ea3ec072.tar.gz
kernel-qcow2-linux-2ef4dfd9d9f288943e249b78365a69e3ea3ec072.tar.xz
kernel-qcow2-linux-2ef4dfd9d9f288943e249b78365a69e3ea3ec072.zip
parisc: Unbreak handling exceptions from kernel modules
Handling exceptions from modules never worked on parisc. It was just masked by the fact that exceptions from modules don't happen during normal use. When a module triggers an exception in get_user() we need to load the main kernel dp value before accessing the exception_data structure, and afterwards restore the original dp value of the module on exit. Noticed-by: Mikulas Patocka <mpatocka@redhat.com> Signed-off-by: Helge Deller <deller@gmx.de> Cc: stable@vger.kernel.org
Diffstat (limited to 'arch/parisc/kernel')
-rw-r--r--arch/parisc/kernel/asm-offsets.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/parisc/kernel/asm-offsets.c b/arch/parisc/kernel/asm-offsets.c
index d2f62570a7b1..78d30d2ea2d8 100644
--- a/arch/parisc/kernel/asm-offsets.c
+++ b/arch/parisc/kernel/asm-offsets.c
@@ -299,6 +299,7 @@ int main(void)
#endif
BLANK();
DEFINE(EXCDATA_IP, offsetof(struct exception_data, fault_ip));
+ DEFINE(EXCDATA_GP, offsetof(struct exception_data, fault_gp));
DEFINE(EXCDATA_SPACE, offsetof(struct exception_data, fault_space));
DEFINE(EXCDATA_ADDR, offsetof(struct exception_data, fault_addr));
BLANK();