git: 31930b3a0dea - stable/13 - fork_norfproc(): unlock p1 before retrying
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 03 Sep 2022 01:29:22 UTC
The branch stable/13 has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=31930b3a0dead191adb008be6b2bce66804c91d8
commit 31930b3a0dead191adb008be6b2bce66804c91d8
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2022-08-10 17:03:31 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2022-09-03 01:17:36 +0000
fork_norfproc(): unlock p1 before retrying
(cherry picked from commit 5e9bba94bd7f6b61d6c9fcef239e963e55c1a87a)
---
sys/kern/kern_fork.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/sys/kern/kern_fork.c b/sys/kern/kern_fork.c
index 7cca7050c0ff..862e61bad207 100644
--- a/sys/kern/kern_fork.c
+++ b/sys/kern/kern_fork.c
@@ -322,13 +322,11 @@ again:
if ((p1->p_flag & (P_HADTHREADS | P_SYSTEM)) == P_HADTHREADS &&
((flags & (RFCFDG | RFFDG)) != 0 || (flags & RFMEM) == 0)) {
PROC_LOCK(p1);
- while (p1->p_singlethr > 0) {
+ if (p1->p_singlethr > 0) {
error = msleep(&p1->p_singlethr, &p1->p_mtx,
- PWAIT | PCATCH, "rfork1t", 0);
- if (error != 0) {
- PROC_UNLOCK(p1);
+ PWAIT | PCATCH | PDROP, "rfork1t", 0);
+ if (error != 0)
return (ERESTART);
- }
goto again;
}
if (thread_single(p1, SINGLE_BOUNDARY)) {