Message ID | 1409797668-11870-1-git-send-email-quwenruo@cn.fujitsu.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Reviewed-by: Omar Sandoval <osandov@osandov.com>
What's the status on this patch? There have been at least a couple of bug reports that this fixes, including https://bugzilla.kernel.org/show_bug.cgi?id=83741.
diff --git a/utils.c b/utils.c index 6c09366..6a16b06 100644 --- a/utils.c +++ b/utils.c @@ -2359,8 +2359,8 @@ int find_mount_root(const char *path, char **mount_root) while ((ent = getmntent(mnttab))) { len = strlen(ent->mnt_dir); if (strncmp(ent->mnt_dir, path, len) == 0) { - /* match found */ - if (longest_matchlen < len) { + /* match found and use the latest match */ + if (longest_matchlen <= len) { free(longest_match); longest_matchlen = len; longest_match = strdup(ent->mnt_dir);
Original find_mount_root() will use the first mount point match and return it. It was OK until the following commit, which will also check the fstype: de22c28ef31d9721606ba059 btrfs-progs: Check fstype in find_mount_root() With fstype check, we should check the last match, not only the first one. Or the following mount will not pass the find_mount_root(): /dev/sdc on /mnt/test type ext4 (rw,relatime,data=ordered) /dev/sdb on /mnt/test type btrfs (rw,relatime,space_cache) This patch will use the last match to do the fstype check. Reported-by: Remco Hosman <remco@yerf-it.nl> Signed-off-bu: Remco Hosman <remco@yerf-it.nl> Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> --- utils.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)