
Problem: infinite error loop occurs when trying to access non-exitent
         directory.

This patch, for 4.1.3, fixes the problem caused when the default for
multi-mounts was changed from strict to non-strict. This change tickled
a bug in the old autofs4 kernel module found in 2.4 kernels and 2.6
kernels to date (ie. < 2.6.7).

This change in default caused a small change in mount logic which went
unnoticed and lead to this problem. So the kernel interaction problem
remains but is much less likely to occur. If this problem persists
after applying this patch then update your kernel autofs4.

The patch restores the previous logic but leaves the new default.

diff -Nur autofs-4.1.3.orig/modules/parse_sun.c autofs-4.1.3/modules/parse_sun.c
--- autofs-4.1.3.orig/modules/parse_sun.c	2004-05-18 20:22:40.000000000 +0800
+++ autofs-4.1.3/modules/parse_sun.c	2004-05-29 15:38:42.000000000 +0800
@@ -602,10 +602,8 @@
 			      options);
 	}
 
-	if (nonstrict && rv) {
-		debug("ignoring failure of non-strict mount");
-		return 0;
-	}
+	if (nonstrict && rv)
+		return -rv;
 
 	return rv;
 }
@@ -746,7 +744,11 @@
 			free(loc);
 			free(myoptions);
 
-			if (rv)
+			/* Convert non-strict failure into success */
+			if (rv < 0) {
+				rv = 0;
+				debug("parse_mount: ignoring failure of non-strict mount");
+			} else if (rv > 0)
 				break;
 
 		} while (*p == '/');
@@ -789,6 +791,10 @@
 		      options, loclen, loc);
 
 		rv = sun_mount(root, name, name_len, loc, loclen, options);
+		/* non-strict failure to normal failure for ordinary mount */
+		if (rv < 0)
+			rv = -rv;
+			
 		free(loc);
 		free(options);
 	}
