diff options
author | rwatson <rwatson@FreeBSD.org> | 2002-10-05 18:40:10 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2002-10-05 18:40:10 +0000 |
commit | 7b150b70c23f2e2e32cfee0646005b13ef1a75be (patch) | |
tree | 6ab685df96169b084c81758fa864ba83a468cb49 /sys/fs/devfs/devfs_vnops.c | |
parent | 5846242df8bb35367b2f07511b465656800fa74a (diff) | |
download | FreeBSD-src-7b150b70c23f2e2e32cfee0646005b13ef1a75be.zip FreeBSD-src-7b150b70c23f2e2e32cfee0646005b13ef1a75be.tar.gz |
Integrate a devfs/MAC fix from the MAC tree: avoid a race condition during
devfs VOP symlink creation by introducing a new entry point to determine
the label of the devfs_dirent prior to allocation of a vnode for the
symlink.
Obtained from: TrustedBSD Project
Sponsored by: DARPA, Network Associates Laboratories
Diffstat (limited to 'sys/fs/devfs/devfs_vnops.c')
-rw-r--r-- | sys/fs/devfs/devfs_vnops.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/sys/fs/devfs/devfs_vnops.c b/sys/fs/devfs/devfs_vnops.c index da09f0d..5f7775c 100644 --- a/sys/fs/devfs/devfs_vnops.c +++ b/sys/fs/devfs/devfs_vnops.c @@ -868,12 +868,11 @@ devfs_symlink(ap) MALLOC(de->de_symlink, char *, i, M_DEVFS, M_WAITOK); bcopy(ap->a_target, de->de_symlink, i); lockmgr(&dmp->dm_lock, LK_EXCLUSIVE, 0, curthread); +#ifdef MAC + mac_create_devfs_symlink(ap->a_cnp->cn_cred, dd, de); +#endif TAILQ_INSERT_TAIL(&dd->de_dlist, de, de_list); devfs_allocv(de, ap->a_dvp->v_mount, ap->a_vpp, 0); -#ifdef MAC - mac_create_vnode(ap->a_cnp->cn_cred, ap->a_dvp, *ap->a_vpp); - mac_update_devfsdirent(de, *ap->a_vpp); -#endif /* MAC */ lockmgr(&dmp->dm_lock, LK_RELEASE, 0, curthread); return (0); } |