Neil Brown wrote: > Currently if probe port is asked to probe for a specific version, and > that version is not supported, it will probe other versions too. > This means that if mountd is run with "--no-nfs-version 3", > It will first probe for NFS version 3, which will succeed (assuming the > kernel supported NFSv3), then it will check the matching mountd version (3) > and probe_port on discovering that isn't supported will try other versions, > find "1" is supported will succeed. > > This leaves us using mount version 1 for an NFSv3 mount, which doesn't work > and leads to a SIGSEGV > > There is no case where trying other versions is needed the request one is > not supported, so simply remove that code. I agree with that understanding: if the caller is asking for a specific version of the protocol in question, we aren't looking for a wildcard. Time to add another case to our list of regression tests. I wonder if the same misbehavior occurs when probing for transport protocols? > Signed-off-by: Neil Brown > --- > utils/mount/network.c | 4 ---- > 1 files changed, 0 insertions(+), 4 deletions(-) > > diff --git a/utils/mount/network.c b/utils/mount/network.c > index 63d5f5a..2b09457 100644 > --- a/utils/mount/network.c > +++ b/utils/mount/network.c > @@ -417,10 +417,6 @@ static int probe_port(clnt_addr_t *server, const unsigned long *versions, > continue; > p_prot = protos; > } > - if (vers == pmap->pm_vers) { > - p_vers = versions; > - vers = 0; > - } > if (vers || !*++p_vers) > break; > }