Commit 5f32943b authored by Nicolas Iooss's avatar Nicolas Iooss Committed by Richard Weinberger

um/os-Linux: Use char[] for syscall_stub declarations

When declaring __syscall_stub_start, use the same type in UML userspace
code as in arch/um/include/asm/sections.h.

While at it, also declare batch_syscall_stub as char[].
Signed-off-by: default avatarNicolas Iooss <nicolas.iooss_linux@m4x.org>
Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
parent 05eacfd0
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
#include <sysdep/ptrace.h> #include <sysdep/ptrace.h>
#include <sysdep/stub.h> #include <sysdep/stub.h>
extern unsigned long batch_syscall_stub, __syscall_stub_start; extern char batch_syscall_stub[], __syscall_stub_start[];
extern void wait_stub_done(int pid); extern void wait_stub_done(int pid);
...@@ -38,8 +38,8 @@ static int __init init_syscall_regs(void) ...@@ -38,8 +38,8 @@ static int __init init_syscall_regs(void)
{ {
get_safe_registers(syscall_regs, NULL); get_safe_registers(syscall_regs, NULL);
syscall_regs[REGS_IP_INDEX] = STUB_CODE + syscall_regs[REGS_IP_INDEX] = STUB_CODE +
((unsigned long) &batch_syscall_stub - ((unsigned long) batch_syscall_stub -
(unsigned long) &__syscall_stub_start); (unsigned long) __syscall_stub_start);
return 0; return 0;
} }
......
...@@ -174,7 +174,7 @@ static void handle_trap(int pid, struct uml_pt_regs *regs, ...@@ -174,7 +174,7 @@ static void handle_trap(int pid, struct uml_pt_regs *regs,
handle_syscall(regs); handle_syscall(regs);
} }
extern int __syscall_stub_start; extern char __syscall_stub_start[];
static int userspace_tramp(void *stack) static int userspace_tramp(void *stack)
{ {
...@@ -197,7 +197,7 @@ static int userspace_tramp(void *stack) ...@@ -197,7 +197,7 @@ static int userspace_tramp(void *stack)
* This has a pte, but it can't be mapped in with the usual * This has a pte, but it can't be mapped in with the usual
* tlb_flush mechanism because this is part of that mechanism * tlb_flush mechanism because this is part of that mechanism
*/ */
fd = phys_mapping(to_phys(&__syscall_stub_start), &offset); fd = phys_mapping(to_phys(__syscall_stub_start), &offset);
addr = mmap64((void *) STUB_CODE, UM_KERN_PAGE_SIZE, addr = mmap64((void *) STUB_CODE, UM_KERN_PAGE_SIZE,
PROT_EXEC, MAP_FIXED | MAP_PRIVATE, fd, offset); PROT_EXEC, MAP_FIXED | MAP_PRIVATE, fd, offset);
if (addr == MAP_FAILED) { if (addr == MAP_FAILED) {
...@@ -223,7 +223,7 @@ static int userspace_tramp(void *stack) ...@@ -223,7 +223,7 @@ static int userspace_tramp(void *stack)
unsigned long v = STUB_CODE + unsigned long v = STUB_CODE +
(unsigned long) stub_segv_handler - (unsigned long) stub_segv_handler -
(unsigned long) &__syscall_stub_start; (unsigned long) __syscall_stub_start;
set_sigstack((void *) STUB_DATA, UM_KERN_PAGE_SIZE); set_sigstack((void *) STUB_DATA, UM_KERN_PAGE_SIZE);
sigemptyset(&sa.sa_mask); sigemptyset(&sa.sa_mask);
...@@ -447,7 +447,7 @@ static int __init init_thread_regs(void) ...@@ -447,7 +447,7 @@ static int __init init_thread_regs(void)
/* Set parent's instruction pointer to start of clone-stub */ /* Set parent's instruction pointer to start of clone-stub */
thread_regs[REGS_IP_INDEX] = STUB_CODE + thread_regs[REGS_IP_INDEX] = STUB_CODE +
(unsigned long) stub_clone_handler - (unsigned long) stub_clone_handler -
(unsigned long) &__syscall_stub_start; (unsigned long) __syscall_stub_start;
thread_regs[REGS_SP_INDEX] = STUB_DATA + UM_KERN_PAGE_SIZE - thread_regs[REGS_SP_INDEX] = STUB_DATA + UM_KERN_PAGE_SIZE -
sizeof(void *); sizeof(void *);
#ifdef __SIGNAL_FRAMESIZE #ifdef __SIGNAL_FRAMESIZE
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment