Jamie Gritton f7496dcab0 jail: Change the locking around pr_ref and pr_uref
Require both the prison mutex and allprison_lock when pr_ref or
pr_uref go to/from zero.  Adding a non-first or removing a non-last
reference remain lock-free.  This means that a shared hold on
allprison_lock is sufficient for prison_isalive() to be useful, which
removes a number of cases of lock/check/unlock on the prison mutex.

Expand the locking in kern_jail_set() to keep allprison_lock held
exclusive until the new prison is valid, thus making invalid prisons
invisible to any thread holding allprison_lock (except of course the
one creating or destroying the prison).  This renders prison_isvalid()
nearly redundant, now used only in asserts.

Differential Revision:	https://reviews.freebsd.org/D28419
Differential Revision:	https://reviews.freebsd.org/D28458
2021-02-21 10:55:44 -08:00
..
2020-02-26 16:22:28 +00:00
2021-01-02 19:57:58 -07:00
2020-10-05 15:54:19 +00:00
2020-11-19 02:50:48 +00:00
2020-12-04 18:56:44 +00:00
2021-01-18 09:51:48 +02:00
2020-11-05 15:08:56 +00:00
2018-10-12 00:32:45 +00:00
2020-11-09 00:34:23 +00:00
2020-08-13 20:48:14 +00:00
2019-02-20 09:38:19 +00:00
2020-12-01 16:06:31 +00:00
2020-01-12 23:52:16 +00:00
2020-08-27 05:11:15 +00:00
2021-02-09 17:09:44 +01:00
2021-02-21 00:43:05 +00:00
2021-02-21 00:43:05 +00:00