diff -rup busybox-1.11.1.before/util-linux/umount.c busybox-1.11.1/util-linux/umount.c
--- busybox-1.11.1.before/util-linux/umount.c	2008-06-25 13:51:32.000000000 +0100
+++ busybox-1.11.1/util-linux/umount.c	2008-11-07 11:55:59.436835864 +0000
@@ -117,6 +117,16 @@ int umount_main(int argc ATTRIBUTE_UNUSE
 		// umount the directory even if we were given the block device.
 		if (m) zapit = m->dir;
 
+		// Act like modern versions of mount(8) and don't unmount
+		// /proc/ as part of -a.
+		if (opt & OPT_ALL) {
+			if (!strcmp(zapit, "/proc")) {
+				errno = 0;
+				m = m->next;
+				continue;
+			}
+		}
+
 		// Let's ask the thing nicely to unmount.
 		curstat = umount(zapit);
 
