View | Details | Raw Unified | Return to bug 16815
Collapse All | Expand All

(-)nfs_vnops.c (-3 / +9 lines)
Lines 820-828 Link Here
820
	struct proc *p = cnp->cn_proc;
820
	struct proc *p = cnp->cn_proc;
821
821
822
	*vpp = NULLVP;
822
	*vpp = NULLVP;
823
	if ((flags & ISLASTCN) && (dvp->v_mount->mnt_flag & MNT_RDONLY) &&
824
	    (cnp->cn_nameiop == DELETE || cnp->cn_nameiop == RENAME))
825
		return (EROFS);
826
	if (dvp->v_type != VDIR)
823
	if (dvp->v_type != VDIR)
827
		return (ENOTDIR);
824
		return (ENOTDIR);
828
	lockparent = flags & LOCKPARENT;
825
	lockparent = flags & LOCKPARENT;
Lines 833-838 Link Here
833
		struct vattr vattr;
830
		struct vattr vattr;
834
		int vpid;
831
		int vpid;
835
832
833
		if ((flags & ISLASTCN) &&
834
		    (dvp->v_mount->mnt_flag & MNT_RDONLY) &&
835
		    (cnp->cn_nameiop == DELETE || cnp->cn_nameiop == RENAME))
836
			return (EROFS);
837
836
		if ((error = VOP_ACCESS(dvp, VEXEC, cnp->cn_cred, p)) != 0) {
838
		if ((error = VOP_ACCESS(dvp, VEXEC, cnp->cn_cred, p)) != 0) {
837
			*vpp = NULLVP;
839
			*vpp = NULLVP;
838
			return (error);
840
			return (error);
Lines 894-899 Link Here
894
		goto nfsmout;
896
		goto nfsmout;
895
	}
897
	}
896
	nfsm_getfh(fhp, fhsize, v3);
898
	nfsm_getfh(fhp, fhsize, v3);
899
900
	if ((flags & ISLASTCN) && (dvp->v_mount->mnt_flag & MNT_RDONLY) &&
901
	    (cnp->cn_nameiop == DELETE || cnp->cn_nameiop == RENAME))
902
		return (EROFS);
897
903
898
	/*
904
	/*
899
	 * Handle RENAME case...
905
	 * Handle RENAME case...

Return to bug 16815