autofs: Fix build with glibc 2.34+

Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Khem Raj
2021-07-31 09:36:03 -07:00
parent 37afc556c2
commit d94bafe1f9
3 changed files with 116 additions and 14 deletions
@@ -13,8 +13,6 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
lib/log.c | 6 +++++-
3 files changed, 24 insertions(+), 7 deletions(-)
diff --git a/daemon/automount.c b/daemon/automount.c
index e476f6b..3a1514b 100644
--- a/daemon/automount.c
+++ b/daemon/automount.c
@@ -1,7 +1,7 @@
@@ -50,7 +48,7 @@ index e476f6b..3a1514b 100644
#include "automount.h"
#if defined(LIBXML2_WORKAROUND) || defined(TIRPC_WORKAROUND)
#include <dlfcn.h>
@@ -282,7 +290,7 @@ int rmdir_path(struct autofs_point *ap, const char *path, dev_t dev)
@@ -282,7 +290,7 @@ int rmdir_path(struct autofs_point *ap,
dev, buf, st.st_dev);
return -1;
}
@@ -59,7 +57,7 @@ index e476f6b..3a1514b 100644
/*
* Last element of path may be a symbolic link; all others
* are directories (and the last directory element is
@@ -455,7 +463,7 @@ int count_mounts(struct autofs_point *ap, const char *path, dev_t dev)
@@ -455,7 +463,7 @@ int count_mounts(struct autofs_point *ap
counter.count = 0;
counter.dev = dev;
@@ -68,7 +66,7 @@ index e476f6b..3a1514b 100644
if (walk_tree(path, counter_fn, 1, ap, &counter) == -1)
return -1;
@@ -811,7 +819,7 @@ static char *automount_path_to_fifo(unsigned logopt, const char *path)
@@ -811,7 +819,7 @@ static char *automount_path_to_fifo(unsi
/*
* An automount path can be made up of subdirectories. So, to
* create the fifo name, we will just replace instances of '/' with
@@ -77,7 +75,7 @@ index e476f6b..3a1514b 100644
*/
p = fifo_name + strlen(fifodir);
while (*p != '\0') {
@@ -1640,7 +1648,7 @@ static void return_start_status(void *arg)
@@ -1640,7 +1648,7 @@ static void return_start_status(void *ar
sc->done = 1;
/*
@@ -86,8 +84,6 @@ index e476f6b..3a1514b 100644
* the startup process.
*/
status = pthread_cond_signal(&sc->cond);
diff --git a/include/hash.h b/include/hash.h
index 2447f29..6f0dee6 100644
--- a/include/hash.h
+++ b/include/hash.h
@@ -5,6 +5,11 @@
@@ -102,11 +98,9 @@ index 2447f29..6f0dee6 100644
/*
* The "GOLDEN_RATIO_PRIME" is used in ifs/btrfs/brtfs_inode.h and
diff --git a/lib/log.c b/lib/log.c
index 0cb47d7..39b1e3b 100644
--- a/lib/log.c
+++ b/lib/log.c
@@ -38,7 +38,11 @@ static char *prepare_attempt_prefix(const char *msg)
@@ -38,7 +38,11 @@ static char *prepare_attempt_prefix(cons
char buffer[ATTEMPT_ID_SIZE + 1];
char *prefixed_msg = NULL;
@@ -119,6 +113,3 @@ index 0cb47d7..39b1e3b 100644
if (attempt_id) {
int len = sizeof(buffer) + 1 + strlen(msg) + 1;
--
2.32.0
@@ -0,0 +1,110 @@
autofs-5.1.7 - use default stack size for threads
From: Ian Kent <raven@themaw.net>
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 <raven@themaw.net>
---
CHANGELOG | 1 +
daemon/automount.c | 29 -----------------------------
daemon/state.c | 6 +-----
lib/alarm.c | 6 +-----
4 files changed, 3 insertions(+), 39 deletions(-)
--- a/daemon/automount.c
+++ b/daemon/automount.c
@@ -92,7 +92,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};
@@ -2617,34 +2616,6 @@ int main(int argc, char *argv[])
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);
- }
-
-#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();
--- a/daemon/state.c
+++ b/daemon/state.c
@@ -1173,12 +1173,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)
@@ -26,6 +26,7 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/daemons/autofs/v5/autofs-${PV}.tar.gz \
file://0001-Do-not-hardcode-path-for-pkg.m4.patch \
file://0001-Bug-fix-for-pid_t-not-found-on-musl.patch \
file://0001-Define-__SWORD_TYPE-if-undefined.patch \
file://autofs-5.1.7-use-default-stack-size-for-threads.patch \
"
SRC_URI[sha256sum] = "a18619e5ad18960fe382354eef33f070e57e4e5711d484b010acde080a003312"