CVSROOT: /cvs Module name: src Changes by: an...@cvs.openbsd.org 2022/01/10 23:00:41
Modified files: sys/dev : kcov.c Log message: In revision 1.43 of kcov.c, the redundant conditional of checking for an exising kcov descriptor with the given device minor was removed since kcov is a cloning device; i.e. the device minor should always be unique. However, there's one edge case to still consider in which one thread have tracing enabled while another thread closes the same kcov descriptor. The kcov descriptor is kept alive until thread with tracing enabled exits to prevent usage after free. This does however cause the spec file layer above to flag the device minor as unused. Any subsequent open of /dev/kcov would trip on the assertion in kcovopen() until the thread with tracing enabled exits. Therefore unconditionally remove the kcov descriptor from the global list of active descriptors which is fine since the same kcov descriptor will later be freed in kcov_exit(). I have never seen this in the wild but realized while hunting another bug.