From 200828792846da755d0cf8c08af487c7c745c559 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Thomas=20Wei=C3=9Fschuh?= Date: Tue, 17 Oct 2023 18:06:15 +0200 Subject: [PATCH] umount: handle bindmounts during --recursive MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Fixes #2551 Signed-off-by: Thomas Weißschuh --- sys-utils/umount.c | 2 +- tests/expected/mount/umount-recursive | 1 + tests/ts/mount/umount-recursive | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/sys-utils/umount.c b/sys-utils/umount.c index e579fb786b..3a740ae3bc 100644 --- a/sys-utils/umount.c +++ b/sys-utils/umount.c @@ -355,7 +355,7 @@ static int umount_recursive(struct libmnt_context *cxt, const char *spec) /* it's always real mountpoint, don't assume that the target maybe a device */ mnt_context_disable_swapmatch(cxt, 1); - fs = mnt_table_find_target(tb, spec, MNT_ITER_BACKWARD); + fs = mnt_table_find_target(tb, spec, MNT_ITER_FORWARD); if (fs) rc = umount_do_recurse(cxt, tb, fs); else { diff --git a/tests/expected/mount/umount-recursive b/tests/expected/mount/umount-recursive index 6a95d56dbf..0785521789 100644 --- a/tests/expected/mount/umount-recursive +++ b/tests/expected/mount/umount-recursive @@ -11,4 +11,5 @@ B2) Mount child-bind C) Mount child/child D) Mount child/child E) Mount child-bind +F) Mount mountpoint-bind Success diff --git a/tests/ts/mount/umount-recursive b/tests/ts/mount/umount-recursive index c6f39c534f..94e3680d18 100755 --- a/tests/ts/mount/umount-recursive +++ b/tests/ts/mount/umount-recursive @@ -88,6 +88,9 @@ ts_log "E) Mount child-bind" mkdir -p $TS_MOUNTPOINT/bindC $TS_CMD_MOUNT --bind $TS_MOUNTPOINT/mntB/mntC $TS_MOUNTPOINT/bindC &> /dev/null +ts_log "F) Mount mountpoint-bind" +$TS_CMD_MOUNT --bind $TS_MOUNTPOINT $TS_MOUNTPOINT &> /dev/null + udevadm settle $TS_CMD_UMOUNT --recursive $TS_MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG [ $? == 0 ] || ts_die "umount failed" -- 2.47.3