mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-06-05 14:59:55 +00:00
autofs: Fix build with glibc 2.34+
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
+5
-14
@@ -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
|
||||
|
||||
|
||||
+110
@@ -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"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user