* In the case of a seek we start with the leader and walk nr
  * threads past it.
  */
-static struct task_struct *first_tid(struct task_struct *leader, int tid, int nr)
+static struct task_struct *first_tid(struct task_struct *leader,
+                                       int tid, int nr)
 {
        struct task_struct *pos = NULL;
-       read_lock(&tasklist_lock);
 
+       rcu_read_lock();
        /* Attempt to start with the pid of a thread */
        if (tid && (nr > 0)) {
                pos = find_task_by_pid(tid);
        }
        pos = NULL;
 done:
-       read_unlock(&tasklist_lock);
+       rcu_read_unlock();
        return pos;
 }
 
 static struct task_struct *next_tid(struct task_struct *start)
 {
        struct task_struct *pos;
-       read_lock(&tasklist_lock);
+       rcu_read_lock();
        pos = start;
        if (pid_alive(start))
                pos = next_thread(start);
                get_task_struct(pos);
        else
                pos = NULL;
-       read_unlock(&tasklist_lock);
+       rcu_read_unlock();
        put_task_struct(start);
        return pos;
 }