diff options
Diffstat (limited to 'arch/um')
-rw-r--r-- | arch/um/Kconfig | 1 | ||||
-rw-r--r-- | arch/um/drivers/line.c | 1 | ||||
-rw-r--r-- | arch/um/drivers/stderr_console.c | 1 | ||||
-rw-r--r-- | arch/um/drivers/ubd_kern.c | 1 | ||||
-rw-r--r-- | arch/um/include/common-offsets.h | 1 | ||||
-rw-r--r-- | arch/um/kernel/exitcode.c | 39 | ||||
-rw-r--r-- | arch/um/os-Linux/main.c | 4 | ||||
-rw-r--r-- | arch/um/os-Linux/skas/mem.c | 13 | ||||
-rw-r--r-- | arch/um/os-Linux/skas/process.c | 13 | ||||
-rw-r--r-- | arch/um/os-Linux/start_up.c | 7 |
10 files changed, 43 insertions, 38 deletions
diff --git a/arch/um/Kconfig b/arch/um/Kconfig index c504312219b..e6ff3026654 100644 --- a/arch/um/Kconfig +++ b/arch/um/Kconfig @@ -278,6 +278,7 @@ config HIGHMEM config KERNEL_STACK_ORDER int "Kernel stack size order" default 1 if 64BIT + range 1 10 if 64BIT default 0 if !64BIT help This option determines the size of UML kernel stacks. They will diff --git a/arch/um/drivers/line.c b/arch/um/drivers/line.c index ced99106f79..4bd40bb43ec 100644 --- a/arch/um/drivers/line.c +++ b/arch/um/drivers/line.c @@ -3,6 +3,7 @@ * Licensed under the GPL */ +#include "linux/kernel.h" #include "linux/sched.h" #include "linux/slab.h" #include "linux/list.h" diff --git a/arch/um/drivers/stderr_console.c b/arch/um/drivers/stderr_console.c index 91153929387..4739dd527b4 100644 --- a/arch/um/drivers/stderr_console.c +++ b/arch/um/drivers/stderr_console.c @@ -1,3 +1,4 @@ +#include <linux/kernel.h> #include <linux/init.h> #include <linux/console.h> diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c index 70509ddaac0..2e09f162c42 100644 --- a/arch/um/drivers/ubd_kern.c +++ b/arch/um/drivers/ubd_kern.c @@ -20,6 +20,7 @@ #define MAJOR_NR UBD_MAJOR #define UBD_SHIFT 4 +#include "linux/kernel.h" #include "linux/module.h" #include "linux/blkdev.h" #include "linux/hdreg.h" diff --git a/arch/um/include/common-offsets.h b/arch/um/include/common-offsets.h index 541f4a8ca51..7376ee44e33 100644 --- a/arch/um/include/common-offsets.h +++ b/arch/um/include/common-offsets.h @@ -9,6 +9,7 @@ OFFSET(HOST_TASK_REGS, task_struct, thread.regs); OFFSET(HOST_TASK_PID, task_struct, pid); DEFINE(UM_KERN_PAGE_SIZE, PAGE_SIZE); +DEFINE(UM_KERN_PAGE_MASK, PAGE_MASK); DEFINE(UM_NSEC_PER_SEC, NSEC_PER_SEC); DEFINE_STR(UM_KERN_EMERG, KERN_EMERG); diff --git a/arch/um/kernel/exitcode.c b/arch/um/kernel/exitcode.c index 8b7f2cdedf9..c716b5a6db1 100644 --- a/arch/um/kernel/exitcode.c +++ b/arch/um/kernel/exitcode.c @@ -1,8 +1,9 @@ -/* +/* * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) * Licensed under the GPL */ +#include "linux/kernel.h" #include "linux/init.h" #include "linux/ctype.h" #include "linux/proc_fs.h" @@ -24,11 +25,14 @@ static int read_proc_exitcode(char *page, char **start, off_t off, val = uml_exitcode; len = sprintf(page, "%d\n", val); len -= off; - if(len <= off+count) *eof = 1; + if(len <= off+count) + *eof = 1; *start = page + off; - if(len > count) len = count; - if(len < 0) len = 0; - return(len); + if(len > count) + len = count; + if(len < 0) + len = 0; + return len; } static int write_proc_exitcode(struct file *file, const char __user *buffer, @@ -38,12 +42,14 @@ static int write_proc_exitcode(struct file *file, const char __user *buffer, int tmp; if(copy_from_user(buf, buffer, count)) - return(-EFAULT); + return -EFAULT; + tmp = simple_strtol(buf, &end, 0); if((*end != '\0') && !isspace(*end)) - return(-EINVAL); + return -EINVAL; + uml_exitcode = tmp; - return(count); + return count; } static int make_proc_exitcode(void) @@ -54,24 +60,13 @@ static int make_proc_exitcode(void) if(ent == NULL){ printk(KERN_WARNING "make_proc_exitcode : Failed to register " "/proc/exitcode\n"); - return(0); + return 0; } ent->read_proc = read_proc_exitcode; ent->write_proc = write_proc_exitcode; - - return(0); + + return 0; } __initcall(make_proc_exitcode); - -/* - * 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/os-Linux/main.c b/arch/um/os-Linux/main.c index ea9a23696f3..fb510d40480 100644 --- a/arch/um/os-Linux/main.c +++ b/arch/um/os-Linux/main.c @@ -24,6 +24,7 @@ #include "uml-config.h" #include "os.h" #include "um_malloc.h" +#include "kern_constants.h" /* Set in main, unchanged thereafter */ char *linux_prog; @@ -232,7 +233,8 @@ void *__wrap_malloc(int size) if(!CAN_KMALLOC()) return __real_malloc(size); - else if(size <= PAGE_SIZE) /* finding contiguos pages can be hard*/ + else if(size <= UM_KERN_PAGE_SIZE) + /* finding contiguous pages can be hard*/ ret = um_kmalloc(size); else ret = um_vmalloc(size); diff --git a/arch/um/os-Linux/skas/mem.c b/arch/um/os-Linux/skas/mem.c index 5c894632079..0f7df4eb903 100644 --- a/arch/um/os-Linux/skas/mem.c +++ b/arch/um/os-Linux/skas/mem.c @@ -25,6 +25,7 @@ #include "sysdep/ptrace.h" #include "sysdep/stub.h" #include "init.h" +#include "kern_constants.h" extern unsigned long batch_syscall_stub, __syscall_stub_start; @@ -149,8 +150,8 @@ long run_syscall_stub(struct mm_id * mm_idp, int syscall, *stack = 0; multi_op_count++; - if(!done && ((((unsigned long) stack) & ~PAGE_MASK) < - PAGE_SIZE - 10 * sizeof(long))){ + if(!done && ((((unsigned long) stack) & ~UM_KERN_PAGE_MASK) < + UM_KERN_PAGE_SIZE - 10 * sizeof(long))){ *addr = stack; return 0; } @@ -168,8 +169,8 @@ long syscall_stub_data(struct mm_id * mm_idp, /* If *addr still is uninitialized, it *must* contain NULL. * Thus in this case do_syscall_stub correctly won't be called. */ - if((((unsigned long) *addr) & ~PAGE_MASK) >= - PAGE_SIZE - (10 + data_count) * sizeof(long)) { + if((((unsigned long) *addr) & ~UM_KERN_PAGE_MASK) >= + UM_KERN_PAGE_SIZE - (10 + data_count) * sizeof(long)) { ret = do_syscall_stub(mm_idp, addr); /* in case of error, don't overwrite data on stack */ if(ret) @@ -183,8 +184,8 @@ long syscall_stub_data(struct mm_id * mm_idp, memcpy(stack + 1, data, data_count * sizeof(long)); - *stub_addr = (void *)(((unsigned long)(stack + 1) & ~PAGE_MASK) + - UML_CONFIG_STUB_DATA); + *stub_addr = (void *)(((unsigned long)(stack + 1) & + ~UM_KERN_PAGE_MASK) + UML_CONFIG_STUB_DATA); return 0; } diff --git a/arch/um/os-Linux/skas/process.c b/arch/um/os-Linux/skas/process.c index f9d2f8545af..46c00cc429b 100644 --- a/arch/um/os-Linux/skas/process.c +++ b/arch/um/os-Linux/skas/process.c @@ -252,11 +252,12 @@ int start_userspace(unsigned long stub_stack) unsigned long sp; int pid, status, n, flags; - stack = mmap(NULL, PAGE_SIZE, PROT_READ | PROT_WRITE | PROT_EXEC, + stack = mmap(NULL, UM_KERN_PAGE_SIZE, + PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); if(stack == MAP_FAILED) panic("start_userspace : mmap failed, errno = %d", errno); - sp = (unsigned long) stack + PAGE_SIZE - sizeof(void *); + sp = (unsigned long) stack + UM_KERN_PAGE_SIZE - sizeof(void *); flags = CLONE_FILES | SIGCHLD; if(proc_mm) flags |= CLONE_VM; @@ -279,7 +280,7 @@ int start_userspace(unsigned long stub_stack) panic("start_userspace : PTRACE_OLDSETOPTIONS failed, errno=%d\n", errno); - if(munmap(stack, PAGE_SIZE) < 0) + if(munmap(stack, UM_KERN_PAGE_SIZE) < 0) panic("start_userspace : munmap failed, errno = %d\n", errno); return(pid); @@ -365,7 +366,7 @@ static int __init init_thread_regs(void) thread_regs[REGS_IP_INDEX] = UML_CONFIG_STUB_CODE + (unsigned long) stub_clone_handler - (unsigned long) &__syscall_stub_start; - thread_regs[REGS_SP_INDEX] = UML_CONFIG_STUB_DATA + PAGE_SIZE - + thread_regs[REGS_SP_INDEX] = UML_CONFIG_STUB_DATA + UM_KERN_PAGE_SIZE - sizeof(void *); #ifdef __SIGNAL_FRAMESIZE thread_regs[REGS_SP_INDEX] -= __SIGNAL_FRAMESIZE; @@ -453,7 +454,7 @@ void map_stub_pages(int fd, unsigned long code, .u = { .mmap = { .addr = code, - .len = PAGE_SIZE, + .len = UM_KERN_PAGE_SIZE, .prot = PROT_EXEC, .flags = MAP_FIXED | MAP_PRIVATE, .fd = code_fd, @@ -476,7 +477,7 @@ void map_stub_pages(int fd, unsigned long code, .u = { .mmap = { .addr = data, - .len = PAGE_SIZE, + .len = UM_KERN_PAGE_SIZE, .prot = PROT_READ | PROT_WRITE, .flags = MAP_FIXED | MAP_SHARED, .fd = map_fd, diff --git a/arch/um/os-Linux/start_up.c b/arch/um/os-Linux/start_up.c index 3fc13fa8729..46f613975c1 100644 --- a/arch/um/os-Linux/start_up.c +++ b/arch/um/os-Linux/start_up.c @@ -107,11 +107,12 @@ static int start_ptraced_child(void **stack_out) unsigned long sp; int pid, n, status; - stack = mmap(NULL, PAGE_SIZE, PROT_READ | PROT_WRITE | PROT_EXEC, + stack = mmap(NULL, UM_KERN_PAGE_SIZE, + PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); if(stack == MAP_FAILED) fatal_perror("check_ptrace : mmap failed"); - sp = (unsigned long) stack + PAGE_SIZE - sizeof(void *); + sp = (unsigned long) stack + UM_KERN_PAGE_SIZE - sizeof(void *); pid = clone(ptrace_child, (void *) sp, SIGCHLD, NULL); if(pid < 0) fatal_perror("start_ptraced_child : clone failed"); @@ -153,7 +154,7 @@ static int stop_ptraced_child(int pid, void *stack, int exitcode, ret = -1; } - if(munmap(stack, PAGE_SIZE) < 0) + if(munmap(stack, UM_KERN_PAGE_SIZE) < 0) fatal_perror("check_ptrace : munmap failed"); return ret; } |