summaryrefslogtreecommitdiffstats
path: root/sys/kern/vfs_extattr.c
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2006-02-06 22:00:53 +0000
committerjhb <jhb@FreeBSD.org>2006-02-06 22:00:53 +0000
commit1f0c541bd133ce3b047f18de07fa40324097bfad (patch)
tree60940a8cbf854fd513f61ecd8b97e78328c20700 /sys/kern/vfs_extattr.c
parentdb29bc1e158dbd91e9a0fff0a9fa2b95d09f51c4 (diff)
downloadFreeBSD-src-1f0c541bd133ce3b047f18de07fa40324097bfad.zip
FreeBSD-src-1f0c541bd133ce3b047f18de07fa40324097bfad.tar.gz
Add a kern_eaccess() function and use it to implement xenix_eaccess()
rather than kern_access(). Suggested by: rwatson
Diffstat (limited to 'sys/kern/vfs_extattr.c')
-rw-r--r--sys/kern/vfs_extattr.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/sys/kern/vfs_extattr.c b/sys/kern/vfs_extattr.c
index dcd3696..f208deb 100644
--- a/sys/kern/vfs_extattr.c
+++ b/sys/kern/vfs_extattr.c
@@ -1915,18 +1915,24 @@ eaccess(td, uap)
int flags;
} */ *uap;
{
+
+ return (kern_eaccess(td, uap->path, UIO_USERSPACE, uap->flags));
+}
+
+int
+kern_eaccess(struct thread *td, char *path, enum uio_seg pathseg, int flags)
+{
struct nameidata nd;
struct vnode *vp;
int vfslocked;
int error;
- NDINIT(&nd, LOOKUP, FOLLOW | LOCKLEAF | MPSAFE, UIO_USERSPACE,
- uap->path, td);
+ NDINIT(&nd, LOOKUP, FOLLOW | LOCKLEAF | MPSAFE, pathseg, path, td);
if ((error = namei(&nd)) != 0)
return (error);
vp = nd.ni_vp;
vfslocked = NDHASGIANT(&nd);
- error = vn_access(vp, uap->flags, td->td_ucred, td);
+ error = vn_access(vp, flags, td->td_ucred, td);
NDFREE(&nd, NDF_ONLY_PNBUF);
vput(vp);
VFS_UNLOCK_GIANT(vfslocked);
OpenPOWER on IntegriCloud