diff options
Diffstat (limited to 'arch/um/kernel/skas/clone.c')
-rw-r--r-- | arch/um/kernel/skas/clone.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/arch/um/kernel/skas/clone.c b/arch/um/kernel/skas/clone.c index 39c0d7145d31..cb37ce9124a6 100644 --- a/arch/um/kernel/skas/clone.c +++ b/arch/um/kernel/skas/clone.c | |||
@@ -9,9 +9,13 @@ | |||
9 | #include "stub-data.h" | 9 | #include "stub-data.h" |
10 | #include "uml-config.h" | 10 | #include "uml-config.h" |
11 | #include "sysdep/stub.h" | 11 | #include "sysdep/stub.h" |
12 | #include "kern_constants.h" | ||
12 | 13 | ||
13 | /* This is in a separate file because it needs to be compiled with any | 14 | /* This is in a separate file because it needs to be compiled with any |
14 | * extraneous gcc flags (-pg, -fprofile-arcs, -ftest-coverage) disabled | 15 | * extraneous gcc flags (-pg, -fprofile-arcs, -ftest-coverage) disabled |
16 | * | ||
17 | * Use UM_KERN_PAGE_SIZE instead of PAGE_SIZE because that calls getpagesize | ||
18 | * on some systems. | ||
15 | */ | 19 | */ |
16 | 20 | ||
17 | #define STUB_DATA(field) (((struct stub_data *) UML_CONFIG_STUB_DATA)->field) | 21 | #define STUB_DATA(field) (((struct stub_data *) UML_CONFIG_STUB_DATA)->field) |
@@ -22,7 +26,7 @@ stub_clone_handler(void) | |||
22 | long err; | 26 | long err; |
23 | 27 | ||
24 | err = stub_syscall2(__NR_clone, CLONE_PARENT | CLONE_FILES | SIGCHLD, | 28 | err = stub_syscall2(__NR_clone, CLONE_PARENT | CLONE_FILES | SIGCHLD, |
25 | UML_CONFIG_STUB_DATA + PAGE_SIZE / 2 - | 29 | UML_CONFIG_STUB_DATA + UM_KERN_PAGE_SIZE / 2 - |
26 | sizeof(void *)); | 30 | sizeof(void *)); |
27 | if(err != 0) | 31 | if(err != 0) |
28 | goto out; | 32 | goto out; |
@@ -36,9 +40,10 @@ stub_clone_handler(void) | |||
36 | if(err) | 40 | if(err) |
37 | goto out; | 41 | goto out; |
38 | 42 | ||
39 | err = stub_syscall6(STUB_MMAP_NR, UML_CONFIG_STUB_DATA, PAGE_SIZE, | 43 | err = stub_syscall6(STUB_MMAP_NR, UML_CONFIG_STUB_DATA, |
40 | PROT_READ | PROT_WRITE, MAP_FIXED | MAP_SHARED, | 44 | UM_KERN_PAGE_SIZE, PROT_READ | PROT_WRITE, |
41 | STUB_DATA(fd), STUB_DATA(offset)); | 45 | MAP_FIXED | MAP_SHARED, STUB_DATA(fd), |
46 | STUB_DATA(offset)); | ||
42 | out: | 47 | out: |
43 | /* save current result. Parent: pid; child: retcode of mmap */ | 48 | /* save current result. Parent: pid; child: retcode of mmap */ |
44 | STUB_DATA(err) = err; | 49 | STUB_DATA(err) = err; |