summaryrefslogtreecommitdiff
path: root/drivers/ide/qd65xx.c
diff options
context:
space:
mode:
authorSergey Senozhatsky <sergey.senozhatsky@gmail.com>2010-11-03 18:52:56 +0200
committerThomas Gleixner <tglx@linutronix.de>2010-11-10 13:07:06 +0100
commitc0deae8c9587419ab13874b74425ce2eb2e18508 (patch)
tree54887135a674951d19e169b5ff17a866b16d7cbe /drivers/ide/qd65xx.c
parent814ce2521121c2459e16cea8c7221e157edbeddd (diff)
posix-cpu-timers: Rcu_read_lock/unlock protect find_task_by_vpid call
Commit 4221a9918e38b7494cee341dda7b7b4bb8c04bde "Add RCU check for find_task_by_vpid()" introduced rcu_lockdep_assert to find_task_by_pid_ns. Add rcu_read_lock/rcu_read_unlock to call find_task_by_vpid. Tetsuo Handa wrote: | Quoting from one of posts in that thead | http://kerneltrap.org/mailarchive/linux-kernel/2010/2/8/4536388 | || Usually tasklist gives enough protection, but if copy_process() fails || it calls free_pid() lockless and does call_rcu(delayed_put_pid(). || This means, without rcu lock find_pid_ns() can't scan the hash table || safely. Thomas Gleixner wrote: | We can remove the tasklist_lock while at it. rcu_read_lock is enough. Patch also replaces thread_group_leader with has_group_leader_pid in accordance to comment by Oleg Nesterov: | ... thread_group_leader() check is not relaible without | tasklist. If we race with de_thread() find_task_by_vpid() can find | the new leader before it updates its ->group_leader. | | perhaps it makes sense to change posix_cpu_timer_create() to use | has_group_leader_pid() instead, just to make this code not look racy | and avoid adding new problems. Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Stanislaw Gruszka <sgruszka@redhat.com> Reviewed-by: Oleg Nesterov <oleg@redhat.com> LKML-Reference: <20101103165256.GD30053@swordfish.minsk.epam.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'drivers/ide/qd65xx.c')
0 files changed, 0 insertions, 0 deletions