aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/um/kernel/skas/clone.c13
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;