autofs-5.0.3 - fix expire race

From: Ian Kent <raven@themaw.net>

For multi-mounts, if a mount request comes in and does not complete
before a concurrent expire autofs will not recognize that the tree
has become busy which can lead to a partial expire leaving the
multi-mount non-functional.
---

 CHANGELOG    |    1 +
 lib/mounts.c |    5 ++++-
 2 files changed, 5 insertions(+), 1 deletions(-)


diff --git a/CHANGELOG b/CHANGELOG
index e55b873..b9d8299 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -60,6 +60,7 @@
 - auto adjust ldap page size.
 - fix prune cache valid check.
 - fix mountd vers retry.
+- fix expire race.
 
 03/09/2009 autofs-5.0.5
 -----------------------
diff --git a/lib/mounts.c b/lib/mounts.c
index 4c44982..f26579e 100644
--- a/lib/mounts.c
+++ b/lib/mounts.c
@@ -1525,8 +1525,11 @@ int umount_multi_triggers(struct autofs_point *ap, struct mapent *me, char *root
 		oe_base = oe->key + strlen(root);
 		left += umount_multi_triggers(ap, oe, root, oe_base);
 
-		if (oe->ioctlfd != -1)
+		if (oe->ioctlfd != -1 ||
+		    is_mounted(_PROC_MOUNTS, oe->key, MNTS_REAL)) {
 			left++;
+			break;
+		}
 	}
 
 	if (left)