Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
posix-cpu-timers: Rcu_read_lock/unlock protect find_task_by_vpid call

+6 -6
+6 -6
kernel/posix-cpu-timers.c
··· 37 37 if (pid == 0) 38 38 return 0; 39 39 40 - read_lock(&tasklist_lock); 40 + rcu_read_lock(); 41 41 p = find_task_by_vpid(pid); 42 42 if (!p || !(CPUCLOCK_PERTHREAD(which_clock) ? 43 - same_thread_group(p, current) : thread_group_leader(p))) { 43 + same_thread_group(p, current) : has_group_leader_pid(p))) { 44 44 error = -EINVAL; 45 45 } 46 - read_unlock(&tasklist_lock); 46 + rcu_read_unlock(); 47 47 48 48 return error; 49 49 } ··· 390 390 391 391 INIT_LIST_HEAD(&new_timer->it.cpu.entry); 392 392 393 - read_lock(&tasklist_lock); 393 + rcu_read_lock(); 394 394 if (CPUCLOCK_PERTHREAD(new_timer->it_clock)) { 395 395 if (pid == 0) { 396 396 p = current; ··· 404 404 p = current->group_leader; 405 405 } else { 406 406 p = find_task_by_vpid(pid); 407 - if (p && !thread_group_leader(p)) 407 + if (p && !has_group_leader_pid(p)) 408 408 p = NULL; 409 409 } 410 410 } ··· 414 414 } else { 415 415 ret = -EINVAL; 416 416 } 417 - read_unlock(&tasklist_lock); 417 + rcu_read_unlock(); 418 418 419 419 return ret; 420 420 }