|
@@ -108,10 +108,8 @@ void free_task(struct task_struct *tsk)
|
|
}
|
|
}
|
|
EXPORT_SYMBOL(free_task);
|
|
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(!(tsk->exit_state & (EXIT_DEAD | EXIT_ZOMBIE)));
|
|
WARN_ON(atomic_read(&tsk->usage));
|
|
WARN_ON(atomic_read(&tsk->usage));
|
|
WARN_ON(tsk == current);
|
|
WARN_ON(tsk == current);
|
|
@@ -126,6 +124,12 @@ void __put_task_struct_cb(struct rcu_head *rhp)
|
|
free_task(tsk);
|
|
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)
|
|
void __init fork_init(unsigned long mempages)
|
|
{
|
|
{
|
|
#ifndef __HAVE_ARCH_TASK_STRUCT_ALLOCATOR
|
|
#ifndef __HAVE_ARCH_TASK_STRUCT_ALLOCATOR
|