diff --git a/SOURCES/autofs-5.1.3-allow-dot-in-OPTIONSTR-value-lexer-pattern.patch b/SOURCES/autofs-5.1.3-allow-dot-in-OPTIONSTR-value-lexer-pattern.patch new file mode 100644 index 0000000..e4ae4e7 --- /dev/null +++ b/SOURCES/autofs-5.1.3-allow-dot-in-OPTIONSTR-value-lexer-pattern.patch @@ -0,0 +1,38 @@ +autofs-5.1.3 - allow dot in OPTIONSTR value lexer pattern + +From: Ian Kent + +The options string in master map entries doesn't allow dot in the +string value side of an option assignment. This prevents using an +option like vers=4.1 to apply to all entries of the map. + +Add . to the options value portion of the regular expression used +for this field. + +Signed-off-by: Ian Kent +--- + CHANGELOG | 1 + + lib/master_tok.l | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +--- autofs-5.0.7.orig/CHANGELOG ++++ autofs-5.0.7/CHANGELOG +@@ -252,6 +252,7 @@ + - add congigure option for limiting getgrgid_r() stack usage. + - fix unset tsd group name handling. + - revert fix argc off by one in mount_autofs.c. ++- allow dot in OPTIONSTR value lexer pattern. + + 25/07/2012 autofs-5.0.7 + ======================= +--- autofs-5.0.7.orig/lib/master_tok.l ++++ autofs-5.0.7/lib/master_tok.l +@@ -91,7 +91,7 @@ OPTWS [[:blank:]]* + NL \r?\n + CONT \\\n{OPTWS} + +-OPTIONSTR ([\-]?([[:alpha:]_]([[:alnum:]_\-])*(=(\"?([[:alnum:]_\-\:])+\"?))?)+) ++OPTIONSTR ([\-]?([[:alpha:]_]([[:alnum:]_\-])*(=(\"?([[:alnum:]_\-\:\.])+\"?))?)+) + MACROSTR (-D{OPTWS}([[:alpha:]_]([[:alnum:]_\-\.])*)=([[:alnum:]_\-\.])+) + SLASHIFYSTR (--(no-)?slashify-colons) + NUMBER [0-9]+ diff --git a/SOURCES/autofs-5.1.3-handle-additional-nfs-versions-in-mount_nfs_c.patch b/SOURCES/autofs-5.1.3-handle-additional-nfs-versions-in-mount_nfs_c.patch new file mode 100644 index 0000000..37508a7 --- /dev/null +++ b/SOURCES/autofs-5.1.3-handle-additional-nfs-versions-in-mount_nfs_c.patch @@ -0,0 +1,40 @@ +autofs-5.1.3 - handle additional nfs versions in mount_nfs.c + +From: Ian Kent + +Since NFSv4 can now have a subversion it needs to be allowed for. + +It's enough to check for an options string starting with "vers=4" or +"nfsvers=4" because it's used only to set a flag used for special +casing the availibility probe for any NFS version 4 version. + +Signed-off-by: Ian Kent +--- + CHANGELOG | 1 + + modules/mount_nfs.c | 5 +++-- + 2 files changed, 4 insertions(+), 2 deletions(-) + +--- autofs-5.0.7.orig/CHANGELOG ++++ autofs-5.0.7/CHANGELOG +@@ -253,6 +253,7 @@ + - fix unset tsd group name handling. + - revert fix argc off by one in mount_autofs.c. + - allow dot in OPTIONSTR value lexer pattern. ++- handle additional nfs versions in mount_nfs.c. + + 25/07/2012 autofs-5.0.7 + ======================= +--- autofs-5.0.7.orig/modules/mount_nfs.c ++++ autofs-5.0.7/modules/mount_nfs.c +@@ -148,8 +148,9 @@ int mount_mount(struct autofs_point *ap, + } else if (_strncmp("use-weight-only", cp, o_len) == 0) { + flags |= MOUNT_FLAG_USE_WEIGHT_ONLY; + } else { +- if (_strncmp("vers=4", cp, o_len) == 0 || +- _strncmp("nfsvers=4", cp, o_len) == 0) ++ /* Is any version of NFSv4 in the options */ ++ if (_strncmp("vers=4", cp, 6) == 0 || ++ _strncmp("nfsvers=4", cp, 9) == 0) + vers = NFS4_VERS_MASK | TCP_SUPPORTED; + else if (_strncmp("vers=3", cp, o_len) == 0 || + _strncmp("nfsvers=3", cp, o_len) == 0) { diff --git a/SOURCES/autofs-5.1.3-reset-master-map-list-on-startup-retry.patch b/SOURCES/autofs-5.1.3-reset-master-map-list-on-startup-retry.patch new file mode 100644 index 0000000..d2c17f5 --- /dev/null +++ b/SOURCES/autofs-5.1.3-reset-master-map-list-on-startup-retry.patch @@ -0,0 +1,76 @@ +autofs-5.1.3 - reset master map list on startup retry + +From: Ian Kent + +On autofs startup if automount thinks the master map read failed +for some reason it retries the read after waiting for a fairly +short delay. + +It should be ok to retry with the entries seen so far but there +may be cases where that causes problems so release any existing +master map entries before retrying. + +Signed-off-by: Ian Kent +--- + CHANGELOG | 1 + + daemon/automount.c | 25 +++++++++++++++++++++++++ + 2 files changed, 26 insertions(+) + +--- autofs-5.0.7.orig/CHANGELOG ++++ autofs-5.0.7/CHANGELOG +@@ -254,6 +254,7 @@ + - revert fix argc off by one in mount_autofs.c. + - allow dot in OPTIONSTR value lexer pattern. + - handle additional nfs versions in mount_nfs.c. ++- reset master map list on startup retry. + + 25/07/2012 autofs-5.0.7 + ======================= +--- autofs-5.0.7.orig/daemon/automount.c ++++ autofs-5.0.7/daemon/automount.c +@@ -2099,6 +2099,27 @@ static void remove_empty_args(char **arg + *argc = j; + } + ++static void do_master_list_reset(struct master *master) ++{ ++ struct list_head *head, *p; ++ ++ master_mutex_lock(); ++ ++ head = &master->mounts; ++ list_for_each(p, head) { ++ struct master_mapent *entry; ++ ++ entry = list_entry(p, struct master_mapent, list); ++ ++ if (!list_empty(&entry->list)) ++ list_del(&entry->list); ++ master_free_mapent_sources(entry, 1); ++ master_free_mapent(entry); ++ } ++ ++ master_mutex_unlock(); ++} ++ + static int do_master_read_master(struct master *master, int wait) + { + sigset_t signalset; +@@ -2118,6 +2139,8 @@ static int do_master_read_master(struct + while (1) { + struct timespec t = { retry_wait, 0 }; + ++ do_master_list_reset(master); ++ + age = time(NULL); + if (master_read_master(master, age, 0)) { + ret = 1; +@@ -2586,6 +2609,8 @@ int main(int argc, char *argv[]) + * Failed to read master map, continue with what + * we have anyway. + */ ++ do_master_list_reset(master_list); ++ age = time(NULL); + master_read_master(master_list, age, 1); + } + } diff --git a/SOURCES/autofs-5.1.3-revert-fix-argc-off-by-one-in-mount_autofs_c.patch b/SOURCES/autofs-5.1.3-revert-fix-argc-off-by-one-in-mount_autofs_c.patch new file mode 100644 index 0000000..b5049a4 --- /dev/null +++ b/SOURCES/autofs-5.1.3-revert-fix-argc-off-by-one-in-mount_autofs_c.patch @@ -0,0 +1,58 @@ +autofs-5.1.3 - revert fix argc off by one in mount_autofs.c + +From: Ian Kent + +Commit 6a44f715cf to fix an off by one error in the arguments calculation +when mounting an autofs submount actually introduced an off by one error +instead of fixing one. + +Revert the change. + +Signed-off-by: Ian Kent +--- + CHANGELOG | 1 + + modules/mount_autofs.c | 8 ++++---- + 2 files changed, 5 insertions(+), 4 deletions(-) + +--- autofs-5.0.7.orig/CHANGELOG ++++ autofs-5.0.7/CHANGELOG +@@ -251,6 +251,7 @@ + - limit getgrgid_r() buffer size. + - add congigure option for limiting getgrgid_r() stack usage. + - fix unset tsd group name handling. ++- revert fix argc off by one in mount_autofs.c. + + 25/07/2012 autofs-5.0.7 + ======================= +--- autofs-5.0.7.orig/modules/mount_autofs.c ++++ autofs-5.0.7/modules/mount_autofs.c +@@ -181,11 +181,11 @@ int mount_mount(struct autofs_point *ap, + + if (options) { + char *t = options; +- while ((t = strchr(t, ',')) != NULL) { ++ do { + argc++; + if (*t == ',') + t++; +- } ++ } while ((t = strchr(t, ',')) != NULL); + } + argv = (const char **) alloca((argc + 1) * sizeof(char *)); + +@@ -213,13 +213,13 @@ int mount_mount(struct autofs_point *ap, + + if (options) { + p = options; +- while ((p = strchr(p, ',')) != NULL) { ++ do { + if (*p == ',') { + *p = '\0'; + p++; + } + argv[argc++] = p; +- } ++ } while ((p = strchr(p, ',')) != NULL); + } + argv[argc] = NULL; + diff --git a/SPECS/autofs.spec b/SPECS/autofs.spec index 47c02bb..776262f 100644 --- a/SPECS/autofs.spec +++ b/SPECS/autofs.spec @@ -8,7 +8,7 @@ Summary: A tool for automatically mounting and unmounting filesystems Name: autofs Version: 5.0.7 -Release: 69%{?dist} +Release: 70%{?dist}.1 Epoch: 1 License: GPLv2+ Group: System Environment/Daemons @@ -406,6 +406,12 @@ Patch790: autofs-5.1.2-limit-getgrgid_r-buffer-size.patch Patch791: autofs-5.1.2-add-congigure-option-for-limiting-getgrgid_r-stack-usage.patch Patch792: autofs-5.1.3-fix-unset-tsd-group-name-handling.patch +Patch793: autofs-5.1.3-revert-fix-argc-off-by-one-in-mount_autofs_c.patch +Patch794: autofs-5.1.3-allow-dot-in-OPTIONSTR-value-lexer-pattern.patch +Patch795: autofs-5.1.3-handle-additional-nfs-versions-in-mount_nfs_c.patch + +Patch800: autofs-5.1.3-reset-master-map-list-on-startup-retry.patch + Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) %if %{with_systemd} BuildRequires: systemd-units @@ -849,6 +855,12 @@ echo %{version}-%{release} > .version %patch791 -p1 %patch792 -p1 +%patch793 -p1 +%patch794 -p1 +%patch795 -p1 + +%patch800 -p1 + %build LDFLAGS=-Wl,-z,now %configure --disable-mount-locking \ @@ -945,6 +957,21 @@ fi %dir /etc/auto.master.d %changelog +* Thu Oct 19 2017 Ian Kent - 5.0.7-70.el7_4.1 +- bz1515311 - Automount cannot access host shares after a reboot [rhel-7.4.z] + - reset master map list on startup retry. +- Resolves: rhbz#1515311 + +* Thu Oct 19 2017 Ian Kent - 5.0.7-70.el7_4 +- bz1503945 - autofs option parsing for maps with fstype=autofs no longer + works [rhel-7.4.z] + - revert fix argc off by one in mount_autofs.c. +- bz1503946 - autofs map entry options field does not accept dot character + [rhel-7.4.z] + - allow dot in OPTIONSTR value lexer pattern. + - handle additional nfs versions in mount_nfs.c. +- Resolves: rhbz#1503945 rhbz#1503946 + * Fri Jun 2 2017 Ian Kent - 5.0.7-69 - bz1435736 - autofs fails with kernel: automount[3386]: segfault at 7f3fb7595ca8 ip 00007f3fb61e353a sp 00007f3fb7595cb0