The branch stable/13 has been updated by kib:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=c8452bdeed4fc1f1feadf36c6008367263292254

commit c8452bdeed4fc1f1feadf36c6008367263292254
Author:     Konstantin Belousov <[email protected]>
AuthorDate: 2023-02-01 20:12:45 +0000
Commit:     Konstantin Belousov <[email protected]>
CommitDate: 2023-02-08 00:26:59 +0000

    libthr pshared: correct a bug in allocation
    
    PR:     269277
    
    (cherry picked from commit 25c862ae503a1c99458f4e055fd50c878fadbea3)
---
 lib/libthr/thread/thr_pshared.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/lib/libthr/thread/thr_pshared.c b/lib/libthr/thread/thr_pshared.c
index 37b44ab73582..446e9983bcae 100644
--- a/lib/libthr/thread/thr_pshared.c
+++ b/lib/libthr/thread/thr_pshared.c
@@ -232,11 +232,16 @@ __thr_pshared_offpage(void *key, int doalloc)
        int fd, ins_done;
 
        curthread = _get_curthread();
-       pshared_rlock(curthread);
-       res = pshared_lookup(key);
-       pshared_unlock(curthread);
-       if (res != NULL)
-               return (res);
+       if (doalloc) {
+               pshared_destroy(curthread, key);
+               res = NULL;
+       } else {
+               pshared_rlock(curthread);
+               res = pshared_lookup(key);
+               pshared_unlock(curthread);
+               if (res != NULL)
+                       return (res);
+       }
        fd = _umtx_op(NULL, UMTX_OP_SHM, doalloc ? UMTX_SHM_CREAT :
            UMTX_SHM_LOOKUP, key, NULL);
        if (fd == -1)

Reply via email to