Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 319976
b: refs/heads/master
c: f19b9f7
h: refs/heads/master
v: v3
  • Loading branch information
Akinobu Mita authored and Linus Torvalds committed Jul 31, 2012
1 parent a6bf304 commit ab45c5a
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 13 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 87bec58a52652e2eb2a575692a40f9466c7bd31b
refs/heads/master: f19b9f74b7ea3b21ddcee55d852a6488239608a4
27 changes: 15 additions & 12 deletions trunk/kernel/fork.c
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,10 @@ int nr_processes(void)
return total;
}

void __weak arch_release_task_struct(struct task_struct *tsk)
{
}

#ifndef CONFIG_ARCH_TASK_STRUCT_ALLOCATOR
static struct kmem_cache *task_struct_cachep;

Expand All @@ -122,17 +126,17 @@ static inline struct task_struct *alloc_task_struct_node(int node)
return kmem_cache_alloc_node(task_struct_cachep, GFP_KERNEL, node);
}

void __weak arch_release_task_struct(struct task_struct *tsk) { }

static inline void free_task_struct(struct task_struct *tsk)
{
arch_release_task_struct(tsk);
kmem_cache_free(task_struct_cachep, tsk);
}
#endif

void __weak arch_release_thread_info(struct thread_info *ti)
{
}

#ifndef CONFIG_ARCH_THREAD_INFO_ALLOCATOR
void __weak arch_release_thread_info(struct thread_info *ti) { }

/*
* Allocate pages if THREAD_SIZE is >= PAGE_SIZE, otherwise use a
Expand All @@ -150,7 +154,6 @@ static struct thread_info *alloc_thread_info_node(struct task_struct *tsk,

static inline void free_thread_info(struct thread_info *ti)
{
arch_release_thread_info(ti);
free_pages((unsigned long)ti, THREAD_SIZE_ORDER);
}
# else
Expand All @@ -164,7 +167,6 @@ static struct thread_info *alloc_thread_info_node(struct task_struct *tsk,

static void free_thread_info(struct thread_info *ti)
{
arch_release_thread_info(ti);
kmem_cache_free(thread_info_cache, ti);
}

Expand Down Expand Up @@ -205,10 +207,12 @@ static void account_kernel_stack(struct thread_info *ti, int account)
void free_task(struct task_struct *tsk)
{
account_kernel_stack(tsk->stack, -1);
arch_release_thread_info(tsk->stack);
free_thread_info(tsk->stack);
rt_mutex_debug_task_free(tsk);
ftrace_graph_exit_task(tsk);
put_seccomp_filter(tsk);
arch_release_task_struct(tsk);
free_task_struct(tsk);
}
EXPORT_SYMBOL(free_task);
Expand Down Expand Up @@ -298,14 +302,12 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
return NULL;

ti = alloc_thread_info_node(tsk, node);
if (!ti) {
free_task_struct(tsk);
return NULL;
}
if (!ti)
goto free_tsk;

err = arch_dup_task_struct(tsk, orig);
if (err)
goto out;
goto free_ti;

tsk->stack = ti;

Expand Down Expand Up @@ -333,8 +335,9 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)

return tsk;

out:
free_ti:
free_thread_info(ti);
free_tsk:
free_task_struct(tsk);
return NULL;
}
Expand Down

0 comments on commit ab45c5a

Please sign in to comment.