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
This commit is contained in:
parent
9fbbaac0bb
commit
eb27d7fb1c
@ -1810,10 +1810,9 @@ nfsrv_remove(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
|
||||
}
|
||||
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 @@ nfsrv_link(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
|
||||
if (v3) {
|
||||
nfsm_srvpostop_attr(getret, &at);
|
||||
nfsm_srvwcc_data(dirfor_ret, &dirfor, diraft_ret, &diraft);
|
||||
error = 0;
|
||||
}
|
||||
error = 0;
|
||||
/* fall through */
|
||||
|
||||
nfsmout:
|
||||
|
Loading…
Reference in New Issue
Block a user