From 35ac5568e6fd81bab048686163a9ae173ba06f45 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Thu, 16 Feb 2023 19:23:17 +0100 Subject: mach-defpager: Fix crash on pthread_cond_broadcast We need to keep ds locked, otherwise it might disappear before we have a chance to broadcast the condition. --- mach-defpager/default_pager.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'mach-defpager') diff --git a/mach-defpager/default_pager.c b/mach-defpager/default_pager.c index 02d1f1a9..4ba9763f 100644 --- a/mach-defpager/default_pager.c +++ b/mach-defpager/default_pager.c @@ -1964,8 +1964,8 @@ void pager_port_unlock(ds) default_pager_t ds; { ds->seqno++; - dstruct_unlock(ds); pthread_cond_broadcast(&ds->waiting_seqno); + dstruct_unlock(ds); } /* @@ -1997,8 +1997,8 @@ void pager_port_finish_read(ds) { dstruct_lock(ds); if (--ds->readers == 0) { - dstruct_unlock(ds); pthread_cond_broadcast(&ds->waiting_read); + dstruct_unlock(ds); } else { dstruct_unlock(ds); @@ -2034,8 +2034,8 @@ void pager_port_finish_write(ds) { dstruct_lock(ds); if (--ds->writers == 0) { - dstruct_unlock(ds); pthread_cond_broadcast(&ds->waiting_write); + dstruct_unlock(ds); } else { dstruct_unlock(ds); -- cgit v1.2.3