Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 158d9ebd authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds
Browse files

[PATCH] resurrect __put_task_struct



This just got nuked in mainline.  Bring it back because Eric's patches use it.

Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 390e2ff0
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -906,6 +906,7 @@ extern void free_task(struct task_struct *tsk);
#define get_task_struct(tsk) do { atomic_inc(&(tsk)->usage); } while(0)

extern void __put_task_struct_cb(struct rcu_head *rhp);
extern void __put_task_struct(struct task_struct *t);

static inline void put_task_struct(struct task_struct *t)
{
+7 −3
Original line number Diff line number Diff line
@@ -108,10 +108,8 @@ void free_task(struct task_struct *tsk)
}
EXPORT_SYMBOL(free_task);

void __put_task_struct_cb(struct rcu_head *rhp)
void __put_task_struct(struct task_struct *tsk)
{
	struct task_struct *tsk = container_of(rhp, struct task_struct, rcu);

	WARN_ON(!(tsk->exit_state & (EXIT_DEAD | EXIT_ZOMBIE)));
	WARN_ON(atomic_read(&tsk->usage));
	WARN_ON(tsk == current);
@@ -126,6 +124,12 @@ void __put_task_struct_cb(struct rcu_head *rhp)
		free_task(tsk);
}

void __put_task_struct_cb(struct rcu_head *rhp)
{
	struct task_struct *tsk = container_of(rhp, struct task_struct, rcu);
	__put_task_struct(tsk);
}

void __init fork_init(unsigned long mempages)
{
#ifndef __HAVE_ARCH_TASK_STRUCT_ALLOCATOR