summary |
tags |
clone url |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
cd17eee)
SCCS-vsn: sys/kern/vfs_syscalls.c 8.38
*
* %sccs.include.redist.c%
*
*
* %sccs.include.redist.c%
*
- * @(#)vfs_syscalls.c 8.37 (Berkeley) %G%
+ * @(#)vfs_syscalls.c 8.38 (Berkeley) %G%
*/
#include <sys/param.h>
*/
#include <sys/param.h>
vrele(fdp->fd_cdir);
fdp->fd_cdir = vp;
return (0);
vrele(fdp->fd_cdir);
fdp->fd_cdir = vp;
return (0);
error = ENOTDIR;
else
error = VOP_ACCESS(vp, VEXEC, p->p_ucred, p);
error = ENOTDIR;
else
error = VOP_ACCESS(vp, VEXEC, p->p_ucred, p);
+ vput(vp);
+ else
+ VOP_UNLOCK(vp, 0, p);
#ifdef UNION
{
extern int (**union_vnodeop_p)();
#ifdef UNION
{
extern int (**union_vnodeop_p)();
- extern struct vnode *union_dircache __P((struct vnode *));
+ extern struct vnode *union_dircache __P((struct vnode*, struct proc*));
if ((SCARG(uap, count) == auio.uio_resid) &&
(vp->v_op == union_vnodeop_p)) {
struct vnode *lvp;
if ((SCARG(uap, count) == auio.uio_resid) &&
(vp->v_op == union_vnodeop_p)) {
struct vnode *lvp;
- lvp = union_dircache(vp);
+ lvp = union_dircache(vp, p);
if (lvp != NULLVP) {
struct vattr va;
if (lvp != NULLVP) {
struct vattr va;
if (lvp != NULLVP) {
error = VOP_OPEN(lvp, FREAD, fp->f_cred, p);
if (lvp != NULLVP) {
error = VOP_OPEN(lvp, FREAD, fp->f_cred, p);
- VOP_UNLOCK(lvp, 0, p);
-
fp->f_data = (caddr_t) lvp;
fp->f_offset = 0;
error = vn_close(vp, FREAD, fp->f_cred, p);
fp->f_data = (caddr_t) lvp;
fp->f_offset = 0;
error = vn_close(vp, FREAD, fp->f_cred, p);
#ifdef UNION
{
extern int (**union_vnodeop_p)();
#ifdef UNION
{
extern int (**union_vnodeop_p)();
- extern struct vnode *union_dircache __P((struct vnode *));
+ extern struct vnode *union_dircache __P((struct vnode*, struct proc*));
if ((SCARG(uap, count) == auio.uio_resid) &&
(vp->v_op == union_vnodeop_p)) {
struct vnode *lvp;
if ((SCARG(uap, count) == auio.uio_resid) &&
(vp->v_op == union_vnodeop_p)) {
struct vnode *lvp;
- lvp = union_dircache(vp);
+ lvp = union_dircache(vp, p);
if (lvp != NULLVP) {
struct vattr va;
if (lvp != NULLVP) {
struct vattr va;
if (lvp != NULLVP) {
error = VOP_OPEN(lvp, FREAD, fp->f_cred, p);
if (lvp != NULLVP) {
error = VOP_OPEN(lvp, FREAD, fp->f_cred, p);
- VOP_UNLOCK(lvp, 0, p);
-
fp->f_data = (caddr_t) lvp;
fp->f_offset = 0;
error = vn_close(vp, FREAD, fp->f_cred, p);
fp->f_data = (caddr_t) lvp;
fp->f_offset = 0;
error = vn_close(vp, FREAD, fp->f_cred, p);