]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
proc: Relax proc_rwmem()'s assertion on the process hold count
authorMark Johnston <markj@FreeBSD.org>
Tue, 1 Mar 2022 16:48:39 +0000 (11:48 -0500)
committerMark Johnston <markj@FreeBSD.org>
Tue, 1 Mar 2022 17:40:35 +0000 (12:40 -0500)
commit12fb39ec3e6bc529feff3ba2862c6a4a30bd54eb
tree91d5f5204da89bc029976f1fe4cff96004da4ba2
parentf27fb06cadc6a8e75ebebd3b60c8a9dc9ae1b833
proc: Relax proc_rwmem()'s assertion on the process hold count

This reference ensures that the process and its associated vmspace will
not be destroyed while proc_rwmem() is executing.  If, however, the
calling thread belongs to the target process, then it is unnecessary to
hold the process.  In particular, fasttrap - a module which enables
userspace dtrace - may frequently call proc_rwmem(), and we'd prefer to
avoid the overhead of locking and bumping the hold count when possible.

Thus, make the assertion conditional on "p != curproc".  Also assert
that the process is not already exiting.  No functional change intended.

MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
sys/kern/sys_process.c