---
 util-linux/umount.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/util-linux/umount.c b/util-linux/umount.c
index 077b635..dae6f74 100644
--- a/util-linux/umount.c
+++ b/util-linux/umount.c
@@ -175,6 +175,14 @@ int umount_main(int argc UNUSED_PARAM, char **argv)
 						break;
 			}
 		}
+
+		// For umount -a, skip umounting /proc, as systems may symlink
+		// /etc/mtab to /proc/mounts
+		if (m && (opt & OPT_ALL) && (strcmp(m->dir,"/proc") == 0)) {
+			m = m->next;
+			continue;
+		}
+
 		// If we couldn't find this sucker in /etc/mtab, punt by passing our
 		// command line argument straight to the umount syscall.  Otherwise,
 		// umount the directory even if we were given the block device.
-- 
2.7.4

