From 059c556a9d37b416ef63413b9ff4603047a5c8bf Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Tue, 11 May 2021 12:05:17 +0800 Subject: [PATCH] - add missing patch for bug 1942371, add fixes for bugs 1958489 and 1958486. --- autofs-5.1.7-fix-amd-hosts-mount-expire.patch | 48 +++++++ ....7-fix-amd-section-mounts-map-reload.patch | 120 ++++++++++++++++++ ...tion-if-nis-support-is-not-available.patch | 35 +++++ autofs.spec | 20 ++- 4 files changed, 222 insertions(+), 1 deletion(-) create mode 100644 autofs-5.1.7-fix-amd-hosts-mount-expire.patch create mode 100644 autofs-5.1.7-fix-amd-section-mounts-map-reload.patch create mode 100644 autofs-5.1.7-fix-dangling-symlink-creation-if-nis-support-is-not-available.patch diff --git a/autofs-5.1.7-fix-amd-hosts-mount-expire.patch b/autofs-5.1.7-fix-amd-hosts-mount-expire.patch new file mode 100644 index 0000000..baeaa40 --- /dev/null +++ b/autofs-5.1.7-fix-amd-hosts-mount-expire.patch @@ -0,0 +1,48 @@ +autofs-5.1.7 - fix amd hosts mount expire + +From: Ian Kent + +When swicthing to use the mnt_list to track mounts for expire, if the +amd hosts map entry name is for the host short name, the amd mount +entry for the short name gets removed. This causes a subsequent mounts +for host exports to fail. + +What should happen is the short name amd entry not be removed and a +mounted mount entry for the symlinked FQDN mount added so it expires. + +Signed-off-by: Ian Kent +--- + CHANGELOG | 1 + + modules/parse_amd.c | 9 +++++---- + 2 files changed, 6 insertions(+), 4 deletions(-) + +--- autofs-5.1.7.orig/CHANGELOG ++++ autofs-5.1.7/CHANGELOG +@@ -68,6 +68,7 @@ + - add ext_mount_hash_mutex lock helpers. + - fix dangling symlink creation if nis support is not available. + - fix amd section mounts map reload. ++- fix amd hosts mount expire. + + 25/01/2021 autofs-5.1.7 + - make bind mounts propagation slave by default. +--- autofs-5.1.7.orig/modules/parse_amd.c ++++ autofs-5.1.7/modules/parse_amd.c +@@ -2341,12 +2341,13 @@ int parse_mount(struct autofs_point *ap, + if (!rv) { + /* + * If entry->path doesn't match the mnt->mp then +- * the mount point path has changed and a new +- * mnt_list entry added for it, so remove the +- * original. ++ * it's a "host" map and the mount point path is ++ * different to the lookup name. Add a new mnt_list ++ * entry so that both the symlinked name and the ++ * mount expire. + */ + if (strcmp(this->path, mnt->mp)) +- mnts_remove_amdmount(this->path); ++ mnts_add_mount(ap, this->rhost, MNTS_INDIRECT|MNTS_MOUNTED); + break; + } + /* Not mounted, remove the mnt_list entry from amdmount list */ diff --git a/autofs-5.1.7-fix-amd-section-mounts-map-reload.patch b/autofs-5.1.7-fix-amd-section-mounts-map-reload.patch new file mode 100644 index 0000000..2bb5968 --- /dev/null +++ b/autofs-5.1.7-fix-amd-section-mounts-map-reload.patch @@ -0,0 +1,120 @@ +autofs-5.1.7 - fix amd section mounts map reload + +From: Ian Kent + +Master map section mounts (amd format mounts) get umounted on reload. + +Signed-off-by: Ian Kent +--- + CHANGELOG | 1 + daemon/master.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 81 insertions(+), 1 deletion(-) + +--- autofs-5.1.7.orig/CHANGELOG ++++ autofs-5.1.7/CHANGELOG +@@ -67,6 +67,7 @@ + - cater for empty mounts list in mnts_get_expire_list(). + - add ext_mount_hash_mutex lock helpers. + - fix dangling symlink creation if nis support is not available. ++- fix amd section mounts map reload. + + 25/01/2021 autofs-5.1.7 + - make bind mounts propagation slave by default. +--- autofs-5.1.7.orig/daemon/master.c ++++ autofs-5.1.7/daemon/master.c +@@ -882,6 +882,83 @@ struct master *master_new(const char *na + return master; + } + ++static void master_update_amd_mount_section_mount(struct master *master, ++ const char *path, time_t age) ++{ ++ unsigned int m_logopt = master->logopt; ++ struct master_mapent *entry; ++ struct map_source *source; ++ unsigned int loglevel; ++ unsigned int logopt; ++ unsigned int flags; ++ time_t timeout; ++ char *map; ++ char *opts; ++ ++ entry = master_find_mapent(master, path); ++ if (!entry) ++ return; ++ ++ map = conf_amd_get_map_name(path); ++ if (!map) ++ return; ++ ++ /* amd top level mounts have only one map */ ++ source = entry->maps; ++ if (strcmp(source->name, map) != 0) { ++ struct map_source *new; ++ char *type; ++ char *argv[2]; ++ ++ type = conf_amd_get_map_type(path); ++ argv[0] = map; ++ argv[1] = NULL; ++ ++ new = master_add_map_source(entry, type, "amd", ++ age, 1, (const char **) argv); ++ if (!new) { ++ error(m_logopt, ++ "failed to add source for amd section mount %s", ++ path); ++ if (type) ++ free(type); ++ goto out; ++ } ++ master_free_map_source(source, 0); ++ entry->maps = new; ++ source = new; ++ if (type) ++ free(type); ++ } ++ ++ loglevel = conf_amd_get_log_options(); ++ logopt = m_logopt; ++ if (loglevel <= LOG_DEBUG && loglevel > LOG_INFO) ++ logopt = LOGOPT_DEBUG; ++ else if (loglevel <= LOG_INFO && loglevel > LOG_ERR) ++ logopt = LOGOPT_VERBOSE; ++ ++ flags = conf_amd_get_flags(path); ++ if (flags & CONF_BROWSABLE_DIRS) ++ entry->ap->flags |= MOUNT_FLAG_GHOST; ++ ++ opts = conf_amd_get_map_options(path); ++ if (opts) { ++ if (strstr(opts, "cache:=all")) ++ entry->ap->flags |= MOUNT_FLAG_AMD_CACHE_ALL; ++ free(opts); ++ } ++ ++ entry->ap->logopt = logopt; ++ ++ timeout = conf_amd_get_dismount_interval(path); ++ set_exp_timeout(entry->ap, source, timeout); ++ source->master_line = 0; ++ entry->age = age; ++out: ++ free(map); ++} ++ + static void master_add_amd_mount_section_mounts(struct master *master, time_t age) + { + unsigned int m_logopt = master->logopt; +@@ -916,8 +993,10 @@ static void master_add_amd_mount_section + * master map it's not a duplicate, don't issue + * an error message. + */ +- if (ret == 1) ++ if (ret == 1) { ++ master_update_amd_mount_section_mount(master, path, age); + goto next; ++ } + info(m_logopt, + "amd section mount path conflict, %s ignored", + path); diff --git a/autofs-5.1.7-fix-dangling-symlink-creation-if-nis-support-is-not-available.patch b/autofs-5.1.7-fix-dangling-symlink-creation-if-nis-support-is-not-available.patch new file mode 100644 index 0000000..778dfa2 --- /dev/null +++ b/autofs-5.1.7-fix-dangling-symlink-creation-if-nis-support-is-not-available.patch @@ -0,0 +1,35 @@ +autofs-5.1.7 - fix dangling symlink creation if nis support is not available + +From: Ian Kent + +If NIS support is not available a dangling symlink is created pointing +from lookup_nis.so to (a non-existent) lookup_yp.so. + +Signed-off-by: Ian Kent +--- + CHANGELOG | 1 + + modules/Makefile | 2 ++ + 2 files changed, 3 insertions(+) + +--- autofs-5.1.7.orig/CHANGELOG ++++ autofs-5.1.7/CHANGELOG +@@ -66,6 +66,7 @@ + - refactor lookup_prune_one_cache() a bit. + - cater for empty mounts list in mnts_get_expire_list(). + - add ext_mount_hash_mutex lock helpers. ++- fix dangling symlink creation if nis support is not available. + + 25/01/2021 autofs-5.1.7 + - make bind mounts propagation slave by default. +--- autofs-5.1.7.orig/modules/Makefile ++++ autofs-5.1.7/modules/Makefile +@@ -77,7 +77,9 @@ install: all + install -c $(MODS) -m 755 $(INSTALLROOT)$(autofslibdir) + -rm -f $(INSTALLROOT)$(autofslibdir)/mount_smbfs.so + ln -fs lookup_file.so $(INSTALLROOT)$(autofslibdir)/lookup_files.so ++ifeq ($(YPCLNT), 1) + ln -fs lookup_yp.so $(INSTALLROOT)$(autofslibdir)/lookup_nis.so ++endif + ifeq ($(LDAP), 1) + ln -fs lookup_ldap.so $(INSTALLROOT)$(autofslibdir)/lookup_ldaps.so + endif diff --git a/autofs.spec b/autofs.spec index d147463..2fceadf 100644 --- a/autofs.spec +++ b/autofs.spec @@ -12,7 +12,7 @@ Summary: A tool for automatically mounting and unmounting filesystems Name: autofs Version: 5.1.7 -Release: 14%{?dist} +Release: 15%{?dist} Epoch: 1 License: GPLv2+ Source: https://www.kernel.org/pub/linux/daemons/autofs/v5/autofs-%{version}-2.tar.gz @@ -86,6 +86,9 @@ Patch64: autofs-5.1.7-fix-double-free-in-parse_mapent.patch Patch65: autofs-5.1.7-refactor-lookup_prune_one_cache-a-bit.patch Patch66: autofs-5.1.7-cater-for-empty-mounts-list-in-mnts_get_expire_list.patch Patch67: autofs-5.1.7-add-ext_mount_hash_mutex-lock-helpers.patch +Patch68: autofs-5.1.7-fix-dangling-symlink-creation-if-nis-support-is-not-available.patch +Patch69: autofs-5.1.7-fix-amd-section-mounts-map-reload.patch +Patch70: autofs-5.1.7-fix-amd-hosts-mount-expire.patch %if %{with_systemd} BuildRequires: systemd-units @@ -219,6 +222,9 @@ echo %{version}-%{release} > .version %patch65 -p1 %patch66 -p1 %patch67 -p1 +%patch68 -p1 +%patch69 -p1 +%patch70 -p1 %build LDFLAGS=-Wl,-z,now @@ -327,6 +333,18 @@ fi %dir /etc/auto.master.d %changelog +* Tue May 11 2021 Ian Kent - 1:5.1.7-15 + - bz1942371 - Drop nis support from autofs + - fix dangling symlink creation if nis support is not available + (add missing patch). + - bz1958489 - autofs amd mounts present in the configuration get + umounted on reload + - fix amd section mounts map reload. + - bz1958486 - autofs amd type host mounts fail for certain host names + - fix amd hosts mount expire. +- Related: rhbz#1942371 +- Resolves: rhbz#1958489 rhbz#1958486 + * Tue Apr 20 2021 Ian Kent - 1:5.1.7-14 - bz1951344 - the autofs distribution tar has a file with an incompatible license.