Fix excessive TLS use (#1722181)
This commit is contained in:
parent
d8b230b992
commit
894aa7a821
@ -0,0 +1,46 @@
|
||||
From bc79f3533882dfcffb4dd018e2d1a56691c99248 Mon Sep 17 00:00:00 2001
|
||||
Message-Id: <bc79f3533882dfcffb4dd018e2d1a56691c99248.1561028242.git.pmatilai@redhat.com>
|
||||
From: Panu Matilainen <pmatilai@redhat.com>
|
||||
Date: Thu, 20 Jun 2019 13:50:23 +0300
|
||||
Subject: [PATCH] Don't hog thread local storage, it's a scarce resource
|
||||
(RhBug:1722181)
|
||||
|
||||
Commit 6487e873f3169c2bffbd52808b6c749e6c104ff5 introduced a thread local
|
||||
BUFSIZ static buffer for header format error reporting but thread local
|
||||
storage is apparently a rather scarce resource (on some architectures
|
||||
more so than others) and this is highly excessive use of that resource.
|
||||
Use a thread local pointer to dynamically (re)allocated buffer instead.
|
||||
---
|
||||
lib/headerfmt.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/lib/headerfmt.c b/lib/headerfmt.c
|
||||
index 1f6390b5e..7c0da1bd9 100644
|
||||
--- a/lib/headerfmt.c
|
||||
+++ b/lib/headerfmt.c
|
||||
@@ -221,18 +221,18 @@ static char * hsaReserve(headerSprintfArgs hsa, size_t need)
|
||||
RPM_GNUC_PRINTF(2, 3)
|
||||
static void hsaError(headerSprintfArgs hsa, const char *fmt, ...)
|
||||
{
|
||||
- /* Use thread local static buffer as headerFormat() errmsg arg is const */
|
||||
- static __thread char errbuf[BUFSIZ];
|
||||
+ /* Use thread local buffer as headerFormat() errmsg arg is const */
|
||||
+ static __thread char *errbuf = NULL;
|
||||
|
||||
if (fmt == NULL) {
|
||||
hsa->errmsg = NULL;
|
||||
} else {
|
||||
va_list ap;
|
||||
|
||||
+ free(errbuf);
|
||||
va_start(ap, fmt);
|
||||
- vsnprintf(errbuf, sizeof(errbuf), fmt, ap);
|
||||
+ rvasprintf(&errbuf, fmt, ap);
|
||||
va_end(ap);
|
||||
-
|
||||
hsa->errmsg = errbuf;
|
||||
}
|
||||
}
|
||||
--
|
||||
2.21.0
|
||||
|
7
rpm.spec
7
rpm.spec
@ -21,7 +21,7 @@
|
||||
|
||||
%global rpmver 4.14.90
|
||||
%global snapver git14653
|
||||
%global rel 16
|
||||
%global rel 17
|
||||
|
||||
%global srcver %{version}%{?snapver:-%{snapver}}
|
||||
%global srcdir %{?snapver:testing}%{!?snapver:%{name}-%(echo %{version} | cut -d'.' -f1-2).x}
|
||||
@ -56,6 +56,8 @@ Patch100: 0001-Only-permit-one-thread-at-a-time-in-addFileToTag.patch
|
||||
# https://github.com/rpm-software-management/rpm/pull/745
|
||||
Patch101: 0001-build-Limit-copying-changelog-one-at-a-time.patch
|
||||
Patch102: 0001-Don-t-fail-build-trying-to-kill-a-non-existent-proce.patch
|
||||
# https://github.com/rpm-software-management/rpm/pull/759
|
||||
Patch103: 0001-Don-t-hog-thread-local-storage-it-s-a-scarce-resourc.patch
|
||||
|
||||
# These are not yet upstream
|
||||
Patch906: rpm-4.7.1-geode-i686.patch
|
||||
@ -542,6 +544,9 @@ make check || (cat tests/rpmtests.log; exit 0)
|
||||
%doc doc/librpm/html/*
|
||||
|
||||
%changelog
|
||||
* Thu Jun 20 2019 Panu Matilainen <pmatilai@redhat.com> - 4.14.90-0.git14653.17
|
||||
- Fix excessive TLS use (#1722181)
|
||||
|
||||
* Wed Jun 19 2019 Panu Matilainen <pmatilai@redhat.com> - 4.14.90-0.git14653.16
|
||||
- Drop buildarch again now that python_provide no longer needs it (#1720139)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user