diff options
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/uts/common/fs/tmpfs/tmp_vnops.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/usr/src/uts/common/fs/tmpfs/tmp_vnops.c b/usr/src/uts/common/fs/tmpfs/tmp_vnops.c index 82195e6742..a8eadfa6db 100644 --- a/usr/src/uts/common/fs/tmpfs/tmp_vnops.c +++ b/usr/src/uts/common/fs/tmpfs/tmp_vnops.c @@ -1103,10 +1103,8 @@ tmp_remove( rw_enter(&parent->tn_rwlock, RW_WRITER); rw_enter(&tp->tn_rwlock, RW_WRITER); - if (tp->tn_type != VDIR || - (error = secpolicy_fs_linkdir(cred, dvp->v_vfsp)) == 0) - error = tdirdelete(parent, tp, nm, tp->tn_type == VDIR ? - DR_RMDIR : DR_REMOVE, cred); + error = (tp->tn_type == VDIR) ? EPERM : + tdirdelete(parent, tp, nm, DR_REMOVE, cred); rw_exit(&tp->tn_rwlock); rw_exit(&parent->tn_rwlock); @@ -1141,8 +1139,7 @@ tmp_link( parent = (struct tmpnode *)VTOTN(dvp); from = (struct tmpnode *)VTOTN(srcvp); - if ((srcvp->v_type == VDIR && - secpolicy_fs_linkdir(cred, dvp->v_vfsp)) || + if (srcvp->v_type == VDIR || (from->tn_uid != crgetuid(cred) && secpolicy_basic_link(cred))) return (EPERM); |