HomeFreeBSD

In hwpmc, do not double-close the logging file.

Description

In hwpmc, do not double-close the logging file.

hwpmc(4) must not voluntarily call fo_close(), doing this causes
double-close of the file. It seems to almost avoid bad consequences
for pipes, but other types of files demonstrate random memory access.

To fix, remove fo_close() calls, which also do not provide the
declared wake-up of waiters consistently. Instead, send a signal to
the logger and configure the logger process to not block it. Since
logger never returns to userspace, the signal only causes termination
of the interruptible sleeps in fo_write().

Reported and tested by: pho
Reviewed by: markj
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
X-Differential revision: https://reviews.freebsd.org/D12882

Details

Provenance
kibAuthored on
Reviewer
markj
Parents
rS325274: There is no use for dropping Giant in the pmc syscall.
Branches
Unknown
Tags
Unknown