aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJamie Gritton <jamie@FreeBSD.org>2021-02-26 03:52:58 +0000
committerJamie Gritton <jamie@FreeBSD.org>2021-02-26 03:52:58 +0000
commit108a9384e9e945cccba73c959f7e9cdb023cbcad (patch)
tree5301129c9c988a260f213304e09921f2b1282a62
parent1fc928770b5db5bafb7386c7a3bd4918a0d7e876 (diff)
downloadsrc-108a9384e9e945cccba73c959f7e9cdb023cbcad.tar.gz
src-108a9384e9e945cccba73c959f7e9cdb023cbcad.zip
jail: Fix locking on an early jail_set error.
I had locked allprison_lock without immediately setting PD_LIST_LOCKED.
-rw-r--r--sys/kern/kern_jail.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/kern/kern_jail.c b/sys/kern/kern_jail.c
index c58751e6f5fe..c8dcf928dfaa 100644
--- a/sys/kern/kern_jail.c
+++ b/sys/kern/kern_jail.c
@@ -998,13 +998,13 @@ kern_jail_set(struct thread *td, struct uio *optuio, int flags)
jid = 0;
}
sx_xlock(&allprison_lock);
+ drflags = PD_LIST_XLOCKED;
ppr = mypr;
if (!prison_isalive(ppr)) {
/* This jail is dying. This process will surely follow. */
error = EAGAIN;
goto done_deref;
}
- drflags = PD_LIST_XLOCKED;
if (jid != 0) {
if (jid < 0) {
error = EINVAL;