Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 3 Dec 2009 20:59:28 +0000 (UTC)
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r200084 - head/sys/nfsserver
Message-ID:  <200912032059.nB3KxSUa026036@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jhb
Date: Thu Dec  3 20:59:28 2009
New Revision: 200084
URL: http://svn.freebsd.org/changeset/base/200084

Log:
  Properly return an error reply if an NFS remove or link operation fails.
  Previously the failing operation would allocate an mbuf and construct an
  error reply, but because the function did not return 0, the NFS server
  assumed it had failed to generate a reply and would leak the reply mbuf as
  well as not sending the reply to the NFS client.
  
  PR:		kern/140853
  Submitted by:	Ted Faber  faber at isi edu (remove)
  Reviewed by:	rmacklem (remove)
  MFC after:	1 week

Modified:
  head/sys/nfsserver/nfs_serv.c

Modified: head/sys/nfsserver/nfs_serv.c
==============================================================================
--- head/sys/nfsserver/nfs_serv.c	Thu Dec  3 20:55:09 2009	(r200083)
+++ head/sys/nfsserver/nfs_serv.c	Thu Dec  3 20:59:28 2009	(r200084)
@@ -1810,10 +1810,9 @@ out:
 	}
 ereply:
 	nfsm_reply(NFSX_WCCDATA(v3));
-	if (v3) {
+	if (v3)
 		nfsm_srvwcc_data(dirfor_ret, &dirfor, diraft_ret, &diraft);
-		error = 0;
-	}
+	error = 0;
 nfsmout:
 	NDFREE(&nd, NDF_ONLY_PNBUF);
 	if (nd.ni_dvp) {
@@ -2187,8 +2186,8 @@ ereply:
 	if (v3) {
 		nfsm_srvpostop_attr(getret, &at);
 		nfsm_srvwcc_data(dirfor_ret, &dirfor, diraft_ret, &diraft);
-		error = 0;
 	}
+	error = 0;
 	/* fall through */
 
 nfsmout:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200912032059.nB3KxSUa026036>