[Bug 297335] dtrace(1): FBT probe on an NMI-reachable function re-enters dtrace_probe() and panics an INVARIANTS kernel

[email protected]
Newsgroups gmane.os.freebsd.bugs
Message-ID <[email protected]/bugzilla/>
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=297335

Mark Johnston <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|New                         |Open

--- Comment #1 from Mark Johnston <[email protected]> ---
> An NMI cannot interrupt itself — further NMIs are blocked until IRET

This is a problem in itself. dtrace fbt probes install breakpoints in kernel
text; once the dtrace probe fires and the handler runs, we return to the
original context via iret.  If that happens in the context of an NMI handler,
then dtrace will silently re-enable NMIs while the NMI handler continues
executing.  The amd64 NMI handler is not re-entrant, so if a second NMI is
raised before the handler finishes, then we will crash.

For the original problem, probably it's sufficient to ensure that
dtrace_probe() simply returns early if it detects it's in an NMI handler?  And
it should increment an error counter so that the user can see that it's
dropping events.

-- 
You are receiving this mail because:
You are the assignee for the bug.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.