ptrace: use bit_waitqueue for TRAPPING instead of wait_chldexit
authorTejun Heo <tj@kernel.org>
Thu, 2 Jun 2011 09:14:00 +0000 (11:14 +0200)
committerOleg Nesterov <oleg@redhat.com>
Sat, 4 Jun 2011 16:17:11 +0000 (18:17 +0200)
commit62c124ff3bcdb414af635c2bf822c9e4f2a5abfa
tree5d279211e098d24245d49e394d84aa8cfdb6f277
parent7dd3db54e77d21eb95e145f19ba53f68250d0e73
ptrace: use bit_waitqueue for TRAPPING instead of wait_chldexit

ptracer->signal->wait_chldexit was used to wait for TRAPPING; however,
->wait_chldexit was already complicated with waker-side filtering
without adding TRAPPING wait on top of it.  Also, it unnecessarily
made TRAPPING clearing depend on the current ptrace relationship - if
the ptracee is detached, wakeup is lost.

There is no reason to use signal->wait_chldexit here.  We're just
waiting for JOBCTL_TRAPPING bit to clear and given the relatively
infrequent use of ptrace, bit_waitqueue can serve it perfectly.

This patch makes JOBCTL_TRAPPING wait use bit_waitqueue instead of
signal->wait_chldexit.

-v2: Use JOBCTL_*_BIT macros instead of ilog2() as suggested by Linus.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
kernel/ptrace.c
kernel/signal.c