hrev56212 adds 1 changeset to branch 'master'
old head: 7e1c1d30203733161a787736c569b1fb1b5bd1b6
new head: a928b16e36678dc22bdb753b4663a5882435a1ad
overview:
https://git.haiku-os.org/haiku/log/?qt=range&q=a928b16e3667+%5E7e1c1d302037
----------------------------------------------------------------------------
a928b16e3667: freebsd_network: Unlock the taskqueue before waiting for threads.
Also set tq_threads to NULL to prevent double-frees.
[ Augustin Cavalier <waddlesplash@xxxxxxxxx> ]
----------------------------------------------------------------------------
Revision: hrev56212
Commit: a928b16e36678dc22bdb753b4663a5882435a1ad
URL: https://git.haiku-os.org/haiku/commit/?id=a928b16e3667
Author: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date: Wed Jun 22 04:34:37 2022 UTC
----------------------------------------------------------------------------
1 file changed, 6 insertions(+)
src/libs/compat/freebsd_network/taskqueue.c | 6 ++++++
----------------------------------------------------------------------------
diff --git a/src/libs/compat/freebsd_network/taskqueue.c
b/src/libs/compat/freebsd_network/taskqueue.c
index 50163c576f..85582582fc 100644
--- a/src/libs/compat/freebsd_network/taskqueue.c
+++ b/src/libs/compat/freebsd_network/taskqueue.c
@@ -111,7 +111,10 @@ taskqueue_terminate(struct thread **pp, struct taskqueue
*tq)
if (tq->tq_sem == -1)
return;
+ TQ_UNLOCK(tq);
+
delete_sem(tq->tq_sem);
+ tq->tq_sem = -1;
for (int i = 0; i < tq->tq_threadcount; i++) {
status_t status;
@@ -120,6 +123,9 @@ taskqueue_terminate(struct thread **pp, struct taskqueue
*tq)
if (tq->tq_threadcount > 1)
free(tq->tq_threads);
+ tq->tq_threads = NULL;
+
+ TQ_LOCK(tq);
}