提交 8053bdd5 编写于 作者: O Oleg Nesterov 提交者: Linus Torvalds

ptrace_get_task_struct: s/tasklist/rcu/, make it static

- Use rcu_read_lock() instead of tasklist_lock to find/get the task
  in ptrace_get_task_struct().

- Make it static, it has no callers outside of ptrace.c.

- The comment doesn't match the reality, this helper does not do
  any checks. Beacuse it is really trivial and static I removed the
  whole comment.
Signed-off-by: NOleg Nesterov <oleg@redhat.com>
Acked-by: NRoland McGrath <roland@redhat.com>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 4b105cbb
...@@ -81,7 +81,6 @@ ...@@ -81,7 +81,6 @@
extern long arch_ptrace(struct task_struct *child, long request, long addr, long data); extern long arch_ptrace(struct task_struct *child, long request, long addr, long data);
extern struct task_struct *ptrace_get_task_struct(pid_t pid);
extern int ptrace_traceme(void); extern int ptrace_traceme(void);
extern int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst, int len); extern int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst, int len);
extern int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long dst, int len); extern int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long dst, int len);
......
...@@ -581,26 +581,16 @@ int ptrace_request(struct task_struct *child, long request, ...@@ -581,26 +581,16 @@ int ptrace_request(struct task_struct *child, long request,
return ret; return ret;
} }
/** static struct task_struct *ptrace_get_task_struct(pid_t pid)
* ptrace_get_task_struct -- grab a task struct reference for ptrace
* @pid: process id to grab a task_struct reference of
*
* This function is a helper for ptrace implementations. It checks
* permissions and then grabs a task struct for use of the actual
* ptrace implementation.
*
* Returns the task_struct for @pid or an ERR_PTR() on failure.
*/
struct task_struct *ptrace_get_task_struct(pid_t pid)
{ {
struct task_struct *child; struct task_struct *child;
read_lock(&tasklist_lock); rcu_read_lock();
child = find_task_by_vpid(pid); child = find_task_by_vpid(pid);
if (child) if (child)
get_task_struct(child); get_task_struct(child);
rcu_read_unlock();
read_unlock(&tasklist_lock);
if (!child) if (!child)
return ERR_PTR(-ESRCH); return ERR_PTR(-ESRCH);
return child; return child;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册