aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/android/lowmemorykiller.c5
-rw-r--r--kernel/fork.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/drivers/staging/android/lowmemorykiller.c b/drivers/staging/android/lowmemorykiller.c
index caa7d3d..239d32d 100644
--- a/drivers/staging/android/lowmemorykiller.c
+++ b/drivers/staging/android/lowmemorykiller.c
@@ -450,7 +450,10 @@ void add_2_adj_tree(struct task_struct *task)
void delete_from_adj_tree(struct task_struct *task)
{
spin_lock(&lmk_lock);
- rb_erase(&task->adj_node, &tasks_scoreadj);
+ if (!RB_EMPTY_NODE(&task->adj_node)) {
+ rb_erase(&task->adj_node, &tasks_scoreadj);
+ RB_CLEAR_NODE(&task->adj_node);
+ }
spin_unlock(&lmk_lock);
}
diff --git a/kernel/fork.c b/kernel/fork.c
index c1760e6..ba7e2bc 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -317,6 +317,8 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
account_kernel_stack(ti, 1);
+ RB_CLEAR_NODE(&tsk->adj_node);
+
return tsk;
out: