Using -hosts option does not work in RHEL 9
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2056320 Changes to resolve internal hosts map problem: - fix root offset error handling. - fix nonstrict fail handling of last offset mount. - dont fail on duplicate offset entry tree add. - fix loop under run in cache_get_offset_parent(). - simplify cache_add() a little. - fix use after free in tree_mapent_delete_offset_tree(). - fix memory leak in xdr_exports(). - avoid calling pthread_getspecific() with NULL key_thread_attempt_id. - fix sysconf(3) return handling. - remove rpcgen dependedncy, it hasn't been needed since rev 10. Resolves: rhbz#2056320 Signed-off-by: Ian Kent ikent@redhat.com
This commit is contained in:
parent
eb91171a41
commit
da0ee4c338
@ -0,0 +1,35 @@
|
|||||||
|
autofs-5.1.8 - avoid calling pthread_getspecific() with NULL key_thread_attempt_id
|
||||||
|
|
||||||
|
From: Ian Kent <raven@themaw.net>
|
||||||
|
|
||||||
|
Don't call pthread_getspecific() if key_thread_attempt_id is NULL in
|
||||||
|
case the pthread_getspecific() implementation doesn't check for this.
|
||||||
|
|
||||||
|
Signed-off-by: Ian Kent <raven@themaw.net>
|
||||||
|
---
|
||||||
|
CHANGELOG | 1 +
|
||||||
|
lib/log.c | 3 +++
|
||||||
|
2 files changed, 4 insertions(+)
|
||||||
|
|
||||||
|
--- autofs-5.1.7.orig/CHANGELOG
|
||||||
|
+++ autofs-5.1.7/CHANGELOG
|
||||||
|
@@ -92,6 +92,7 @@
|
||||||
|
- simplify cache_add() a little.
|
||||||
|
- fix use after free in tree_mapent_delete_offset_tree().
|
||||||
|
- fix memory leak in xdr_exports().
|
||||||
|
+- avoid calling pthread_getspecific() with NULL key_thread_attempt_id.
|
||||||
|
|
||||||
|
25/01/2021 autofs-5.1.7
|
||||||
|
- make bind mounts propagation slave by default.
|
||||||
|
--- autofs-5.1.7.orig/lib/log.c
|
||||||
|
+++ autofs-5.1.7/lib/log.c
|
||||||
|
@@ -38,6 +38,9 @@ static char *prepare_attempt_prefix(cons
|
||||||
|
char buffer[ATTEMPT_ID_SIZE + 1];
|
||||||
|
char *prefixed_msg = NULL;
|
||||||
|
|
||||||
|
+ if (!key_thread_attempt_id)
|
||||||
|
+ return NULL;
|
||||||
|
+
|
||||||
|
attempt_id = pthread_getspecific(key_thread_attempt_id);
|
||||||
|
if (attempt_id) {
|
||||||
|
int len = sizeof(buffer) + 1 + strlen(msg) + 1;
|
46
autofs-5.1.8-dont-fail-on-duplicate-host-export-entry.patch
Normal file
46
autofs-5.1.8-dont-fail-on-duplicate-host-export-entry.patch
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
autofs-5.1.8 - dont fail on duplicate host export entry
|
||||||
|
|
||||||
|
From: Ian Kent <raven@themaw.net>
|
||||||
|
|
||||||
|
If we encounter a duplicate host export entry don't fail, just ignore
|
||||||
|
it and return the duplicate.
|
||||||
|
|
||||||
|
Signed-off-by: Ian Kent <raven@themaw.net>
|
||||||
|
---
|
||||||
|
CHANGELOG | 1 +
|
||||||
|
lib/mounts.c | 6 ++++--
|
||||||
|
2 files changed, 5 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
--- autofs-5.1.7.orig/CHANGELOG
|
||||||
|
+++ autofs-5.1.7/CHANGELOG
|
||||||
|
@@ -87,6 +87,7 @@
|
||||||
|
- fix root offset error handling.
|
||||||
|
- fix fix root offset error handling.
|
||||||
|
- fix nonstrict fail handling of last offset mount.
|
||||||
|
+- dont fail on duplicate offset entry tree add.
|
||||||
|
|
||||||
|
25/01/2021 autofs-5.1.7
|
||||||
|
- make bind mounts propagation slave by default.
|
||||||
|
--- autofs-5.1.7.orig/lib/mounts.c
|
||||||
|
+++ autofs-5.1.7/lib/mounts.c
|
||||||
|
@@ -1341,7 +1341,7 @@ static struct tree_node *tree_add_node(s
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!eq)
|
||||||
|
- error(LOGOPT_ANY, "cannot add duplicate entry to tree");
|
||||||
|
+ return p;
|
||||||
|
else {
|
||||||
|
if (eq < 0)
|
||||||
|
return tree_add_left(p, ptr);
|
||||||
|
@@ -1515,8 +1515,10 @@ static int tree_host_cmp(struct tree_nod
|
||||||
|
int eq;
|
||||||
|
|
||||||
|
eq = strcmp(exp->dir, n_exp->dir);
|
||||||
|
- if (!eq)
|
||||||
|
+ if (!eq) {
|
||||||
|
+ error(LOGOPT_ANY, "duplicate entry %s ignored", exp->dir);
|
||||||
|
return 0;
|
||||||
|
+ }
|
||||||
|
return (exp_len < n_exp_len) ? -1 : 1;
|
||||||
|
}
|
||||||
|
|
34
autofs-5.1.8-fix-fix-root-offset-error-handling.patch
Normal file
34
autofs-5.1.8-fix-fix-root-offset-error-handling.patch
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
autofs-5.1.8 - fix fix root offset error handling
|
||||||
|
|
||||||
|
From: Ian Kent <raven@themaw.net>
|
||||||
|
|
||||||
|
The change to fix root offset error handlling is missing a cache read
|
||||||
|
lock prior to the key lookup, the following unmatched unlock then
|
||||||
|
causes a hang.
|
||||||
|
|
||||||
|
Signed-off-by: Ian Kent <raven@themaw.net>
|
||||||
|
---
|
||||||
|
CHANGELOG | 1 +
|
||||||
|
daemon/direct.c | 1 +
|
||||||
|
2 files changed, 2 insertions(+)
|
||||||
|
|
||||||
|
--- autofs-5.1.7.orig/CHANGELOG
|
||||||
|
+++ autofs-5.1.7/CHANGELOG
|
||||||
|
@@ -85,6 +85,7 @@
|
||||||
|
- fix set open file limit.
|
||||||
|
- improve descriptor open error reporting.
|
||||||
|
- fix root offset error handling.
|
||||||
|
+- fix fix root offset error handling.
|
||||||
|
|
||||||
|
25/01/2021 autofs-5.1.7
|
||||||
|
- make bind mounts propagation slave by default.
|
||||||
|
--- autofs-5.1.7.orig/daemon/direct.c
|
||||||
|
+++ autofs-5.1.7/daemon/direct.c
|
||||||
|
@@ -1271,6 +1271,7 @@ static void *do_mount_direct(void *arg)
|
||||||
|
/* If this is a multi-mount subtree mount failure
|
||||||
|
* ensure the tree continues to expire.
|
||||||
|
*/
|
||||||
|
+ cache_readlock(mt.mc);
|
||||||
|
me = cache_lookup_distinct(mt.mc, mt.name);
|
||||||
|
if (me && IS_MM(me) && !IS_MM_ROOT(me))
|
||||||
|
conditional_alarm_add(ap, ap->exp_runfreq);
|
@ -0,0 +1,36 @@
|
|||||||
|
autofs-5.1.8 - fix loop under run in cache_get_offset_parent()
|
||||||
|
|
||||||
|
From: Frank Sorenson <sorenson@redhat.com>
|
||||||
|
|
||||||
|
To avoid reading memory outside of the the string
|
||||||
|
allocated for parent, tail needs to stop when it
|
||||||
|
reaches or passes parent, even if it doesn't
|
||||||
|
actually equal parent.
|
||||||
|
|
||||||
|
Signed-off-by: Frank Sorenson <sorenson@redhat.com>
|
||||||
|
---
|
||||||
|
CHANGELOG | 1 +
|
||||||
|
lib/cache.c | 2 +-
|
||||||
|
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
--- autofs-5.1.7.orig/CHANGELOG
|
||||||
|
+++ autofs-5.1.7/CHANGELOG
|
||||||
|
@@ -88,6 +88,7 @@
|
||||||
|
- fix fix root offset error handling.
|
||||||
|
- fix nonstrict fail handling of last offset mount.
|
||||||
|
- dont fail on duplicate offset entry tree add.
|
||||||
|
+- fix loop under run in cache_get_offset_parent().
|
||||||
|
|
||||||
|
25/01/2021 autofs-5.1.7
|
||||||
|
- make bind mounts propagation slave by default.
|
||||||
|
--- autofs-5.1.7.orig/lib/cache.c
|
||||||
|
+++ autofs-5.1.7/lib/cache.c
|
||||||
|
@@ -710,7 +710,7 @@ struct mapent *cache_get_offset_parent(s
|
||||||
|
*tail = 0;
|
||||||
|
|
||||||
|
tail--;
|
||||||
|
- if (tail == parent)
|
||||||
|
+ if (tail <= parent)
|
||||||
|
break;
|
||||||
|
|
||||||
|
me = cache_lookup_distinct(mc, parent);
|
40
autofs-5.1.8-fix-memory-leak-in-xdr_exports.patch
Normal file
40
autofs-5.1.8-fix-memory-leak-in-xdr_exports.patch
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
autofs-5.1.8 - fix memory leak in xdr_exports()
|
||||||
|
|
||||||
|
From: Ian Kent <raven@themaw.net>
|
||||||
|
|
||||||
|
Converting xdr_exports() to not be recursive introduced a memory leak
|
||||||
|
if an error is encountered, fix it.
|
||||||
|
|
||||||
|
Signed-off-by: Ian Kent <raven@themaw.net>
|
||||||
|
---
|
||||||
|
CHANGELOG | 1 +
|
||||||
|
lib/rpc_subs.c | 7 ++++++-
|
||||||
|
2 files changed, 7 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
--- autofs-5.1.7.orig/CHANGELOG
|
||||||
|
+++ autofs-5.1.7/CHANGELOG
|
||||||
|
@@ -91,6 +91,7 @@
|
||||||
|
- fix loop under run in cache_get_offset_parent().
|
||||||
|
- simplify cache_add() a little.
|
||||||
|
- fix use after free in tree_mapent_delete_offset_tree().
|
||||||
|
+- fix memory leak in xdr_exports().
|
||||||
|
|
||||||
|
25/01/2021 autofs-5.1.7
|
||||||
|
- make bind mounts propagation slave by default.
|
||||||
|
--- autofs-5.1.7.orig/lib/rpc_subs.c
|
||||||
|
+++ autofs-5.1.7/lib/rpc_subs.c
|
||||||
|
@@ -1151,8 +1151,13 @@ bool_t xdr_exports(XDR *xdrs, struct exp
|
||||||
|
|
||||||
|
export = (char **) exports;
|
||||||
|
while (1) {
|
||||||
|
- if (!xdr_pointer(xdrs, export, size, (xdrproc_t) xdr_export))
|
||||||
|
+ if (!xdr_pointer(xdrs, export, size, (xdrproc_t) xdr_export)) {
|
||||||
|
+ if (*exports) {
|
||||||
|
+ rpc_exports_free(*exports);
|
||||||
|
+ *exports = NULL;
|
||||||
|
+ }
|
||||||
|
return FALSE;
|
||||||
|
+ }
|
||||||
|
if (!*export)
|
||||||
|
break;
|
||||||
|
export = (char **) &((struct exportinfo *) *export)->next;
|
@ -0,0 +1,38 @@
|
|||||||
|
autofs-5.1.8 - fix nonstrict fail handling of last offset mount
|
||||||
|
|
||||||
|
From: Ian Kent <raven@themaw.net>
|
||||||
|
|
||||||
|
When mounting a list of multi-mount offsets the offset mount should
|
||||||
|
succeed even if there's a mount failure for the non-strict case (the
|
||||||
|
default).
|
||||||
|
|
||||||
|
But currently if the last offset mount fails the multi-mount fails
|
||||||
|
regardless of whether the mount is non-strict or not.
|
||||||
|
|
||||||
|
Signed-off-by: Ian Kent <raven@themaw.net>
|
||||||
|
---
|
||||||
|
CHANGELOG | 1 +
|
||||||
|
lib/mounts.c | 2 +-
|
||||||
|
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
--- autofs-5.1.7.orig/CHANGELOG
|
||||||
|
+++ autofs-5.1.7/CHANGELOG
|
||||||
|
@@ -86,6 +86,7 @@
|
||||||
|
- improve descriptor open error reporting.
|
||||||
|
- fix root offset error handling.
|
||||||
|
- fix fix root offset error handling.
|
||||||
|
+- fix nonstrict fail handling of last offset mount.
|
||||||
|
|
||||||
|
25/01/2021 autofs-5.1.7
|
||||||
|
- make bind mounts propagation slave by default.
|
||||||
|
--- autofs-5.1.7.orig/lib/mounts.c
|
||||||
|
+++ autofs-5.1.7/lib/mounts.c
|
||||||
|
@@ -1940,7 +1940,7 @@ static int tree_mapent_mount_offsets_wor
|
||||||
|
tree_mapent_mount_offsets(oe, !ctxt->strict);
|
||||||
|
}
|
||||||
|
|
||||||
|
- return ret;
|
||||||
|
+ return (ctxt->strict ? ret : 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int tree_mapent_mount_offsets(struct mapent *oe, int nonstrict)
|
85
autofs-5.1.8-fix-root-offset-error-handling.patch
Normal file
85
autofs-5.1.8-fix-root-offset-error-handling.patch
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
autofs-5.1.8 - fix root offset error handling
|
||||||
|
|
||||||
|
From: Ian Kent <raven@themaw.net>
|
||||||
|
|
||||||
|
If mounting the root or offsets of a multi-mount root fails any mounts
|
||||||
|
done so far need to be umounted and the multi-mount offset tree deleted
|
||||||
|
so it can be created cleanly and possibly mounted the next time it's
|
||||||
|
triggered.
|
||||||
|
|
||||||
|
Also, if a subtree that is not the multi-mount root fails the expire
|
||||||
|
alarm needs to be re-instated so other subtrees (at least the root)
|
||||||
|
will continue to expire.
|
||||||
|
|
||||||
|
Signed-off-by: Ian Kent <raven@themaw.net>
|
||||||
|
---
|
||||||
|
CHANGELOG | 1 +
|
||||||
|
daemon/direct.c | 10 +++++++++-
|
||||||
|
modules/parse_sun.c | 6 ++++++
|
||||||
|
3 files changed, 16 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
--- autofs-5.1.7.orig/CHANGELOG
|
||||||
|
+++ autofs-5.1.7/CHANGELOG
|
||||||
|
@@ -84,6 +84,7 @@
|
||||||
|
- fix fedfs build flags.
|
||||||
|
- fix set open file limit.
|
||||||
|
- improve descriptor open error reporting.
|
||||||
|
+- fix root offset error handling.
|
||||||
|
|
||||||
|
25/01/2021 autofs-5.1.7
|
||||||
|
- make bind mounts propagation slave by default.
|
||||||
|
--- autofs-5.1.7.orig/daemon/direct.c
|
||||||
|
+++ autofs-5.1.7/daemon/direct.c
|
||||||
|
@@ -1163,6 +1163,7 @@ static void *do_mount_direct(void *arg)
|
||||||
|
struct ioctl_ops *ops = get_ioctl_ops();
|
||||||
|
struct pending_args *args, mt;
|
||||||
|
struct autofs_point *ap;
|
||||||
|
+ struct mapent *me;
|
||||||
|
struct stat st;
|
||||||
|
int status, state;
|
||||||
|
|
||||||
|
@@ -1226,7 +1227,6 @@ static void *do_mount_direct(void *arg)
|
||||||
|
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &state);
|
||||||
|
if (status) {
|
||||||
|
struct mnt_list *sbmnt;
|
||||||
|
- struct mapent *me;
|
||||||
|
struct statfs fs;
|
||||||
|
unsigned int close_fd = 0;
|
||||||
|
unsigned int flags = MNTS_DIRECT|MNTS_MOUNTED;
|
||||||
|
@@ -1267,6 +1267,14 @@ static void *do_mount_direct(void *arg)
|
||||||
|
mt.ioctlfd, mt.wait_queue_token, -ENOENT);
|
||||||
|
ops->close(ap->logopt, mt.ioctlfd);
|
||||||
|
info(ap->logopt, "failed to mount %s", mt.name);
|
||||||
|
+
|
||||||
|
+ /* If this is a multi-mount subtree mount failure
|
||||||
|
+ * ensure the tree continues to expire.
|
||||||
|
+ */
|
||||||
|
+ me = cache_lookup_distinct(mt.mc, mt.name);
|
||||||
|
+ if (me && IS_MM(me) && !IS_MM_ROOT(me))
|
||||||
|
+ conditional_alarm_add(ap, ap->exp_runfreq);
|
||||||
|
+ cache_unlock(mt.mc);
|
||||||
|
}
|
||||||
|
pthread_setcancelstate(state, NULL);
|
||||||
|
|
||||||
|
--- autofs-5.1.7.orig/modules/parse_sun.c
|
||||||
|
+++ autofs-5.1.7/modules/parse_sun.c
|
||||||
|
@@ -1142,6 +1142,9 @@ static int mount_subtree(struct autofs_p
|
||||||
|
if (!len) {
|
||||||
|
warn(ap->logopt, "path loo long");
|
||||||
|
cache_unlock(mc);
|
||||||
|
+ cache_writelock(mc);
|
||||||
|
+ tree_mapent_delete_offsets(mc, name);
|
||||||
|
+ cache_unlock(mc);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
key[len] = '/';
|
||||||
|
@@ -1186,6 +1189,9 @@ static int mount_subtree(struct autofs_p
|
||||||
|
cache_unlock(mc);
|
||||||
|
error(ap->logopt, MODPREFIX
|
||||||
|
"failed to mount offset triggers");
|
||||||
|
+ cache_writelock(mc);
|
||||||
|
+ tree_mapent_delete_offsets(mc, name);
|
||||||
|
+ cache_unlock(mc);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
64
autofs-5.1.8-fix-sysconf-return-handling.patch
Normal file
64
autofs-5.1.8-fix-sysconf-return-handling.patch
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
autofs-5.1.8 - fix sysconf(3) return handling
|
||||||
|
|
||||||
|
From: Fabian Groffen <grobian@gentoo.org>
|
||||||
|
|
||||||
|
The sysconf(3) return handling doesn't handle a -1 return with errno
|
||||||
|
not changed which indicated a maximum or minimum limit that's not
|
||||||
|
known.
|
||||||
|
|
||||||
|
Add handling of this case.
|
||||||
|
|
||||||
|
Signed-off-by: Fabian Groffen <grobian@gentoo.org>
|
||||||
|
Signed-off-by: Ian Kent <raven@themaw.net>
|
||||||
|
---
|
||||||
|
CHANGELOG | 1 +
|
||||||
|
lib/mounts.c | 13 +++++++++++--
|
||||||
|
2 files changed, 12 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
--- autofs-5.1.7.orig/CHANGELOG
|
||||||
|
+++ autofs-5.1.7/CHANGELOG
|
||||||
|
@@ -93,6 +93,7 @@
|
||||||
|
- fix use after free in tree_mapent_delete_offset_tree().
|
||||||
|
- fix memory leak in xdr_exports().
|
||||||
|
- avoid calling pthread_getspecific() with NULL key_thread_attempt_id.
|
||||||
|
+- fix sysconf(3) return handling.
|
||||||
|
|
||||||
|
25/01/2021 autofs-5.1.7
|
||||||
|
- make bind mounts propagation slave by default.
|
||||||
|
--- autofs-5.1.7.orig/lib/mounts.c
|
||||||
|
+++ autofs-5.1.7/lib/mounts.c
|
||||||
|
@@ -2385,11 +2385,17 @@ void set_tsd_user_vars(unsigned int logo
|
||||||
|
|
||||||
|
/* Try to get passwd info */
|
||||||
|
|
||||||
|
+ /* sysconf may return -1 with unchanged errno to indicate unlimited
|
||||||
|
+ * size, same for the call for _SC_GETGR_R_SIZE_MAX below
|
||||||
|
+ */
|
||||||
|
+ errno = 0;
|
||||||
|
tmplen = sysconf(_SC_GETPW_R_SIZE_MAX);
|
||||||
|
- if (tmplen < 0) {
|
||||||
|
+ if (tmplen < 0 && errno != 0) {
|
||||||
|
error(logopt, "failed to get buffer size for getpwuid_r");
|
||||||
|
goto free_tsv;
|
||||||
|
}
|
||||||
|
+ if (tmplen < 0)
|
||||||
|
+ tmplen = 1024; /* assume something reasonable */
|
||||||
|
|
||||||
|
pw_tmp = malloc(tmplen + 1);
|
||||||
|
if (!pw_tmp) {
|
||||||
|
@@ -2422,11 +2428,14 @@ void set_tsd_user_vars(unsigned int logo
|
||||||
|
|
||||||
|
/* Try to get group info */
|
||||||
|
|
||||||
|
+ errno = 0;
|
||||||
|
grplen = sysconf(_SC_GETGR_R_SIZE_MAX);
|
||||||
|
- if (grplen < 0) {
|
||||||
|
+ if (grplen < 0 && errno != 0) {
|
||||||
|
error(logopt, "failed to get buffer size for getgrgid_r");
|
||||||
|
goto free_tsv_home;
|
||||||
|
}
|
||||||
|
+ if (grplen < 0)
|
||||||
|
+ grplen = 1024;
|
||||||
|
|
||||||
|
gr_tmp = NULL;
|
||||||
|
status = ERANGE;
|
@ -0,0 +1,55 @@
|
|||||||
|
autofs-5.1.8 - fix use after free in tree_mapent_delete_offset_tree()
|
||||||
|
|
||||||
|
From: Ian Kent <raven@themaw.net>
|
||||||
|
|
||||||
|
The key field of the map entry of the root of the map entry tree to be
|
||||||
|
deleted can't be used for the key parameter, fix it.
|
||||||
|
|
||||||
|
Signed-off-by: Ian Kent <raven@themaw.net>
|
||||||
|
---
|
||||||
|
CHANGELOG | 1 +
|
||||||
|
lib/mounts.c | 16 +++++++++++++---
|
||||||
|
2 files changed, 14 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
--- autofs-5.1.7.orig/CHANGELOG
|
||||||
|
+++ autofs-5.1.7/CHANGELOG
|
||||||
|
@@ -90,6 +90,7 @@
|
||||||
|
- dont fail on duplicate offset entry tree add.
|
||||||
|
- fix loop under run in cache_get_offset_parent().
|
||||||
|
- simplify cache_add() a little.
|
||||||
|
+- fix use after free in tree_mapent_delete_offset_tree().
|
||||||
|
|
||||||
|
25/01/2021 autofs-5.1.7
|
||||||
|
- make bind mounts propagation slave by default.
|
||||||
|
--- autofs-5.1.7.orig/lib/mounts.c
|
||||||
|
+++ autofs-5.1.7/lib/mounts.c
|
||||||
|
@@ -1666,16 +1666,26 @@ static int tree_mapent_delete_offset_tre
|
||||||
|
*/
|
||||||
|
if (MAPENT_ROOT(me) != MAPENT_NODE(me)) {
|
||||||
|
struct tree_node *root = MAPENT_ROOT(me);
|
||||||
|
+ char *key;
|
||||||
|
|
||||||
|
- debug(logopt, "deleting offset key %s", me->key);
|
||||||
|
+ key = strdup(me->key);
|
||||||
|
+ if (!key) {
|
||||||
|
+ char buf[MAX_ERR_BUF];
|
||||||
|
+ char *estr = strerror_r(errno, buf, MAX_ERR_BUF);
|
||||||
|
+ error(logopt, "strdup: %s", estr);
|
||||||
|
+ return 0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ debug(logopt, "deleting offset key %s", key);
|
||||||
|
|
||||||
|
/* cache_delete won't delete an active offset */
|
||||||
|
MAPENT_SET_ROOT(me, NULL);
|
||||||
|
- ret = cache_delete(me->mc, me->key);
|
||||||
|
+ ret = cache_delete(me->mc, key);
|
||||||
|
if (ret != CHE_OK) {
|
||||||
|
MAPENT_SET_ROOT(me, root);
|
||||||
|
- warn(logopt, "failed to delete offset %s", me->key);
|
||||||
|
+ warn(logopt, "failed to delete offset %s", key);
|
||||||
|
}
|
||||||
|
+ free(key);
|
||||||
|
} else {
|
||||||
|
MAPENT_SET_ROOT(me, NULL);
|
||||||
|
MAPENT_SET_PARENT(me, NULL);
|
44
autofs-5.1.8-simplify-cache_add-a-little.patch
Normal file
44
autofs-5.1.8-simplify-cache_add-a-little.patch
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
autofs-5.1.8 - simplify cache_add() a little
|
||||||
|
|
||||||
|
From: Ian Kent <raven@themaw.net>
|
||||||
|
|
||||||
|
If a map entry is being added to an existing hash chain there's an
|
||||||
|
unneccessarily complicted setting of ->next of the last entry.
|
||||||
|
|
||||||
|
Just initialize the map entry ->next field instead and remove the
|
||||||
|
confusing assignment.
|
||||||
|
|
||||||
|
Signed-off-by: Ian Kent <raven@themaw.net>
|
||||||
|
---
|
||||||
|
CHANGELOG | 1 +
|
||||||
|
lib/cache.c | 2 +-
|
||||||
|
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
--- autofs-5.1.7.orig/CHANGELOG
|
||||||
|
+++ autofs-5.1.7/CHANGELOG
|
||||||
|
@@ -89,6 +89,7 @@
|
||||||
|
- fix nonstrict fail handling of last offset mount.
|
||||||
|
- dont fail on duplicate offset entry tree add.
|
||||||
|
- fix loop under run in cache_get_offset_parent().
|
||||||
|
+- simplify cache_add() a little.
|
||||||
|
|
||||||
|
25/01/2021 autofs-5.1.7
|
||||||
|
- make bind mounts propagation slave by default.
|
||||||
|
--- autofs-5.1.7.orig/lib/cache.c
|
||||||
|
+++ autofs-5.1.7/lib/cache.c
|
||||||
|
@@ -564,6 +564,7 @@ int cache_add(struct mapent_cache *mc, s
|
||||||
|
me->dev = (dev_t) -1;
|
||||||
|
me->ino = (ino_t) -1;
|
||||||
|
me->flags = 0;
|
||||||
|
+ me->next = NULL;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We need to add to the end if values exist in order to
|
||||||
|
@@ -583,7 +584,6 @@ int cache_add(struct mapent_cache *mc, s
|
||||||
|
|
||||||
|
existing = next;
|
||||||
|
}
|
||||||
|
- me->next = existing->next;
|
||||||
|
existing->next = me;
|
||||||
|
}
|
||||||
|
return CHE_OK;
|
Loading…
Reference in New Issue
Block a user