/*
- * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
char *a_target;
} */
{
- struct componentname * cnp = ap->a_cnp;
+ struct componentname * cnp = ap->a_cnp;
struct vnode *vp = NULL;
int error = 0;
devnode_t * dir_p;
goto failure;
vp = *vpp;
vput(vp);
- failure:
- if ((cnp->cn_flags & SAVESTART) == 0)
- FREE_ZONE(cnp->cn_pnbuf, cnp->cn_pnlen, M_NAMEI);
+failure:
+ if ((cnp->cn_flags & SAVESTART) == 0) {
+ char *tmp = cnp->cn_pnbuf;
+ cnp->cn_pnbuf = NULL;
+ cnp->cn_flags &= ~HASBUF;
+ FREE_ZONE(tmp, cnp->cn_pnlen, M_NAMEI);
+ }
vput(ap->a_dvp);
return error;
}
dev_p->dn_uid = cnp->cn_cred->cr_uid;
dev_p->dn_gid = dir_p->dn_gid;
dev_p->dn_mode = vap->va_mode;
- failure:
+failure:
if (*vpp) {
vput(*vpp);
*vpp = 0;
}
- if ((cnp->cn_flags & SAVESTART) == 0)
- FREE_ZONE(cnp->cn_pnbuf, cnp->cn_pnlen, M_NAMEI);
+ if ((cnp->cn_flags & SAVESTART) == 0) {
+ char *tmp = cnp->cn_pnbuf;
+ cnp->cn_pnbuf = NULL;
+ cnp->cn_flags &= ~HASBUF;
+ FREE_ZONE(tmp, cnp->cn_pnlen, M_NAMEI);
+ }
vput(dvp);
return (error);
}
return error;
}
-static int
-devfs_abortop(struct vop_abortop_args *ap)
- /*struct vop_abortop_args {
- struct vnode *a_dvp;
- struct componentname *a_cnp;
- } */
-{
- if ((ap->a_cnp->cn_flags & (HASBUF | SAVESTART)) == HASBUF) {
- FREE_ZONE(ap->a_cnp->cn_pnbuf, ap->a_cnp->cn_pnlen, M_NAMEI);
- }
- return 0;
-}
-
-
static int
devfs_reclaim(struct vop_reclaim_args *ap)
/*struct vop_reclaim_args {
{ &vop_symlink_desc, (VOPFUNC)devfs_symlink }, /* symlink */
{ &vop_readdir_desc, (VOPFUNC)devfs_readdir }, /* readdir */
{ &vop_readlink_desc, (VOPFUNC)devfs_readlink }, /* readlink */
- { &vop_abortop_desc, (VOPFUNC)devfs_abortop }, /* abortop */
+ { &vop_abortop_desc, (VOPFUNC)nop_abortop }, /* abortop */
{ &vop_inactive_desc, (VOPFUNC)devfs_inactive }, /* inactive */
{ &vop_reclaim_desc, (VOPFUNC)devfs_reclaim }, /* reclaim */
{ &vop_lock_desc, (VOPFUNC)nop_lock }, /* lock */