diff -up nfs-utils-1.2.0/utils/mount/stropts.c.orig nfs-utils-1.2.0/utils/mount/stropts.c
--- nfs-utils-1.2.0/utils/mount/stropts.c.orig 2009-10-19 11:14:41.000000000 -0400
+++ nfs-utils-1.2.0/utils/mount/stropts.c 2009-10-19 12:25:38.000000000 -0400
@@ -431,11 +431,11 @@ static struct mount_options *nfs_rewrite
struct mount_options *options;
struct sockaddr_storage nfs_address;
struct sockaddr *nfs_saddr = (struct sockaddr *)&nfs_address;
- socklen_t nfs_salen;
+ socklen_t nfs_salen = sizeof(nfs_address);
struct pmap nfs_pmap;
struct sockaddr_storage mnt_address;
struct sockaddr *mnt_saddr = (struct sockaddr *)&mnt_address;
- socklen_t mnt_salen;
+ socklen_t mnt_salen = sizeof(mnt_address);
struct pmap mnt_pmap;
options = po_split(str);
@@ -573,7 +573,12 @@ static int nfs_try_nfs23mount(struct nfs
if (nfs_sys_mount(mi, "nfs", *extra_opts))
return 1;
+ /*
+ * The kernel returns EOPNOTSUPP if the RPC bind failed,
+ * and EPROTONOSUPPORT if the version isn't supported.
if (nfs_is_permanent_error(errno))
+ */
+ if (errno != EOPNOTSUPP && errno != EPROTONOSUPPORT)
return 0;
return nfs_retry_nfs23mount(mi);
@@ -639,7 +644,6 @@ static int nfsmount_fg(struct nfsmount_i
for (;;) {
if (nfs_try_mount(mi))
return EX_SUCCESS;
-
if (nfs_is_permanent_error(errno))
break;