diff options
author | Vaclav Dolezal | 2018-04-24 18:05:04 +0200 |
---|---|---|
committer | Karel Zak | 2018-06-11 16:20:08 +0200 |
commit | 6e965d0f4a1e1b9c6da92d51e1dafa9571467388 (patch) | |
tree | 9102b43d28e59023d838af41f69ab7e6a192e58f /sys-utils/umount.c | |
parent | umount: allow PID as --namespace argument (diff) | |
download | kernel-qcow2-util-linux-6e965d0f4a1e1b9c6da92d51e1dafa9571467388.tar.gz kernel-qcow2-util-linux-6e965d0f4a1e1b9c6da92d51e1dafa9571467388.tar.xz kernel-qcow2-util-linux-6e965d0f4a1e1b9c6da92d51e1dafa9571467388.zip |
umount: fix behaviour of -A and -R with --namespace
Load /proc/self/mountinfo from correct namespace.
Signed-off-by: Vaclav Dolezal <vdolezal@redhat.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'sys-utils/umount.c')
-rw-r--r-- | sys-utils/umount.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/sys-utils/umount.c b/sys-utils/umount.c index 244080598..5478c55b8 100644 --- a/sys-utils/umount.c +++ b/sys-utils/umount.c @@ -219,7 +219,13 @@ static int umount_one(struct libmnt_context *cxt, const char *spec) static struct libmnt_table *new_mountinfo(struct libmnt_context *cxt) { - struct libmnt_table *tb = mnt_new_table(); + struct libmnt_table *tb; + struct libmnt_ns *ns_old = mnt_context_switch_target_ns(cxt); + + if (!ns_old) + err(MNT_EX_SYSERR, _("failed to switch namespace")); + + tb = mnt_new_table(); if (!tb) err(MNT_EX_SYSERR, _("libmount table allocation failed")); @@ -232,6 +238,9 @@ static struct libmnt_table *new_mountinfo(struct libmnt_context *cxt) tb = NULL; } + if (!mnt_context_switch_ns(cxt, ns_old)) + err(MNT_EX_SYSERR, _("failed to switch namespace")); + return tb; } |