projects/linux·commit aaa2a97e

[PATCH] sys_get_robust_list(): don't take tasklist_lock

aaa2a97e · Oleg Nesterov <[email protected]> · 2006-09-29 02:00:55 -07:00

use rcu locks for find_task_by_pid().

Signed-off-by: Oleg Nesterov <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Commit
aaa2a97eb9c0e91d7abc66bf76811a9599fdb3ee
Parents
d359b549

Changes

1 files changed · +3 −3

FileStatusAddDelContent
kernel/futex.cmodified+3−3View file

kernel/futex.c

View file
diff --git a/kernel/futex.c b/kernel/futex.c
index ca8ef11..4b6770e 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -1624,7 +1624,7 @@ sys_get_robust_list(int pid, struct robust_list_head __user **head_ptr,
struct task_struct *p;
ret = -ESRCH;
- read_lock(&tasklist_lock);
+ rcu_read_lock();
p = find_task_by_pid(pid);
if (!p)
goto err_unlock;
@@ -1633,7 +1633,7 @@ sys_get_robust_list(int pid, struct robust_list_head __user **head_ptr,
!capable(CAP_SYS_PTRACE))
goto err_unlock;
head = p->robust_list;
- read_unlock(&tasklist_lock);
+ rcu_read_unlock();
}
if (put_user(sizeof(*head), len_ptr))
@@ -1641,7 +1641,7 @@ sys_get_robust_list(int pid, struct robust_list_head __user **head_ptr,
return put_user(head, head_ptr);
err_unlock:
- read_unlock(&tasklist_lock);
+ rcu_read_unlock();
return ret;
}