From owner-cvs-all Mon Nov 29 22:56:20 1999 Delivered-To: cvs-all@freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.ORG [204.216.27.21]) by hub.freebsd.org (Postfix) with ESMTP id 429051561E; Mon, 29 Nov 1999 22:56:16 -0800 (PST) (envelope-from dillon@FreeBSD.org) Received: (from dillon@localhost) by freefall.freebsd.org (8.9.3/8.9.2) id WAA98186; Mon, 29 Nov 1999 22:56:16 -0800 (PST) (envelope-from dillon@FreeBSD.org) Message-Id: <199911300656.WAA98186@freefall.freebsd.org> From: Matt Dillon Date: Mon, 29 Nov 1999 22:56:16 -0800 (PST) To: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/nfs nfs_vnops.c Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk dillon 1999/11/29 22:56:16 PST Modified files: sys/nfs nfs_vnops.c Log: The symlink implementation could improperly return a NULL vp along with a 0 error code. The problem occured with NFSv2 mounts and also with any NFSv3 mount returning an EEXIST error (which is translated to 0 prior to return). The reply to the rpc only contains the file handle for the no-error case under NFSv3. The error case under NFSv3 and all cases under NFSv2 do *not* return the file handle. The fix is to do a secondary lookup to obtain the file handle and thus be able to generate a return vnode for the situations where the rpc reply does not contain the required information. The bug was originally introduced when VOP_SYMLINK semantics were changed for -CURRENT. The NFS symlink implementation was not properly modified to go along with the change despite the fact that three people reviewed the code. It took four attempts to get the current fix correct with five people. Is NFS obfuscated? Ha! Reviewed by: Alfred Perlstein Testing and Discussion: "Viren R.Shah" , Eivind Eklund , Ian Dowse Revision Changes Path 1.147 +34 -4 src/sys/nfs/nfs_vnops.c To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message