| From e3893027a300927049efc1572f852201eb785142 Mon Sep 17 00:00:00 2001 |
| From: Helge Deller <deller@gmx.de> |
| Date: Fri, 8 Apr 2016 18:11:33 +0200 |
| Subject: parisc: Avoid function pointers for kernel exception routines |
| |
| From: Helge Deller <deller@gmx.de> |
| |
| commit e3893027a300927049efc1572f852201eb785142 upstream. |
| |
| We want to avoid the kernel module loader to create function pointers |
| for the kernel fixup routines of get_user() and put_user(). Changing |
| the external reference from function type to int type fixes this. |
| |
| This unbreaks exception handling for get_user() and put_user() when |
| called from a kernel module. |
| |
| Signed-off-by: Helge Deller <deller@gmx.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/parisc/kernel/parisc_ksyms.c | 10 +++++----- |
| 1 file changed, 5 insertions(+), 5 deletions(-) |
| |
| --- a/arch/parisc/kernel/parisc_ksyms.c |
| +++ b/arch/parisc/kernel/parisc_ksyms.c |
| @@ -47,11 +47,11 @@ EXPORT_SYMBOL(__cmpxchg_u64); |
| EXPORT_SYMBOL(lclear_user); |
| EXPORT_SYMBOL(lstrnlen_user); |
| |
| -/* Global fixups */ |
| -extern void fixup_get_user_skip_1(void); |
| -extern void fixup_get_user_skip_2(void); |
| -extern void fixup_put_user_skip_1(void); |
| -extern void fixup_put_user_skip_2(void); |
| +/* Global fixups - defined as int to avoid creation of function pointers */ |
| +extern int fixup_get_user_skip_1; |
| +extern int fixup_get_user_skip_2; |
| +extern int fixup_put_user_skip_1; |
| +extern int fixup_put_user_skip_2; |
| EXPORT_SYMBOL(fixup_get_user_skip_1); |
| EXPORT_SYMBOL(fixup_get_user_skip_2); |
| EXPORT_SYMBOL(fixup_put_user_skip_1); |