--- busybox-1.00-orig/util-linux/umount.c	2005-12-16 23:13:33.000000000 -0600
+++ busybox-1.00/util-linux/umount.c	2005-12-16 23:16:49.000000000 -0600
@@ -35,6 +35,7 @@
 #endif
 
 static const int MNT_FORCE = 1;
+static const int MNT_DETACH = 2;	/* Linksys -L mod */
 static const int MS_MGC_VAL = 0xc0ed0000; /* Magic number indicatng "new" flags */
 static const int MS_REMOUNT = 32;	/* Alter flags of a mounted FS.  */
 static const int MS_RDONLY = 1;	/* Mount read-only.  */
@@ -54,7 +55,7 @@
 static struct _mtab_entry_t *mtab_cache = NULL;
 
 
-
+static int doLazy = FALSE;		/* Linksys -L mod */
 #if defined CONFIG_FEATURE_MOUNT_FORCE
 static int doForce = FALSE;
 #endif
@@ -181,6 +182,12 @@
 		/* this was a loop device, delete it */
 		del_loop(blockDevice);
 #endif
+	if (status != 0 && doLazy) {	/* Linksys -L mod */
+		status = umount2(blockDevice, MNT_DETACH);
+		if (status != 0) {
+			bb_error_msg_and_die("lazy umount of %s failed!", blockDevice);
+		}
+	}
 #if defined CONFIG_FEATURE_MOUNT_FORCE
 	if (status != 0 && doForce) {
 		status = umount2(blockDevice, MNT_FORCE);
@@ -259,6 +266,9 @@
 				freeLoop = FALSE;
 				break;
 #endif
+			case 'L':	/* Linksys -L mod */
+				doLazy = TRUE;
+				break;
 #ifdef CONFIG_FEATURE_MTAB_SUPPORT
 			case 'n':
 				useMtab = FALSE;