Is perf_sigtrap synchronous?

From: Eric W. Biederman
Date: Fri Apr 30 2021 - 19:24:04 EST



I am looking at perf_sigtrap and I am confused by the code.


/*
* We'd expect this to only occur if the irq_work is delayed and either
* ctx->task or current has changed in the meantime. This can be the
* case on architectures that do not implement arch_irq_work_raise().
*/
if (WARN_ON_ONCE(event->ctx->task != current))
return;

/*
* perf_pending_event() can race with the task exiting.
*/
if (current->flags & PF_EXITING)
return;


It performs tests that absolutely can never fail if we are talking about
a synchronous exception. The code force_sig family of functions only
make sense to use with and are only safe to use with synchronous
exceptions.

Are the tests in perf_sigtrap necessary or is perf_sigtrap not reporting
a synchronous event?

Eric