[RFC PATCHSET] ptrace,signal: Fix notifications to the real parent while ptraced

From: Tejun Heo
Date: Tue Mar 08 2011 - 14:58:08 EST


Hello,

This patchset implements "P2. Fix notifications to the real parent" of
the ptrace job control improvements proposal[1].

As the whole job control / ptrace logic is quite delicate, I tried to
be very granual with changes and add plenty of explanations for
subtleties.

This patchset contains the following eight patches.

0001-job-control-Don-t-set-group_stop-exit_code-if-re-ent.patch
0002-job-control-Small-reorganization-of-wait_consider_ta.patch
0003-job-control-Fix-ptracer-wait-2-hang-and-explain-nota.patch
0004-job-control-Allow-access-to-job-control-events-throu.patch
0005-job-control-Add-for_ptrace-to-do_notify_parent_cldst.patch
0006-job-control-Job-control-stop-notifications-should-al.patch
0007-job-control-Notify-the-real-parent-of-job-control-ev.patch
0008-job-control-Don-t-send-duplicate-job-control-stop-no.patch

0001-0003 fix subtle issues and prepare for wait(2) related changes.
I don't think any of this needs to be backported. 0004 make the job
control stopped/continued states visible to the real parent regardless
of ptrace.

0005-0006 prepare for notification related changes. 0007-0008 enable
proper job control notifications to the real parent regardless of
ptrace.

This patchset introduces behavior changes; however, all the changes
are visible only to the real parent. As basically everything job
control related was broken while ptraced, I don't think these changes
need to be conditionalized (ie. enabled only when explicitly told so).
Doing so is likely to only increase confusion with few benefits.

After this patchset, I can ^Z a strace(1) attached command and get a
shell prompt. The interaction of course is not perfect yet because
strace(1) currently unconditionally overrides job control stop, but
it's a progress. For strace(1) itself, nothing really changes.

This patchset is based on 2.6.38-rc7 (212e3499b2) + "group stop /
ptrace updates, take#2" patchset[2] which implements P1. The git
branch for the P1 patchset has been regenerated with Oleg's Acked-by's
added and available in ptrace-review-P1 branch.

This patchset is available in the following git branch.

git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc.git ptrace-review-P2

HEAD is fbbe61c532ba23d2d00bff7c2b354e0522ae4afc. git.korg takes some
time to sync so if it shows older commit, please try again after a
while. diffstat follows.

kernel/exit.c | 83 +++++++++++++++++++++++++++++++---------
kernel/signal.c | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++------
2 files changed, 170 insertions(+), 29 deletions(-)

Thanks.

--
tejun

[1] http://thread.gmane.org/gmane.linux.kernel/1107045
[2] http://thread.gmane.org/gmane.linux.kernel/1109224
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/