/*
- * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
- * The contents of this file constitute Original Code as defined in and
- * are subject to the Apple Public Source License Version 1.1 (the
- * "License"). You may not use this file except in compliance with the
- * License. Please obtain a copy of the License at
- * http://www.apple.com/publicsource and read it before using this file.
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
*
- * This Original Code and all software distributed under the License are
- * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
- * License for the specific language governing rights and limitations
- * under the License.
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
*
* @APPLE_LICENSE_HEADER_END@
*/
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 */