/* * udf_gro_remove_check_permitted: check whether a remove is permitted given * our credentials. */ static int udf_gro_remove_check_permitted(struct mount *mp, kauth_cred_t cred, struct vnode *dvp, struct vnode *vp) { struct udf_node *dir_node = VTOI(dvp); struct udf_node *udf_node = VTOI(vp); mode_t dmode; uid_t duid, uid; gid_t gdummy; (void)mp; KASSERT(mp != NULL); KASSERT(dvp != NULL); KASSERT(vp != NULL); KASSERT(dvp != vp); KASSERT(dvp->v_type == VDIR); KASSERT(vp->v_type != VDIR); KASSERT(dvp->v_mount == mp); KASSERT(vp->v_mount == mp); KASSERT(VOP_ISLOCKED(dvp) == LK_EXCLUSIVE); KASSERT(VOP_ISLOCKED(vp) == LK_EXCLUSIVE); DPRINTF(CALL, ("udf_gro_remove_check_permitted called\n")); dmode = udf_getaccessmode(dir_node); udf_getownership(dir_node, &duid, &gdummy); udf_getownership(udf_node, &uid, &gdummy); return genfs_ufslike_remove_check_permitted(cred, dvp, dmode, duid, vp, uid); }
/* * ulfs_gro_remove_check_permitted: Check whether a remove is permitted * given our credentials. */ static int ulfs_gro_remove_check_permitted(struct mount *mp, kauth_cred_t cred, struct vnode *dvp, struct vnode *vp) { (void)mp; KASSERT(mp != NULL); KASSERT(dvp != NULL); KASSERT(vp != NULL); KASSERT(dvp != vp); KASSERT(dvp->v_type == VDIR); KASSERT(vp->v_type != VDIR); KASSERT(dvp->v_mount == mp); KASSERT(vp->v_mount == mp); KASSERT(VOP_ISLOCKED(dvp) == LK_EXCLUSIVE); KASSERT(VOP_ISLOCKED(vp) == LK_EXCLUSIVE); return genfs_ufslike_remove_check_permitted(cred, dvp, VTOI(dvp)->i_mode, VTOI(dvp)->i_uid, vp, VTOI(vp)->i_uid); }