diff options
Diffstat (limited to 'kernel/fork.c')
| -rw-r--r-- | kernel/fork.c | 9 | 
1 files changed, 7 insertions, 2 deletions
| diff --git a/kernel/fork.c b/kernel/fork.c index 07cddff89c7b..e2a5156bc9c3 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -240,8 +240,10 @@ static unsigned long *alloc_thread_stack_node(struct task_struct *tsk, int node)  	 * free_thread_stack() can be called in interrupt context,  	 * so cache the vm_struct.  	 */ -	if (stack) +	if (stack) {  		tsk->stack_vm_area = find_vm_area(stack); +		tsk->stack = stack; +	}  	return stack;  #else  	struct page *page = alloc_pages_node(node, THREADINFO_GFP, @@ -288,7 +290,10 @@ static struct kmem_cache *thread_stack_cache;  static unsigned long *alloc_thread_stack_node(struct task_struct *tsk,  						  int node)  { -	return kmem_cache_alloc_node(thread_stack_cache, THREADINFO_GFP, node); +	unsigned long *stack; +	stack = kmem_cache_alloc_node(thread_stack_cache, THREADINFO_GFP, node); +	tsk->stack = stack; +	return stack;  }  static void free_thread_stack(struct task_struct *tsk) | 
