diff options
-rw-r--r-- | arch/um/Kconfig | 5 | ||||
-rw-r--r-- | arch/um/sys-i386/Makefile | 2 | ||||
-rw-r--r-- | arch/um/sys-i386/bug.c | 20 | ||||
-rw-r--r-- | arch/um/sys-x86_64/Makefile | 2 | ||||
-rw-r--r-- | arch/um/sys-x86_64/bug.c | 20 | ||||
-rw-r--r-- | include/asm-um/bug.h | 4 |
6 files changed, 50 insertions, 3 deletions
diff --git a/arch/um/Kconfig b/arch/um/Kconfig index 5ac1f2963ae3..d32a80e6668c 100644 --- a/arch/um/Kconfig +++ b/arch/um/Kconfig | |||
@@ -47,6 +47,11 @@ config GENERIC_CALIBRATE_DELAY | |||
47 | bool | 47 | bool |
48 | default y | 48 | default y |
49 | 49 | ||
50 | config GENERIC_BUG | ||
51 | bool | ||
52 | default y | ||
53 | depends on BUG | ||
54 | |||
50 | # Used in kernel/irq/manage.c and include/linux/irq.h | 55 | # Used in kernel/irq/manage.c and include/linux/irq.h |
51 | config IRQ_RELEASE_METHOD | 56 | config IRQ_RELEASE_METHOD |
52 | bool | 57 | bool |
diff --git a/arch/um/sys-i386/Makefile b/arch/um/sys-i386/Makefile index 0e32adf03be1..098720be019a 100644 --- a/arch/um/sys-i386/Makefile +++ b/arch/um/sys-i386/Makefile | |||
@@ -1,4 +1,4 @@ | |||
1 | obj-y = bugs.o checksum.o delay.o fault.o ksyms.o ldt.o ptrace.o \ | 1 | obj-y = bug.o bugs.o checksum.o delay.o fault.o ksyms.o ldt.o ptrace.o \ |
2 | ptrace_user.o setjmp.o signal.o sigcontext.o syscalls.o sysrq.o \ | 2 | ptrace_user.o setjmp.o signal.o sigcontext.o syscalls.o sysrq.o \ |
3 | sys_call_table.o tls.o | 3 | sys_call_table.o tls.o |
4 | 4 | ||
diff --git a/arch/um/sys-i386/bug.c b/arch/um/sys-i386/bug.c new file mode 100644 index 000000000000..200c8ba2879b --- /dev/null +++ b/arch/um/sys-i386/bug.c | |||
@@ -0,0 +1,20 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2006 Jeff Dike (jdike@addtoit.com) | ||
3 | * Licensed under the GPL V2 | ||
4 | */ | ||
5 | |||
6 | #include <linux/uaccess.h> | ||
7 | |||
8 | /* Mostly copied from i386/x86_86 - eliminated the eip < PAGE_OFFSET because | ||
9 | * that's not relevent in skas mode. | ||
10 | */ | ||
11 | |||
12 | int is_valid_bugaddr(unsigned long eip) | ||
13 | { | ||
14 | unsigned short ud2; | ||
15 | |||
16 | if (probe_kernel_address((unsigned short __user *)eip, ud2)) | ||
17 | return 0; | ||
18 | |||
19 | return ud2 == 0x0b0f; | ||
20 | } | ||
diff --git a/arch/um/sys-x86_64/Makefile b/arch/um/sys-x86_64/Makefile index f41768b8e25e..4d9e5efa6fb9 100644 --- a/arch/um/sys-x86_64/Makefile +++ b/arch/um/sys-x86_64/Makefile | |||
@@ -4,7 +4,7 @@ | |||
4 | # Licensed under the GPL | 4 | # Licensed under the GPL |
5 | # | 5 | # |
6 | 6 | ||
7 | obj-y = bugs.o delay.o fault.o ldt.o mem.o ptrace.o ptrace_user.o \ | 7 | obj-y = bug.o bugs.o delay.o fault.o ldt.o mem.o ptrace.o ptrace_user.o \ |
8 | setjmp.o sigcontext.o signal.o syscalls.o syscall_table.o sysrq.o \ | 8 | setjmp.o sigcontext.o signal.o syscalls.o syscall_table.o sysrq.o \ |
9 | ksyms.o tls.o | 9 | ksyms.o tls.o |
10 | 10 | ||
diff --git a/arch/um/sys-x86_64/bug.c b/arch/um/sys-x86_64/bug.c new file mode 100644 index 000000000000..200c8ba2879b --- /dev/null +++ b/arch/um/sys-x86_64/bug.c | |||
@@ -0,0 +1,20 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2006 Jeff Dike (jdike@addtoit.com) | ||
3 | * Licensed under the GPL V2 | ||
4 | */ | ||
5 | |||
6 | #include <linux/uaccess.h> | ||
7 | |||
8 | /* Mostly copied from i386/x86_86 - eliminated the eip < PAGE_OFFSET because | ||
9 | * that's not relevent in skas mode. | ||
10 | */ | ||
11 | |||
12 | int is_valid_bugaddr(unsigned long eip) | ||
13 | { | ||
14 | unsigned short ud2; | ||
15 | |||
16 | if (probe_kernel_address((unsigned short __user *)eip, ud2)) | ||
17 | return 0; | ||
18 | |||
19 | return ud2 == 0x0b0f; | ||
20 | } | ||
diff --git a/include/asm-um/bug.h b/include/asm-um/bug.h index 1e22fa26ff06..3357c5e2468e 100644 --- a/include/asm-um/bug.h +++ b/include/asm-um/bug.h | |||
@@ -1,4 +1,6 @@ | |||
1 | #ifndef __UM_BUG_H | 1 | #ifndef __UM_BUG_H |
2 | #define __UM_BUG_H | 2 | #define __UM_BUG_H |
3 | #include <asm-generic/bug.h> | 3 | |
4 | #include <asm/arch/bug.h> | ||
5 | |||
4 | #endif | 6 | #endif |