usr/src/uts/common/fs/nfs/nfs_server.c
changeset 4635 5372e33d8533
parent 2822 dfa681ac52ec
child 5331 3047ad28a67b
--- a/usr/src/uts/common/fs/nfs/nfs_server.c	Wed Jul 11 16:37:00 2007 -0700
+++ b/usr/src/uts/common/fs/nfs/nfs_server.c	Wed Jul 11 18:54:04 2007 -0700
@@ -19,7 +19,7 @@
  * CDDL HEADER END
  */
 /*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
@@ -259,6 +259,7 @@
 nvlist_t *rfs4_dss_paths, *rfs4_dss_oldpaths;
 
 int rfs4_dispatch(struct rpcdisp *, struct svc_req *, SVCXPRT *, char *);
+bool_t rfs4_minorvers_mismatch(struct svc_req *, SVCXPRT *, void *);
 
 /*
  * RDMA wait variables.
@@ -1481,8 +1482,14 @@
 	{
 		bzero(args, disp->dis_argsz);
 		if (!SVC_GETARGS(xprt, disp->dis_xdrargs, args)) {
+			error++;
+			/*
+			 * Check if we are outside our capabilities.
+			 */
+			if (rfs4_minorvers_mismatch(req, xprt, (void *)args))
+				goto done;
+
 			svcerr_decode(xprt);
-			error++;
 			cmn_err(CE_NOTE,
 			    "Failed to decode arguments for %s version %u "
 			    "procedure %s client %s%s",