autofs-5.1.9 - fix dont delay expire

From: Ian Kent <raven@themaw.net>

Commit 59c4617c4 ("autofs-5.1.8 - dont delay expire") introduced a
regression in submount expire. It tuns out that not also waiting for
submounts in state ST_SHUTDOWN to go away or return to ST_READY causes
a synchronization problem.

Signed-off-by: Ian Kent <raven@themaw.net>
Fixes: commit 59c4617c4 ("autofs-5.1.8 - dont delay expire")
---
 CHANGELOG       |    1 +
 daemon/master.c |    9 +++++----
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 7859ca28c..9a8e893c6 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -39,6 +39,7 @@
 - fix possible memory leak in mnts_get_expire_list().
 - fix uninitialised list in struct master_mapent.
 - fix tsv memory leak in set_tsd_user_vars().
+- fix dont delay expire.
 
 02/11/2023 autofs-5.1.9
 - fix kernel mount status notification.
diff --git a/daemon/master.c b/daemon/master.c
index 98eaba051..817ca6e35 100644
--- a/daemon/master.c
+++ b/daemon/master.c
@@ -1243,9 +1243,9 @@ int master_notify_submount(struct autofs_point *ap, const char *path, enum state
 		st_wait_task(found, state, 0);
 
 		/*
-		 * If our submount gets to state ST_SHUTDOWN_PENDING or
-		 * ST_SHUTDOWN_FORCE we need to wait until it goes away
-		 * or changes to state ST_SHUTDOWN or ST_READY.
+		 * If our submount gets to state ST_SHUTDOWN, ST_SHUTDOWN_PENDING or
+		 * ST_SHUTDOWN_FORCE we need to wait until it goes away or changes
+		 * to ST_READY.
 		 */
 		while ((sbmnt = mnts_find_submount(path))) {
 			struct timespec t = { 0, 300000000 };
@@ -1253,7 +1253,8 @@ int master_notify_submount(struct autofs_point *ap, const char *path, enum state
 
 			st_mutex_lock();
 			if (!sbmnt->ap ||
-			   (sbmnt->ap->state != ST_SHUTDOWN_PENDING &&
+			   (sbmnt->ap->state != ST_SHUTDOWN &&
+			    sbmnt->ap->state != ST_SHUTDOWN_PENDING &&
 			    sbmnt->ap->state != ST_SHUTDOWN_FORCE)) {
 				ret = 0;
 				st_mutex_unlock();
