From: Alex Dowad <alexinbeijing@gmail.com> To: linux-kernel@vger.kernel.org Cc: Tony Luck <tony.luck@intel.com>, Fenghua Yu <fenghua.yu@intel.com>, Tejun Heo <tj@kernel.org>, Christoph Lameter <cl@linux.com>, Matt Fleming <matt.fleming@intel.com>, linux-ia64@vger.kernel.org (open list:IA64 (Itanium) PL...) Subject: [PATCH 13/32] ia64: copy_thread(): rename 'user_stack_size' argument to 'kthread_arg' Date: Fri, 13 Mar 2015 20:14:36 +0200 [thread overview] Message-ID: <1426270496-26362-3-git-send-email-alexinbeijing@gmail.com> (raw) In-Reply-To: <1426270496-26362-1-git-send-email-alexinbeijing@gmail.com> 'user_stack_size' is very misleading, since the argument is never used for the size of the user stack. Rather, it is an argument which is passed to the main function executed by a newly forked kernel thread. Hence, rename it to 'kthread_arg'. When forking a new user thread, the kernel thread arg was (uselessly) added to the new user stack pointer. This "worked", since the kernel thread arg is always zero when forking a user thread, but it was obviously not intended. Signed-off-by: Alex Dowad <alexinbeijing@gmail.com> --- arch/ia64/kernel/process.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c index b515149..d4a78da 100644 --- a/arch/ia64/kernel/process.c +++ b/arch/ia64/kernel/process.c @@ -300,7 +300,7 @@ ia64_load_extra (struct task_struct *task) } /* - * Copy the state of an ia-64 thread. + * Copy the architecture-specific state of an ia-64 thread. * * We get here through the following call chain: * @@ -332,7 +332,7 @@ ia64_load_extra (struct task_struct *task) */ int copy_thread(unsigned long clone_flags, - unsigned long user_stack_base, unsigned long user_stack_size, + unsigned long user_stack_base, unsigned long kthread_arg, struct task_struct *p) { extern char ia64_ret_from_clone; @@ -376,13 +376,14 @@ copy_thread(unsigned long clone_flags, ia64_drop_fpu(p); /* don't pick up stale state from a CPU's fph */ if (unlikely(p->flags & PF_KTHREAD)) { + /* kernel thread */ if (unlikely(!user_stack_base)) { /* fork_idle() called us */ return 0; } memset(child_stack, 0, sizeof(*child_ptregs) + sizeof(*child_stack)); child_stack->r4 = user_stack_base; /* payload */ - child_stack->r5 = user_stack_size; /* argument */ + child_stack->r5 = kthread_arg; /* * Preserve PSR bits, except for bits 32-34 and 37-45, * which we can't read. @@ -406,6 +407,8 @@ copy_thread(unsigned long clone_flags, return 0; } + + /* user thread */ stack = ((struct switch_stack *) regs) - 1; /* copy parent's switch_stack & pt_regs to child: */ memcpy(child_stack, stack, sizeof(*child_ptregs) + sizeof(*child_stack)); @@ -416,7 +419,7 @@ copy_thread(unsigned long clone_flags, if (clone_flags & CLONE_SETTLS) child_ptregs->r13 = regs->r16; /* see sys_clone2() in entry.S */ if (user_stack_base) { - child_ptregs->r12 = user_stack_base + user_stack_size - 16; + child_ptregs->r12 = user_stack_base - 16; child_ptregs->ar_bspstore = user_stack_base; child_ptregs->ar_rnat = 0; child_ptregs->loadrs = 0; -- 2.0.0.GIT
WARNING: multiple messages have this Message-ID (diff)
From: Alex Dowad <alexinbeijing@gmail.com> To: linux-kernel@vger.kernel.org Cc: Tony Luck <tony.luck@intel.com>, Fenghua Yu <fenghua.yu@intel.com>, Tejun Heo <tj@kernel.org>, Christoph Lameter <cl@linux.com>, Matt Fleming <matt.fleming@intel.com>, "open list:IA64 Itanium PL..." <linux-ia64@vger.kernel.org> Subject: [PATCH 13/32] ia64: copy_thread(): rename 'user_stack_size' argument to 'kthread_arg' Date: Fri, 13 Mar 2015 18:14:36 +0000 [thread overview] Message-ID: <1426270496-26362-3-git-send-email-alexinbeijing@gmail.com> (raw) In-Reply-To: <1426270496-26362-1-git-send-email-alexinbeijing@gmail.com> 'user_stack_size' is very misleading, since the argument is never used for the size of the user stack. Rather, it is an argument which is passed to the main function executed by a newly forked kernel thread. Hence, rename it to 'kthread_arg'. When forking a new user thread, the kernel thread arg was (uselessly) added to the new user stack pointer. This "worked", since the kernel thread arg is always zero when forking a user thread, but it was obviously not intended. Signed-off-by: Alex Dowad <alexinbeijing@gmail.com> --- arch/ia64/kernel/process.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c index b515149..d4a78da 100644 --- a/arch/ia64/kernel/process.c +++ b/arch/ia64/kernel/process.c @@ -300,7 +300,7 @@ ia64_load_extra (struct task_struct *task) } /* - * Copy the state of an ia-64 thread. + * Copy the architecture-specific state of an ia-64 thread. * * We get here through the following call chain: * @@ -332,7 +332,7 @@ ia64_load_extra (struct task_struct *task) */ int copy_thread(unsigned long clone_flags, - unsigned long user_stack_base, unsigned long user_stack_size, + unsigned long user_stack_base, unsigned long kthread_arg, struct task_struct *p) { extern char ia64_ret_from_clone; @@ -376,13 +376,14 @@ copy_thread(unsigned long clone_flags, ia64_drop_fpu(p); /* don't pick up stale state from a CPU's fph */ if (unlikely(p->flags & PF_KTHREAD)) { + /* kernel thread */ if (unlikely(!user_stack_base)) { /* fork_idle() called us */ return 0; } memset(child_stack, 0, sizeof(*child_ptregs) + sizeof(*child_stack)); child_stack->r4 = user_stack_base; /* payload */ - child_stack->r5 = user_stack_size; /* argument */ + child_stack->r5 = kthread_arg; /* * Preserve PSR bits, except for bits 32-34 and 37-45, * which we can't read. @@ -406,6 +407,8 @@ copy_thread(unsigned long clone_flags, return 0; } + + /* user thread */ stack = ((struct switch_stack *) regs) - 1; /* copy parent's switch_stack & pt_regs to child: */ memcpy(child_stack, stack, sizeof(*child_ptregs) + sizeof(*child_stack)); @@ -416,7 +419,7 @@ copy_thread(unsigned long clone_flags, if (clone_flags & CLONE_SETTLS) child_ptregs->r13 = regs->r16; /* see sys_clone2() in entry.S */ if (user_stack_base) { - child_ptregs->r12 = user_stack_base + user_stack_size - 16; + child_ptregs->r12 = user_stack_base - 16; child_ptregs->ar_bspstore = user_stack_base; child_ptregs->ar_rnat = 0; child_ptregs->loadrs = 0; -- 2.0.0.GIT
next prev parent reply other threads:[~2015-03-13 18:15 UTC|newest] Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-03-13 18:14 [PATCH 11/32] frv: copy_thread(): rename 'arg' argument to 'kthread_arg' Alex Dowad 2015-03-13 18:14 ` [PATCH 12/32] hexagon: " Alex Dowad 2015-03-13 18:14 ` Alex Dowad 2015-03-16 16:25 ` rkuo 2015-03-13 18:14 ` Alex Dowad [this message] 2015-03-13 18:14 ` [PATCH 13/32] ia64: copy_thread(): rename 'user_stack_size' " Alex Dowad 2015-03-14 17:54 ` Alex Dowad 2015-03-14 17:54 ` Alex Dowad 2015-03-13 18:14 ` [PATCH 14/32] m32r: copy_thread(): rename 'arg' " Alex Dowad 2015-03-13 18:14 ` [PATCH 15/32] m68k: " Alex Dowad 2015-03-13 18:14 ` Alex Dowad 2015-03-13 18:14 ` [PATCH 16/32] metag: " Alex Dowad 2015-03-13 18:14 ` Alex Dowad 2015-03-16 11:39 ` James Hogan 2015-03-16 11:39 ` James Hogan 2015-03-16 13:13 ` [PATCHv2 " Alex Dowad 2015-03-16 14:31 ` James Hogan 2015-03-16 14:31 ` James Hogan 2015-03-16 14:38 ` Alex Dowad 2015-03-16 14:38 ` [PATCHv3 " Alex Dowad 2015-03-16 14:52 ` James Hogan 2015-03-16 14:52 ` James Hogan 2015-03-13 18:14 ` [PATCH 17/32] microblaze: " Alex Dowad 2015-03-13 18:14 ` [PATCH 18/32] mips: " Alex Dowad 2015-03-13 18:14 ` Alex Dowad 2015-03-13 18:14 ` [PATCH 19/32] mn10300: copy_thread(): rename 'ustk_size' " Alex Dowad 2015-03-13 18:14 ` [PATCH 20/32] nios2: copy_thread(): rename 'arg' " Alex Dowad 2015-03-13 18:14 ` [PATCH 21/32] openrisc: " Alex Dowad 2015-03-13 18:14 ` [PATCH 22/32] parisc: " Alex Dowad 2015-03-13 18:14 ` [PATCH 23/32] powerpc: " Alex Dowad 2015-03-13 18:14 ` Alex Dowad 2015-03-19 6:45 ` [23/32] " Michael Ellerman 2015-03-19 6:45 ` Michael Ellerman 2015-03-19 7:22 ` Alex Dowad 2015-03-19 7:22 ` Alex Dowad 2015-03-19 23:54 ` Michael Ellerman 2015-03-19 23:54 ` Michael Ellerman 2015-03-24 19:49 ` Alex Dowad 2015-03-24 19:49 ` Alex Dowad 2015-03-25 1:35 ` Michael Ellerman 2015-03-25 1:35 ` Michael Ellerman 2015-03-13 18:14 ` [PATCH 24/32] s390: " Alex Dowad 2015-03-13 18:14 ` Alex Dowad 2015-03-13 18:14 ` [PATCH 25/32] score: " Alex Dowad 2015-03-13 18:14 ` [PATCH 26/32] sh: " Alex Dowad 2015-03-13 18:14 ` Alex Dowad 2015-03-13 18:14 ` [PATCH 27/32] sparc: " Alex Dowad 2015-03-13 18:14 ` Alex Dowad 2015-03-13 18:14 ` [PATCH 28/32] tile: " Alex Dowad 2015-03-16 20:19 ` Chris Metcalf 2015-03-16 20:44 ` Alex Dowad 2015-03-19 18:06 ` Chris Metcalf 2015-03-13 18:14 ` [PATCH 29/32] um: " Alex Dowad 2015-03-13 18:14 ` [PATCH 30/32] unicore32: copy_thread(): rename 'stk_sz' " Alex Dowad 2015-03-13 18:14 ` [PATCH 31/32] x86: copy_thread(): rename 'arg' " Alex Dowad 2015-03-13 18:14 ` [PATCH 32/32] xtensa: " Alex Dowad
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1426270496-26362-3-git-send-email-alexinbeijing@gmail.com \ --to=alexinbeijing@gmail.com \ --cc=cl@linux.com \ --cc=fenghua.yu@intel.com \ --cc=linux-ia64@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=matt.fleming@intel.com \ --cc=tj@kernel.org \ --cc=tony.luck@intel.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.