From: Karel Zak Date: Mon, 22 Mar 2021 13:57:07 +0000 (+0100) Subject: libmount: mnt_table_over_fs() make child optional X-Git-Tag: v2.37-rc1~50 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1c81dfff1a6a79c6c78a051e0ef2ead0e017177a;p=thirdparty%2Futil-linux.git libmount: mnt_table_over_fs() make child optional Signed-off-by: Karel Zak --- diff --git a/libmount/src/tab.c b/libmount/src/tab.c index 465708f618..0d5c11566c 100644 --- a/libmount/src/tab.c +++ b/libmount/src/tab.c @@ -710,7 +710,7 @@ int mnt_table_next_child_fs(struct libmnt_table *tb, struct libmnt_iter *itr, * mnt_table_over_fs: * @tb: tab pointer * @parent: pointer to parental FS - * @child: returns pointer to FS which over-mounting parent + * @child: returns pointer to FS which over-mounting parent (optional) * * This function returns by @child the first filesystenm which is over-mounted * on @parent. It means the mountpoint of @child is the same as for @parent and @@ -735,23 +735,29 @@ int mnt_table_over_fs(struct libmnt_table *tb, struct libmnt_fs *parent, struct libmnt_fs **child) { struct libmnt_iter itr; + struct libmnt_fs *fs = NULL; int id; const char *tgt; if (!tb || !parent || !is_mountinfo(tb)) return -EINVAL; + if (child) + *child = NULL; + mnt_reset_iter(&itr, MNT_ITER_FORWARD); id = mnt_fs_get_id(parent); tgt = mnt_fs_get_target(parent); - while (mnt_table_next_fs(tb, &itr, child) == 0) { - if (mnt_fs_get_parent_id(*child) == id && - mnt_fs_streq_target(*child, tgt) == 1) + while (mnt_table_next_fs(tb, &itr, &fs) == 0) { + if (mnt_fs_get_parent_id(fs) == id && + mnt_fs_streq_target(fs, tgt) == 1) { + if (child) + *child = fs; return 0; + } } - *child = NULL; return 1; /* nothing */ }