From: Andrew Morton This just got nuked in mainline. Bring it back because Eric's patches use it. Cc: "Eric W. Biederman" Signed-off-by: Andrew Morton --- include/linux/sched.h | 1 + kernel/fork.c | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff -puN include/linux/sched.h~resurrect-__put_task_struct include/linux/sched.h --- devel/include/linux/sched.h~resurrect-__put_task_struct 2006-03-16 02:09:13.000000000 -0800 +++ devel-akpm/include/linux/sched.h 2006-03-16 02:09:13.000000000 -0800 @@ -925,6 +925,7 @@ extern void free_task(struct task_struct #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) { diff -puN kernel/fork.c~resurrect-__put_task_struct kernel/fork.c --- devel/kernel/fork.c~resurrect-__put_task_struct 2006-03-16 02:09:13.000000000 -0800 +++ devel-akpm/kernel/fork.c 2006-03-16 02:09:13.000000000 -0800 @@ -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_hea 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 _