Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

V1.93 (4.3BSD-Reno NFS fixes)

3 views
Skip to first unread message

Keith Bostic

unread,
Mar 13, 1991, 3:18:18 PM3/13/91
to
Subject: 4.3BSD-Reno NFS fixes
Index: /usr/src/sys/nfs/nfs_vnops.c 4.3BSD-reno

Description:
There are two problems in the NFS implementation supplied with
4.3BSD-Reno. The first is a memory leak when a rename is done
where the target existed before the rename. The second is a
race condition in readlink that could cause processes to hang.

Fix:
Apply the following patch.

*** nfs_vnops.c.old Wed Jan 30 12:55:48 1991
--- nfs_vnops.c Wed Jan 30 13:02:23 1991
***************
*** 561,580 ****
--- 561,581 ----
if (error =
nfs_loadattrcache(&newvp, &md, &dpos, (struct vattr *)0)) {
nfs_lock(vp);
nfs_nput(newvp);
m_freem(mrep);
return (error);
}
ndp->ni_vp = newvp;
if (lockparent)
nfs_lock(vp);
+ m_freem(mrep);
return (0);
}

if (!bcmp(VTONFS(vp)->n_fh.fh_bytes, (caddr_t)fhp, NFSX_FH)) {
VREF(vp);
newvp = vp;
np = VTONFS(vp);
} else if (ndp->ni_isdotdot) {
if (error = nfs_nget(vp->v_mount, fhp, &np)) {
nfs_lock(vp);
***************
*** 652,679 ****
register u_long *p;
register caddr_t cp;
register long t1;
caddr_t bpos, dpos, cp2;
u_long xid;
int error = 0;
struct mbuf *mreq, *mrep, *md, *mb, *mb2;
long len;

nfsstats.rpccnt[NFSPROC_READLINK]++;
- nfs_unlock(vp);
nfsm_reqhead(nfs_procids[NFSPROC_READLINK], cred, NFSX_FH);
nfsm_fhtom(vp);
nfsm_request(vp, NFSPROC_READLINK, procp, 0);
nfsm_strsiz(len, NFS_MAXPATHLEN);
nfsm_mtouio(uiop, len);
nfsm_reqdone;
- nfs_lock(vp);
return (error);
}

/*
* nfs read rpc call
* Ditto above
*/
nfs_readrpc(vp, uiop, cred, procp)
register struct vnode *vp;
struct uio *uiop;
--- 653,678 ----

0 new messages