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: Nicolas Iooss <nicolas.iooss_linux@m4x.org> Signed-off-by: Richard Weinberger <richard@nod.at>
This commit is contained in:
parent
05eacfd00c
commit
5f32943b5e
|
@ -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)
|
||||||
{
|
{
|
||||||
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,
|
||||||
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)
|
||||||
* 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)
|
||||||
|
|
||||||
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)
|
||||||
/* 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
|
||||||
|
|
Loading…
Reference in New Issue