diff options
Diffstat (limited to 'arch/um/os-Linux/skas')
-rw-r--r-- | arch/um/os-Linux/skas/mem.c | 13 | ||||
-rw-r--r-- | arch/um/os-Linux/skas/process.c | 13 |
2 files changed, 14 insertions, 12 deletions
diff --git a/arch/um/os-Linux/skas/mem.c b/arch/um/os-Linux/skas/mem.c index 5c8946320799..0f7df4eb903f 100644 --- a/arch/um/os-Linux/skas/mem.c +++ b/arch/um/os-Linux/skas/mem.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include "sysdep/ptrace.h" | 25 | #include "sysdep/ptrace.h" |
26 | #include "sysdep/stub.h" | 26 | #include "sysdep/stub.h" |
27 | #include "init.h" | 27 | #include "init.h" |
28 | #include "kern_constants.h" | ||
28 | 29 | ||
29 | extern unsigned long batch_syscall_stub, __syscall_stub_start; | 30 | extern unsigned long batch_syscall_stub, __syscall_stub_start; |
30 | 31 | ||
@@ -149,8 +150,8 @@ long run_syscall_stub(struct mm_id * mm_idp, int syscall, | |||
149 | *stack = 0; | 150 | *stack = 0; |
150 | multi_op_count++; | 151 | multi_op_count++; |
151 | 152 | ||
152 | if(!done && ((((unsigned long) stack) & ~PAGE_MASK) < | 153 | if(!done && ((((unsigned long) stack) & ~UM_KERN_PAGE_MASK) < |
153 | PAGE_SIZE - 10 * sizeof(long))){ | 154 | UM_KERN_PAGE_SIZE - 10 * sizeof(long))){ |
154 | *addr = stack; | 155 | *addr = stack; |
155 | return 0; | 156 | return 0; |
156 | } | 157 | } |
@@ -168,8 +169,8 @@ long syscall_stub_data(struct mm_id * mm_idp, | |||
168 | /* If *addr still is uninitialized, it *must* contain NULL. | 169 | /* If *addr still is uninitialized, it *must* contain NULL. |
169 | * Thus in this case do_syscall_stub correctly won't be called. | 170 | * Thus in this case do_syscall_stub correctly won't be called. |
170 | */ | 171 | */ |
171 | if((((unsigned long) *addr) & ~PAGE_MASK) >= | 172 | if((((unsigned long) *addr) & ~UM_KERN_PAGE_MASK) >= |
172 | PAGE_SIZE - (10 + data_count) * sizeof(long)) { | 173 | UM_KERN_PAGE_SIZE - (10 + data_count) * sizeof(long)) { |
173 | ret = do_syscall_stub(mm_idp, addr); | 174 | ret = do_syscall_stub(mm_idp, addr); |
174 | /* in case of error, don't overwrite data on stack */ | 175 | /* in case of error, don't overwrite data on stack */ |
175 | if(ret) | 176 | if(ret) |
@@ -183,8 +184,8 @@ long syscall_stub_data(struct mm_id * mm_idp, | |||
183 | 184 | ||
184 | memcpy(stack + 1, data, data_count * sizeof(long)); | 185 | memcpy(stack + 1, data, data_count * sizeof(long)); |
185 | 186 | ||
186 | *stub_addr = (void *)(((unsigned long)(stack + 1) & ~PAGE_MASK) + | 187 | *stub_addr = (void *)(((unsigned long)(stack + 1) & |
187 | UML_CONFIG_STUB_DATA); | 188 | ~UM_KERN_PAGE_MASK) + UML_CONFIG_STUB_DATA); |
188 | 189 | ||
189 | return 0; | 190 | return 0; |
190 | } | 191 | } |
diff --git a/arch/um/os-Linux/skas/process.c b/arch/um/os-Linux/skas/process.c index f9d2f8545afe..46c00cc429bc 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) | |||
252 | unsigned long sp; | 252 | unsigned long sp; |
253 | int pid, status, n, flags; | 253 | int pid, status, n, flags; |
254 | 254 | ||
255 | stack = mmap(NULL, PAGE_SIZE, PROT_READ | PROT_WRITE | PROT_EXEC, | 255 | stack = mmap(NULL, UM_KERN_PAGE_SIZE, |
256 | PROT_READ | PROT_WRITE | PROT_EXEC, | ||
256 | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); | 257 | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); |
257 | if(stack == MAP_FAILED) | 258 | if(stack == MAP_FAILED) |
258 | panic("start_userspace : mmap failed, errno = %d", errno); | 259 | panic("start_userspace : mmap failed, errno = %d", errno); |
259 | sp = (unsigned long) stack + PAGE_SIZE - sizeof(void *); | 260 | sp = (unsigned long) stack + UM_KERN_PAGE_SIZE - sizeof(void *); |
260 | 261 | ||
261 | flags = CLONE_FILES | SIGCHLD; | 262 | flags = CLONE_FILES | SIGCHLD; |
262 | if(proc_mm) flags |= CLONE_VM; | 263 | if(proc_mm) flags |= CLONE_VM; |
@@ -279,7 +280,7 @@ int start_userspace(unsigned long stub_stack) | |||
279 | panic("start_userspace : PTRACE_OLDSETOPTIONS failed, errno=%d\n", | 280 | panic("start_userspace : PTRACE_OLDSETOPTIONS failed, errno=%d\n", |
280 | errno); | 281 | errno); |
281 | 282 | ||
282 | if(munmap(stack, PAGE_SIZE) < 0) | 283 | if(munmap(stack, UM_KERN_PAGE_SIZE) < 0) |
283 | panic("start_userspace : munmap failed, errno = %d\n", errno); | 284 | panic("start_userspace : munmap failed, errno = %d\n", errno); |
284 | 285 | ||
285 | return(pid); | 286 | return(pid); |
@@ -365,7 +366,7 @@ static int __init init_thread_regs(void) | |||
365 | thread_regs[REGS_IP_INDEX] = UML_CONFIG_STUB_CODE + | 366 | thread_regs[REGS_IP_INDEX] = UML_CONFIG_STUB_CODE + |
366 | (unsigned long) stub_clone_handler - | 367 | (unsigned long) stub_clone_handler - |
367 | (unsigned long) &__syscall_stub_start; | 368 | (unsigned long) &__syscall_stub_start; |
368 | thread_regs[REGS_SP_INDEX] = UML_CONFIG_STUB_DATA + PAGE_SIZE - | 369 | thread_regs[REGS_SP_INDEX] = UML_CONFIG_STUB_DATA + UM_KERN_PAGE_SIZE - |
369 | sizeof(void *); | 370 | sizeof(void *); |
370 | #ifdef __SIGNAL_FRAMESIZE | 371 | #ifdef __SIGNAL_FRAMESIZE |
371 | thread_regs[REGS_SP_INDEX] -= __SIGNAL_FRAMESIZE; | 372 | thread_regs[REGS_SP_INDEX] -= __SIGNAL_FRAMESIZE; |
@@ -453,7 +454,7 @@ void map_stub_pages(int fd, unsigned long code, | |||
453 | .u = | 454 | .u = |
454 | { .mmap = | 455 | { .mmap = |
455 | { .addr = code, | 456 | { .addr = code, |
456 | .len = PAGE_SIZE, | 457 | .len = UM_KERN_PAGE_SIZE, |
457 | .prot = PROT_EXEC, | 458 | .prot = PROT_EXEC, |
458 | .flags = MAP_FIXED | MAP_PRIVATE, | 459 | .flags = MAP_FIXED | MAP_PRIVATE, |
459 | .fd = code_fd, | 460 | .fd = code_fd, |
@@ -476,7 +477,7 @@ void map_stub_pages(int fd, unsigned long code, | |||
476 | .u = | 477 | .u = |
477 | { .mmap = | 478 | { .mmap = |
478 | { .addr = data, | 479 | { .addr = data, |
479 | .len = PAGE_SIZE, | 480 | .len = UM_KERN_PAGE_SIZE, |
480 | .prot = PROT_READ | PROT_WRITE, | 481 | .prot = PROT_READ | PROT_WRITE, |
481 | .flags = MAP_FIXED | MAP_SHARED, | 482 | .flags = MAP_FIXED | MAP_SHARED, |
482 | .fd = map_fd, | 483 | .fd = map_fd, |