diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/um/include/os.h | 5 | ||||
-rw-r--r-- | arch/um/include/um_uaccess.h | 4 | ||||
-rw-r--r-- | arch/um/include/uml_uaccess.h | 24 | ||||
-rw-r--r-- | arch/um/kernel/exec.c | 2 | ||||
-rw-r--r-- | arch/um/kernel/mem.c | 2 | ||||
-rw-r--r-- | arch/um/kernel/trap.c | 6 | ||||
-rw-r--r-- | arch/um/kernel/uaccess.c | 2 | ||||
-rw-r--r-- | arch/um/os-Linux/process.c | 2 | ||||
-rw-r--r-- | arch/um/os-Linux/trap.c | 7 | ||||
-rw-r--r-- | arch/um/os-Linux/uaccess.c | 2 |
10 files changed, 14 insertions, 42 deletions
diff --git a/arch/um/include/os.h b/arch/um/include/os.h index 96f333c..c704851 100644 --- a/arch/um/include/os.h +++ b/arch/um/include/os.h @@ -193,7 +193,7 @@ extern int os_getpid(void); extern int os_getpgrp(void); extern void init_new_thread_signals(void); -extern int run_kernel_thread(int (*fn)(void *), void *arg, void **jmp_ptr); +extern int run_kernel_thread(int (*fn)(void *), void *arg, jmp_buf **jmp_ptr); extern int os_map_memory(void *virt, int fd, unsigned long long off, unsigned long len, int r, int w, int x); @@ -206,7 +206,7 @@ extern void os_flush_stdout(void); /* uaccess.c */ extern unsigned long __do_user_copy(void *to, const void *from, int n, - void **fault_addr, void **fault_catcher, + void **fault_addr, jmp_buf **fault_catcher, void (*op)(void *to, const void *from, int n), int *faulted_out); @@ -240,7 +240,6 @@ extern int set_signals(int enable); /* trap.c */ extern void os_fill_handlinfo(struct kern_handlers h); -extern void do_longjmp(void *p, int val); /* util.c */ extern void stack_protections(unsigned long address); diff --git a/arch/um/include/um_uaccess.h b/arch/um/include/um_uaccess.h index 5ef311a..fdfc06b 100644 --- a/arch/um/include/um_uaccess.h +++ b/arch/um/include/um_uaccess.h @@ -30,6 +30,10 @@ extern int copy_from_user(void *to, const void __user *from, int n); extern int copy_to_user(void __user *to, const void *from, int n); +extern int __do_copy_to_user(void *to, const void *from, int n, + void **fault_addr, jmp_buf **fault_catcher); +extern void __do_copy(void *to, const void *from, int n); + /* * strncpy_from_user: - Copy a NUL terminated string from userspace. * @dst: Destination address, in kernel space. This buffer must be at diff --git a/arch/um/include/uml_uaccess.h b/arch/um/include/uml_uaccess.h deleted file mode 100644 index c0df11d..0000000 --- a/arch/um/include/uml_uaccess.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (C) 2001 Jeff Dike (jdike@karaya.com) - * Licensed under the GPL - */ - -#ifndef __UML_UACCESS_H__ -#define __UML_UACCESS_H__ - -extern int __do_copy_to_user(void *to, const void *from, int n, - void **fault_addr, void **fault_catcher); -void __do_copy(void *to, const void *from, int n); - -#endif - -/* - * Overrides for Emacs so that we follow Linus's tabbing style. - * Emacs will notice this stuff at the end of the file and automatically - * adjust the settings for this buffer only. This must remain at the end - * of the file. - * --------------------------------------------------------------------------- - * Local variables: - * c-file-style: "linux" - * End: - */ diff --git a/arch/um/kernel/exec.c b/arch/um/kernel/exec.c index 0d26056..25c5026 100644 --- a/arch/um/kernel/exec.c +++ b/arch/um/kernel/exec.c @@ -75,7 +75,7 @@ long um_execve(char *file, char __user *__user *argv, char __user *__user *env) err = execve1(file, argv, env); if (!err) - do_longjmp(current->thread.exec_buf, 1); + UML_LONGJMP(current->thread.exec_buf, 1); return err; } diff --git a/arch/um/kernel/mem.c b/arch/um/kernel/mem.c index d2b11f2..8456397 100644 --- a/arch/um/kernel/mem.c +++ b/arch/um/kernel/mem.c @@ -17,7 +17,7 @@ #include "as-layout.h" #include "kern.h" #include "mem_user.h" -#include "uml_uaccess.h" +#include "um_uaccess.h" #include "os.h" #include "linux/types.h" #include "linux/string.h" diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c index eac63fb..bd06055 100644 --- a/arch/um/kernel/trap.c +++ b/arch/um/kernel/trap.c @@ -149,7 +149,7 @@ unsigned long segv(struct faultinfo fi, unsigned long ip, int is_user, struct uml_pt_regs *regs) { struct siginfo si; - void *catcher; + jmp_buf *catcher; int err; int is_write = FAULT_WRITE(fi); unsigned long address = FAULT_ADDRESS(fi); @@ -181,7 +181,7 @@ unsigned long segv(struct faultinfo fi, unsigned long ip, int is_user, return 0; else if (catcher != NULL) { current->thread.fault_addr = (void *) address; - do_longjmp(catcher, 1); + UML_LONGJMP(catcher, 1); } else if (current->thread.fault_addr != NULL) panic("fault_addr set but no fault catcher"); @@ -233,7 +233,7 @@ void relay_signal(int sig, struct uml_pt_regs *regs) static void bus_handler(int sig, struct uml_pt_regs *regs) { if (current->thread.fault_catcher != NULL) - do_longjmp(current->thread.fault_catcher, 1); + UML_LONGJMP(current->thread.fault_catcher, 1); else relay_signal(sig, regs); } diff --git a/arch/um/kernel/uaccess.c b/arch/um/kernel/uaccess.c index 054e3de..d7436aa 100644 --- a/arch/um/kernel/uaccess.c +++ b/arch/um/kernel/uaccess.c @@ -18,7 +18,7 @@ void __do_copy(void *to, const void *from, int n) int __do_copy_to_user(void *to, const void *from, int n, - void **fault_addr, void **fault_catcher) + void **fault_addr, jmp_buf **fault_catcher) { unsigned long fault; int faulted; diff --git a/arch/um/os-Linux/process.c b/arch/um/os-Linux/process.c index b2e0d8c..8b57eb3 100644 --- a/arch/um/os-Linux/process.c +++ b/arch/um/os-Linux/process.c @@ -249,7 +249,7 @@ void init_new_thread_signals(void) init_irq_signals(1); } -int run_kernel_thread(int (*fn)(void *), void *arg, void **jmp_ptr) +int run_kernel_thread(int (*fn)(void *), void *arg, jmp_buf **jmp_ptr) { jmp_buf buf; int n; diff --git a/arch/um/os-Linux/trap.c b/arch/um/os-Linux/trap.c index be8e029..d3a34ca 100644 --- a/arch/um/os-Linux/trap.c +++ b/arch/um/os-Linux/trap.c @@ -22,10 +22,3 @@ void os_fill_handlinfo(struct kern_handlers h) sig_info[SIGVTALRM] = h.timer_handler; sig_info[SIGALRM] = h.timer_handler; } - -void do_longjmp(void *b, int val) -{ - jmp_buf *buf = b; - - UML_LONGJMP(buf, val); -} diff --git a/arch/um/os-Linux/uaccess.c b/arch/um/os-Linux/uaccess.c index bbb73a6..8d27b6d 100644 --- a/arch/um/os-Linux/uaccess.c +++ b/arch/um/os-Linux/uaccess.c @@ -8,7 +8,7 @@ #include "longjmp.h" unsigned long __do_user_copy(void *to, const void *from, int n, - void **fault_addr, void **fault_catcher, + void **fault_addr, jmp_buf **fault_catcher, void (*op)(void *to, const void *from, int n), int *faulted_out) { |