diff options
| author | Doug Rabson <dfr@FreeBSD.org> | 2008-03-30 14:06:43 +0000 |
|---|---|---|
| committer | Doug Rabson <dfr@FreeBSD.org> | 2008-03-30 14:06:43 +0000 |
| commit | ee5227ed475516e352080800399e1fa00634cfdc (patch) | |
| tree | 4e0bb211a5769f938b4e85c103996597f2bad2b3 /sys/nfsserver | |
| parent | 74955f7f00e0a30720e1e769e718b38ef061a140 (diff) | |
Notes
Diffstat (limited to 'sys/nfsserver')
| -rw-r--r-- | sys/nfsserver/nfs_srvsock.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/nfsserver/nfs_srvsock.c b/sys/nfsserver/nfs_srvsock.c index 053cffca7186..641a229bec8b 100644 --- a/sys/nfsserver/nfs_srvsock.c +++ b/sys/nfsserver/nfs_srvsock.c @@ -651,14 +651,17 @@ nfsrv_getstream(struct nfssvc_sock *slp, int waitflag) NFSD_UNLOCK(); rec = malloc(sizeof(struct nfsrv_rec), M_NFSRVDESC, waitflag == M_DONTWAIT ? M_NOWAIT : M_WAITOK); - NFSD_LOCK(); - if (!rec) { - m_freem(slp->ns_frag); - } else { + if (rec) { nfs_realign(&slp->ns_frag, 10 * NFSX_UNSIGNED); rec->nr_address = NULL; rec->nr_packet = slp->ns_frag; + NFSD_LOCK(); STAILQ_INSERT_TAIL(&slp->ns_rec, rec, nr_link); + } else { + NFSD_LOCK(); + } + if (!rec) { + m_freem(slp->ns_frag); } slp->ns_frag = NULL; } |
