summaryrefslogtreecommitdiff
blob: 4eab4ea535d7c7fd79060b26ee53a2edd432ba68 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
From fd939e8740a97b3ffc5816cebb7be947c7b560af Mon Sep 17 00:00:00 2001
From: Sam James <sam@gentoo.org>
Date: Mon, 7 Mar 2022 01:59:53 +0100
Subject: [PATCH] Drop glibc lock when returning early
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Fixes 1bcdcd4fec9bfe2f1d3fef67a43825903f6a5f2b

Bug: https://bugs.gentoo.org/828070
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
(cherry picked from commit 81f6a812264e375a695e5b00e2906da8102cc9b6)
---
 nss/nss_database.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/nss/nss_database.c b/nss/nss_database.c
index 133682b858..5f58baf34b 100644
--- a/nss/nss_database.c
+++ b/nss/nss_database.c
@@ -424,8 +424,10 @@ nss_database_check_reload_and_get (struct nss_database_state *local,
      errors here are very unlikely, but the chance that we're entering
      a container is also very unlikely, so we err on the side of both
      very unlikely things not happening at the same time.  */
-  if (__stat64_time64 ("/", &str) != 0)
+  if (__stat64_time64 ("/", &str) != 0) {
+    __libc_lock_unlock (local->lock);
     return false;
+  }
 
   if (local->root_ino != 0 && (str.st_ino != local->root_ino
                               || str.st_dev != local->root_dev))
-- 
2.34.1