diff options
author | Josh Triplett <josh@joshtriplett.org> | 2015-06-05 15:03:34 +1000 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2015-06-05 15:03:34 +1000 |
commit | 737dbabb4bdf2e04422f2b1fa02c3415feb91378 (patch) | |
tree | fe9872a7f2f88ebd0d6f379d16b1c398ea3fabc2 | |
parent | 1bbe5834c796a86bc5e8b960d692d77cebfaa181 (diff) | |
download | linux-next-737dbabb4bdf2e04422f2b1fa02c3415feb91378.tar.gz |
clone-support-passing-tls-argument-via-c-rather-than-pt_regs-magic-fix
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-rw-r--r-- | drivers/misc/kgdbts.c | 2 | ||||
-rw-r--r-- | include/linux/sched.h | 1 | ||||
-rw-r--r-- | kernel/fork.c | 13 |
3 files changed, 8 insertions, 8 deletions
diff --git a/drivers/misc/kgdbts.c b/drivers/misc/kgdbts.c index 36f5d52775a98..9a60bd4d3c494 100644 --- a/drivers/misc/kgdbts.c +++ b/drivers/misc/kgdbts.c @@ -220,7 +220,7 @@ static unsigned long lookup_addr(char *arg) else if (!strcmp(arg, "sys_open")) addr = (unsigned long)do_sys_open; else if (!strcmp(arg, "do_fork")) - addr = (unsigned long)do_fork; + addr = (unsigned long)_do_fork; else if (!strcmp(arg, "hw_break_val")) addr = (unsigned long)&hw_break_val; addr = (unsigned long) dereference_function_descriptor((void *)addr); diff --git a/include/linux/sched.h b/include/linux/sched.h index 5b27df73797d0..96ac754b72c79 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -2523,6 +2523,7 @@ extern int do_execveat(int, struct filename *, const char __user * const __user *, const char __user * const __user *, int); +extern long _do_fork(unsigned long, unsigned long, unsigned long, int __user *, int __user *, unsigned long); extern long do_fork(unsigned long, unsigned long, unsigned long, int __user *, int __user *); struct task_struct *fork_idle(int); extern pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); diff --git a/kernel/fork.c b/kernel/fork.c index 0ea8ce9466b96..3bb13a093af52 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -1676,13 +1676,12 @@ struct task_struct *fork_idle(int cpu) * It copies the process, and if successful kick-starts * it and waits for it to finish using the VM if required. */ -static long _do_fork( - unsigned long clone_flags, - unsigned long stack_start, - unsigned long stack_size, - int __user *parent_tidptr, - int __user *child_tidptr, - unsigned long tls) +long _do_fork(unsigned long clone_flags, + unsigned long stack_start, + unsigned long stack_size, + int __user *parent_tidptr, + int __user *child_tidptr, + unsigned long tls) { struct task_struct *p; int trace = 0; |