summaryrefslogtreecommitdiffstats
path: root/sys/kern/vfs_syscalls.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/vfs_syscalls.c')
-rw-r--r--sys/kern/vfs_syscalls.c36
1 files changed, 11 insertions, 25 deletions
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c
index ef9c29fa8c1..f60e590b6ae 100644
--- a/sys/kern/vfs_syscalls.c
+++ b/sys/kern/vfs_syscalls.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vfs_syscalls.c,v 1.88 2002/02/05 16:02:27 art Exp $ */
+/* $OpenBSD: vfs_syscalls.c,v 1.89 2002/02/08 13:53:28 art Exp $ */
/* $NetBSD: vfs_syscalls.c,v 1.71 1996/04/23 10:29:02 mycroft Exp $ */
/*
@@ -874,8 +874,6 @@ sys_open(p, v, retval)
if ((error = falloc(p, &fp, &indx)) != 0)
return (error);
- FILE_USE(fp);
-
flags = FFLAGS(SCARG(uap, flags));
cmode = ((SCARG(uap, mode) &~ fdp->fd_cmask) & ALLPERMS) &~ S_ISTXT;
NDINIT(&nd, LOOKUP, FOLLOW, UIO_USERSPACE, SCARG(uap, path), p);
@@ -895,8 +893,8 @@ sys_open(p, v, retval)
}
if (error == ERESTART)
error = EINTR;
- closef(fp, p);
fdremove(fdp, indx);
+ closef(fp, p);
return (error);
}
p->p_dupfd = 0;
@@ -919,10 +917,9 @@ sys_open(p, v, retval)
VOP_UNLOCK(vp, 0, p);
error = VOP_ADVLOCK(vp, (caddr_t)fp, F_SETLK, &lf, type);
if (error) {
- (void) vn_close(vp, fp->f_flag, fp->f_cred, p);
- FILE_UNUSE(fp);
- ffree(fp);
+ /* closef will vn_close the file for us. */
fdremove(fdp, indx);
+ closef(fp, p);
return (error);
}
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
@@ -943,17 +940,15 @@ sys_open(p, v, retval)
}
if (error) {
VOP_UNLOCK(vp, 0, p);
- (void) vn_close(vp, fp->f_flag, fp->f_cred, p);
- FILE_UNUSE(fp);
- ffree(fp);
+ /* closef will close the file for us. */
fdremove(fdp, indx);
+ closef(fp, p);
return (error);
}
}
VOP_UNLOCK(vp, 0, p);
*retval = indx;
FILE_SET_MATURE(fp);
- FILE_UNUSE(fp);
return (0);
}
@@ -1105,9 +1100,9 @@ sys_fhopen(p, v, retval)
VOP_UNLOCK(vp, 0, p);
error = VOP_ADVLOCK(vp, (caddr_t)fp, F_SETLK, &lf, type);
if (error) {
- (void) vn_close(vp, fp->f_flag, fp->f_cred, p);
- ffree(fp);
+ /* closef will vn_close the file for us. */
fdremove(fdp, indx);
+ closef(fp, p);
return (error);
}
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
@@ -1119,8 +1114,8 @@ sys_fhopen(p, v, retval)
return (0);
bad:
- ffree(fp);
fdremove(fdp, indx);
+ closef(fp, p);
if (vp != NULL)
vput(vp);
return (error);
@@ -2651,11 +2646,11 @@ sys_pread(p, v, retval)
if ((fp->f_flag & FREAD) == 0)
return (EBADF);
- FILE_USE(fp);
+ FREF(fp);
vp = (struct vnode *)fp->f_data;
if (fp->f_type != DTYPE_VNODE || vp->v_type == VFIFO) {
- FILE_UNUSE(fp);
+ FRELE(fp);
return (ESPIPE);
}
@@ -2706,9 +2701,6 @@ sys_preadv(p, v, retval)
&offset, retval));
out:
-#if notyet
- FILE_UNUSE(fp, p);
-#endif
return (error);
}
@@ -2752,9 +2744,6 @@ sys_pwrite(p, v, retval)
&offset, retval));
out:
-#if notyet
- FILE_UNUSE(fp, p);
-#endif
return (error);
}
@@ -2799,8 +2788,5 @@ sys_pwritev(p, v, retval)
&offset, retval));
out:
-#if notyet
- FILE_UNUSE(fp, p);
-#endif
return (error);
}