summaryrefslogtreecommitdiffstats
path: root/sys/nfsserver
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2009-12-03 20:59:28 +0000
committerjhb <jhb@FreeBSD.org>2009-12-03 20:59:28 +0000
commit045df5c8fdab7f0a0ef81a4f67fbf3e1a645856f (patch)
tree0b6b81a8fddc0b36f94e56dde929b5a43a30f219 /sys/nfsserver
parentf632a769ede6a685b1b73a32d81e7c4db8705201 (diff)
downloadFreeBSD-src-045df5c8fdab7f0a0ef81a4f67fbf3e1a645856f.zip
FreeBSD-src-045df5c8fdab7f0a0ef81a4f67fbf3e1a645856f.tar.gz
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
Diffstat (limited to 'sys/nfsserver')
-rw-r--r--sys/nfsserver/nfs_serv.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/sys/nfsserver/nfs_serv.c b/sys/nfsserver/nfs_serv.c
index 3bb9a6a..d1be5e5 100644
--- a/sys/nfsserver/nfs_serv.c
+++ b/sys/nfsserver/nfs_serv.c
@@ -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:
OpenPOWER on IntegriCloud