]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
nscd: Release read lock after resetting timeout.
authorDJ Delorie <dj@redhat.com>
Mon, 25 Sep 2017 23:43:09 +0000 (19:43 -0400)
committerDJ Delorie <dj@redhat.com>
Mon, 25 Sep 2017 23:49:36 +0000 (19:49 -0400)
[BZ #22161]
* nscd/netgroupcache.c (addinnetgrX): Release read lock after
resetting timeout.

Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Reviewed-by: Andreas Schwab <schwab@suse.de>
A lock is held by mempool_allocate() when CACHEABLE is true; we
must release this lock if we exit early.

ChangeLog
nscd/netgroupcache.c

index 86cd508e3c31447ea0ed39ae5106a8f5455f51f4..dddda1532355b3dd58f5ffd08ba843052425b681 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2017-09-25  DJ Delorie  <dj@redhat.com>
+
+       [BZ #22161]
+       * nscd/netgroupcache.c (addinnetgrX): Release read lock after
+       resetting timeout.
+
 2017-09-25  Stefan Liebler  <stli@linux.vnet.ibm.com>
 
        * sysdeps/ieee754/dbl-64/sincos32.h
index cd0c3ea19b220f738ddc571c96fcf79b6168de0b..3ca96f8205192c08618177577c91dc6931d42185 100644 (file)
@@ -584,6 +584,8 @@ addinnetgrX (struct database_dyn *db, int fd, request_header *req,
       dh->timeout = timeout;
       dh->ttl = dataset->head.ttl;
       ++dh->nreloads;
+      if (cacheable)
+        pthread_rwlock_unlock (&db->lock);
       return timeout;
     }