path: root/utils.c
diff options
authorQu Wenruo <>2014-09-04 10:27:48 +0800
committerDavid Sterba <>2014-09-14 19:06:10 +0200
commit6a47725a6fb8a463dd60611800222c7297195588 (patch)
tree4e47572ab48693c24b467c7da597389418812884 /utils.c
parent24f5a651d94678746dc8a72f28d49c36e33051e7 (diff)
btrfs-progs: fix find_mount_root() to handle duplicated mount point correctly
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 <> Signed-off-by: Remco Hosman <> Signed-off-by: Qu Wenruo <> Reviewed-by: Omar Sandoval <> Signed-off-by: David Sterba <>
Diffstat (limited to 'utils.c')
1 files changed, 2 insertions, 2 deletions
diff --git a/utils.c b/utils.c
index f0a3c070..c4f2a00c 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) {
longest_matchlen = len;
longest_match = strdup(ent->mnt_dir);