From 64bb0e2110fec0fb3e83fcc85a0802c5a3fdd59b Mon Sep 17 00:00:00 2001 From: Sam James Date: Sun, 17 Oct 2021 06:10:16 +0100 Subject: net-fs/autofs: add glibc-2.34 patch Closes: https://bugs.gentoo.org/803938 Signed-off-by: Sam James --- net-fs/autofs/autofs-5.1.7-r1.ebuild | 4 +- net-fs/autofs/files/autofs-5.1.7-glibc-2.34.patch | 107 ++++++++++++++++++++++ 2 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 net-fs/autofs/files/autofs-5.1.7-glibc-2.34.patch (limited to 'net-fs/autofs') diff --git a/net-fs/autofs/autofs-5.1.7-r1.ebuild b/net-fs/autofs/autofs-5.1.7-r1.ebuild index cb4a90168667..dc05275932e3 100644 --- a/net-fs/autofs/autofs-5.1.7-r1.ebuild +++ b/net-fs/autofs/autofs-5.1.7-r1.ebuild @@ -43,6 +43,7 @@ PATCHES=( "${FILESDIR}/${P}-glibc.patch" "${FILESDIR}/${PN}-5.1.6-musl.patch" "${FILESDIR}/${PN}-5.1.6-pid.patch" + "${FILESDIR}/${PN}-5.1.7-glibc-2.34.patch" ) pkg_setup() { @@ -90,7 +91,8 @@ src_configure() { --enable-ignore-busy RANLIB="$(type -P $(tc-getRANLIB))" # bug #483716 ) - econf "${myeconfargs[@]}" + + CONFIG_SHELL="${BROOT}/bin/bash" econf "${myeconfargs[@]}" } src_compile() { diff --git a/net-fs/autofs/files/autofs-5.1.7-glibc-2.34.patch b/net-fs/autofs/files/autofs-5.1.7-glibc-2.34.patch new file mode 100644 index 000000000000..8b0ddd75eb23 --- /dev/null +++ b/net-fs/autofs/files/autofs-5.1.7-glibc-2.34.patch @@ -0,0 +1,107 @@ +https://src.fedoraproject.org/rpms/autofs/raw/rawhide/f/autofs-5.1.7-use-default-stack-size-for-threads.patch +https://bugzilla.redhat.com/show_bug.cgi?id=1984813 +https://bugs.gentoo.org/803938 + +autofs-5.1.7 - use default stack size for threads + +From: Ian Kent + +autofs uses PTHREAD_STACK_MIN to set the stack size for threads it +creates. + +In two cases it is used to reduce the stack size for long running +service threads while it's used to allocate a larger stack for worker +threads that can have larger memory requirements. + +In recent glibc releases PTHREAD_STACK_MIN is no longer a constant +which can lead to unexpectedly different stack sizes on different +architectures and the autofs assumption it's a constant causes a +compile failure. + +The need to alter the stack size was due to observed stack overflow +which was thought to be due the thread stack being too small for autofs +and glibc alloca(3) usage. + +Quite a bit of that alloca(3) usage has been eliminated from autofs now, +particularly those that might be allocating largish amounts of storage, +and there has been a lot of change in glibc too so using the thread +default stack should be ok. + +Signed-off-by: Ian Kent +--- a/daemon/automount.c ++++ b/daemon/automount.c +@@ -84,7 +84,6 @@ static size_t kpkt_len; + /* Attributes for creating detached and joinable threads */ + pthread_attr_t th_attr; + pthread_attr_t th_attr_detached; +-size_t detached_thread_stack_size = PTHREAD_STACK_MIN * 144; + + struct master_readmap_cond mrc = { + PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER, 0, NULL, 0, 0, 0, 0}; +@@ -2620,34 +2619,6 @@ int main(int argc, char *argv[]) + exit(1); + } + +-#ifdef _POSIX_THREAD_ATTR_STACKSIZE +- if (pthread_attr_setstacksize( +- &th_attr_detached, detached_thread_stack_size)) { +- logerr("%s: failed to set stack size thread attribute!", +- program); +- if (start_pipefd[1] != -1) { +- res = write(start_pipefd[1], pst_stat, sizeof(*pst_stat)); +- close(start_pipefd[1]); +- } +- release_flag_file(); +- macro_free_global_table(); +- exit(1); +- } +-#endif +- +- if (pthread_attr_getstacksize( +- &th_attr_detached, &detached_thread_stack_size)) { +- logerr("%s: failed to get detached thread stack size!", +- program); +- if (start_pipefd[1] != -1) { +- res = write(start_pipefd[1], pst_stat, sizeof(*pst_stat)); +- close(start_pipefd[1]); +- } +- release_flag_file(); +- macro_free_global_table(); +- exit(1); +- } +- + info(logging, "Starting automounter version %s, master map %s", + version, master_list->name); + info(logging, "using kernel protocol version %d.%02d", +--- a/daemon/state.c ++++ b/daemon/state.c +@@ -1177,12 +1177,8 @@ int st_start_handler(void) + status = pthread_attr_init(pattrs); + if (status) + pattrs = NULL; +- else { ++ else + pthread_attr_setdetachstate(pattrs, PTHREAD_CREATE_DETACHED); +-#ifdef _POSIX_THREAD_ATTR_STACKSIZE +- pthread_attr_setstacksize(pattrs, PTHREAD_STACK_MIN*4); +-#endif +- } + + status = pthread_create(&thid, pattrs, st_queue_handler, NULL); + +--- a/lib/alarm.c ++++ b/lib/alarm.c +@@ -270,12 +270,8 @@ int alarm_start_handler(void) + status = pthread_attr_init(pattrs); + if (status) + pattrs = NULL; +- else { ++ else + pthread_attr_setdetachstate(pattrs, PTHREAD_CREATE_DETACHED); +-#ifdef _POSIX_THREAD_ATTR_STACKSIZE +- pthread_attr_setstacksize(pattrs, PTHREAD_STACK_MIN*4); +-#endif +- } + + status = pthread_condattr_init(&condattrs); + if (status) -- cgit v1.2.3-65-gdbad