lkml.org 
[lkml]   [2021]   [Mar]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH v3 06/11] perf: Add support for SIGTRAP on perf events
    On Mon, 29 Mar 2021 at 16:27, Oleg Nesterov <oleg@redhat.com> wrote:
    > On 03/29, Peter Zijlstra wrote:
    > >
    > > On Thu, Mar 25, 2021 at 09:14:39AM +0100, Marco Elver wrote:
    > > > @@ -6395,6 +6395,13 @@ static void perf_sigtrap(struct perf_event *event)
    > > > {
    > > > struct kernel_siginfo info;
    > > >
    > > > + /*
    > > > + * This irq_work can race with an exiting task; bail out if sighand has
    > > > + * already been released in release_task().
    > > > + */
    > > > + if (!current->sighand)
    > > > + return;
    >
    > This is racy. If "current" has already passed exit_notify(), current->parent
    > can do release_task() and destroy current->sighand right after the check.
    >
    > > Urgh.. I'm not entirely sure that check is correct, but I always forget
    > > the rules with signal. It could be we ought to be testing PF_EXISTING
    > > instead.
    >
    > Agreed, PF_EXISTING check makes more sense in any case, the exiting task
    > can't receive the signal anyway.

    So, per off-list discussion, it appears that I should ask to clarify:
    PF_EXISTING or PF_EXITING?

    It appears that PF_EXISTING is what's being suggested, whereas it has
    not been mentioned anywhere, nor are its semantics clear. If it is not
    simply the negation of PF_EXITING, what are its semantics? And why do
    we need it in the case here (instead of something else that already
    exists)?

    Thanks,
    -- Marco

    \
     
     \ /
      Last update: 2021-03-29 20:25    [W:2.242 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site