freebsd-dev/sys/cddl
Mark Johnston 4f1b715c84 Fix a tracepoint lookup race in fasttrap_pid_probe().
fasttrap hooks the userspace breakpoint handler; the hook looks up the
breakpoint address in a hash table of tracepoints.  It is possible for
the tracepoint to be removed by a different thread in between the
breakpoint trap and the hash table lookup, in which case SIGTRAP gets
delivered to the target process.  Fix the problem by adding a
per-process generation counter that gets incremented when a tracepoint
belonging to that process is removed.  Then, when a lookup fails, the
trapping instruction is restarted if the thread's counter doesn't match
that of the process.

Reviewed by:	cem
MFC after:	2 weeks
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D19273
2019-02-21 22:54:17 +00:00
..
boot/zfs zfsboot: support newer ZFS versions 2019-01-03 22:49:11 +00:00
compat/opensolaris Remove unused argument to priv_check_cred. 2018-12-11 19:32:16 +00:00
contrib/opensolaris Fix a tracepoint lookup race in fasttrap_pid_probe(). 2019-02-21 22:54:17 +00:00
dev Fix a tracepoint lookup race in fasttrap_pid_probe(). 2019-02-21 22:54:17 +00:00