version 1.75, 2007/10/10 20:42:33 |
version 1.76, 2007/11/26 19:02:27 |
Line 213 ext2fs_open(void *v) |
|
Line 213 ext2fs_open(void *v) |
|
struct vnode *a_vp; |
struct vnode *a_vp; |
int a_mode; |
int a_mode; |
kauth_cred_t a_cred; |
kauth_cred_t a_cred; |
struct lwp *a_l; |
|
} */ *ap = v; |
} */ *ap = v; |
|
|
/* |
/* |
Line 232 ext2fs_access(void *v) |
|
Line 231 ext2fs_access(void *v) |
|
struct vnode *a_vp; |
struct vnode *a_vp; |
int a_mode; |
int a_mode; |
kauth_cred_t a_cred; |
kauth_cred_t a_cred; |
struct lwp *a_l; |
|
} */ *ap = v; |
} */ *ap = v; |
struct vnode *vp = ap->a_vp; |
struct vnode *vp = ap->a_vp; |
struct inode *ip = VTOI(vp); |
struct inode *ip = VTOI(vp); |
Line 272 ext2fs_getattr(void *v) |
|
Line 270 ext2fs_getattr(void *v) |
|
struct vnode *a_vp; |
struct vnode *a_vp; |
struct vattr *a_vap; |
struct vattr *a_vap; |
kauth_cred_t a_cred; |
kauth_cred_t a_cred; |
struct lwp *a_l; |
|
} */ *ap = v; |
} */ *ap = v; |
struct vnode *vp = ap->a_vp; |
struct vnode *vp = ap->a_vp; |
struct inode *ip = VTOI(vp); |
struct inode *ip = VTOI(vp); |
Line 327 ext2fs_setattr(void *v) |
|
Line 324 ext2fs_setattr(void *v) |
|
struct vnode *a_vp; |
struct vnode *a_vp; |
struct vattr *a_vap; |
struct vattr *a_vap; |
kauth_cred_t a_cred; |
kauth_cred_t a_cred; |
struct lwp *a_l; |
|
} */ *ap = v; |
} */ *ap = v; |
struct vattr *vap = ap->a_vap; |
struct vattr *vap = ap->a_vap; |
struct vnode *vp = ap->a_vp; |
struct vnode *vp = ap->a_vp; |
struct inode *ip = VTOI(vp); |
struct inode *ip = VTOI(vp); |
kauth_cred_t cred = ap->a_cred; |
kauth_cred_t cred = ap->a_cred; |
struct lwp *l = ap->a_l; |
struct lwp *l = curlwp; |
int error; |
int error; |
|
|
/* |
/* |
Line 416 ext2fs_setattr(void *v) |
|
Line 412 ext2fs_setattr(void *v) |
|
(error = kauth_authorize_generic(cred, KAUTH_GENERIC_ISSUSER, |
(error = kauth_authorize_generic(cred, KAUTH_GENERIC_ISSUSER, |
NULL)) && |
NULL)) && |
((vap->va_vaflags & VA_UTIMES_NULL) == 0 || |
((vap->va_vaflags & VA_UTIMES_NULL) == 0 || |
(error = VOP_ACCESS(vp, VWRITE, cred, l)))) |
(error = VOP_ACCESS(vp, VWRITE, cred)))) |
return (error); |
return (error); |
if (vap->va_atime.tv_sec != VNOVAL) |
if (vap->va_atime.tv_sec != VNOVAL) |
if (!(vp->v_mount->mnt_flag & MNT_NOATIME)) |
if (!(vp->v_mount->mnt_flag & MNT_NOATIME)) |
|
|
goto abortit; |
goto abortit; |
} |
} |
if ((ip->i_e2fs_mode & IFMT) == IFDIR) { |
if ((ip->i_e2fs_mode & IFMT) == IFDIR) { |
error = VOP_ACCESS(fvp, VWRITE, tcnp->cn_cred, tcnp->cn_lwp); |
error = VOP_ACCESS(fvp, VWRITE, tcnp->cn_cred); |
if (!error && tvp) |
if (!error && tvp) |
error = VOP_ACCESS(tvp, VWRITE, tcnp->cn_cred, |
error = VOP_ACCESS(tvp, VWRITE, tcnp->cn_cred); |
tcnp->cn_lwp); |
|
if (error) { |
if (error) { |
VOP_UNLOCK(fvp, 0); |
VOP_UNLOCK(fvp, 0); |
error = EACCES; |
error = EACCES; |
|
|
* to namei, as the parent directory is unlocked by the |
* to namei, as the parent directory is unlocked by the |
* call to checkpath(). |
* call to checkpath(). |
*/ |
*/ |
error = VOP_ACCESS(fvp, VWRITE, tcnp->cn_cred, tcnp->cn_lwp); |
error = VOP_ACCESS(fvp, VWRITE, tcnp->cn_cred); |
VOP_UNLOCK(fvp, 0); |
VOP_UNLOCK(fvp, 0); |
if (oldparent != dp->i_number) |
if (oldparent != dp->i_number) |
newparent = dp->i_number; |
newparent = dp->i_number; |
Line 1349 ext2fs_fsync(void *v) |
|
Line 1344 ext2fs_fsync(void *v) |
|
if (error == 0 && ap->a_flags & FSYNC_CACHE) { |
if (error == 0 && ap->a_flags & FSYNC_CACHE) { |
int l = 0; |
int l = 0; |
error = VOP_IOCTL(VTOI(vp)->i_devvp, DIOCCACHESYNC, &l, FWRITE, |
error = VOP_IOCTL(VTOI(vp)->i_devvp, DIOCCACHESYNC, &l, FWRITE, |
ap->a_l->l_cred, ap->a_l); |
curlwp->l_cred); |
} |
} |
|
|
return error; |
return error; |
Line 1494 ext2fs_reclaim(void *v) |
|
Line 1489 ext2fs_reclaim(void *v) |
|
struct inode *ip = VTOI(vp); |
struct inode *ip = VTOI(vp); |
int error; |
int error; |
|
|
if ((error = ufs_reclaim(vp, ap->a_l)) != 0) |
if ((error = ufs_reclaim(vp)) != 0) |
return (error); |
return (error); |
if (ip->i_din.e2fs_din != NULL) |
if (ip->i_din.e2fs_din != NULL) |
pool_put(&ext2fs_dinode_pool, ip->i_din.e2fs_din); |
pool_put(&ext2fs_dinode_pool, ip->i_din.e2fs_din); |