On Tue, May 28, 2019 at 04:31:19PM -0400, Trond Myklebust wrote: > @@ -373,21 +390,22 @@ static char *next_mnt(void **v, char *p) > FILE *f; > struct mntent *me; > size_t l = strlen(p); > + char *mnt_dir = NULL; > + > if (*v == NULL) { > f = setmntent("/etc/mtab", "r"); > *v = f; > } else > f = *v; > - while ((me = getmntent(f)) != NULL && l > 1 && > - (strncmp(me->mnt_dir, p, l) != 0 || > - me->mnt_dir[l] != '/')) > - ; > - if (me == NULL) { > - endmntent(f); > - *v = NULL; > - return NULL; > + while ((me = getmntent(f)) != NULL && l > 1) { > + mnt_dir = nfsd_path_strip_root(me->mnt_dir); > + > + if (strncmp(mnt_dir, p, l) == 0 && mnt_dir[l] != '/') > + return mnt_dir; That should be "mnt_dir[l] == '/'", right? --b. > } > - return me->mnt_dir; > + endmntent(f); > + *v = NULL; > + return NULL; > } > > /* same_path() check is two paths refer to the same directory.