Lines Matching +full:data +full:- +full:path
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
4 * Copyright (c) 1999-2001 Robert N. M. Watson
24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
50 static int user_extattr_set_path(struct thread *td, const char *path,
51 int attrnamespace, const char *attrname, void *data,
53 static int user_extattr_get_path(struct thread *td, const char *path,
54 int attrnamespace, const char *attrname, void *data,
56 static int user_extattr_delete_path(struct thread *td, const char *path,
58 static int user_extattr_list_path(struct thread *td, const char *path,
59 int attrnamespace, void *data, size_t nbytes, int follow);
63 * Accepts a path, which it converts to a mountpoint, as well as a command
64 * (int cmd), and attribute name and misc data.
70 const char *path; member
86 AUDIT_ARG_CMD(uap->cmd); in sys_extattrctl()
87 AUDIT_ARG_VALUE(uap->attrnamespace); in sys_extattrctl()
89 * uap->attrname is not always defined. We check again later when we in sys_extattrctl()
92 if (uap->attrname != NULL) { in sys_extattrctl()
93 error = copyinstr(uap->attrname, attrname, sizeof(attrname), in sys_extattrctl()
102 if (uap->filename != NULL) { in sys_extattrctl()
104 uap->filename); in sys_extattrctl()
112 /* uap->path is always defined. */ in sys_extattrctl()
114 uap->path); in sys_extattrctl()
118 mp = nd.ni_vp->v_mount; in sys_extattrctl()
134 * uap->filename is not always defined. If it is, in sys_extattrctl()
145 error = VFS_EXTATTRCTL(mp, uap->cmd, filename_vp, uap->attrnamespace, in sys_extattrctl()
146 uap->attrname != NULL ? attrname : NULL); in sys_extattrctl()
154 * VFS_EXTATTRCTL will have unlocked, but not de-ref'd, filename_vp, in sys_extattrctl()
162 /*-
167 * pointer "data", buffer length "nbytes", thread "td".
174 void *data, size_t nbytes, struct thread *td) in extattr_set_vp() argument
190 aiov.iov_base = data; in extattr_set_vp()
202 error = mac_vnode_check_setextattr(td->td_ucred, vp, attrnamespace, in extattr_set_vp()
209 td->td_ucred, td); in extattr_set_vp()
210 cnt -= auio.uio_resid; in extattr_set_vp()
211 td->td_retval[0] = cnt; in extattr_set_vp()
226 void *data; member
236 error = copyinstr(uap->attrname, attrname, sizeof(attrname), NULL); in sys_extattr_set_fd()
239 return (kern_extattr_set_fd(td, uap->fd, uap->attrnamespace, in sys_extattr_set_fd()
240 attrname, uap->data, uap->nbytes)); in sys_extattr_set_fd()
245 const char *attrname, void *data, size_t nbytes) in kern_extattr_set_fd() argument
260 error = extattr_set_vp(fp->f_vnode, attrnamespace, in kern_extattr_set_fd()
261 attrname, data, nbytes, td); in kern_extattr_set_fd()
269 const char *path; member
272 void *data; member
280 return (user_extattr_set_path(td, uap->path, uap->attrnamespace, in sys_extattr_set_file()
281 uap->attrname, uap->data, uap->nbytes, FOLLOW)); in sys_extattr_set_file()
286 const char *path; member
289 void *data; member
297 return (user_extattr_set_path(td, uap->path, uap->attrnamespace, in sys_extattr_set_link()
298 uap->attrname, uap->data, uap->nbytes, NOFOLLOW)); in sys_extattr_set_link()
302 user_extattr_set_path(struct thread *td, const char *path, int attrnamespace, in user_extattr_set_path() argument
303 const char *uattrname, void *data, size_t nbytes, int follow) in user_extattr_set_path() argument
311 return (kern_extattr_set_path(td, path, attrnamespace, in user_extattr_set_path()
312 attrname, data, nbytes, follow, UIO_USERSPACE)); in user_extattr_set_path()
316 kern_extattr_set_path(struct thread *td, const char *path, int attrnamespace, in kern_extattr_set_path() argument
317 const char *attrname, void *data, size_t nbytes, int follow, in kern_extattr_set_path() argument
326 NDINIT(&nd, LOOKUP, follow | AUDITVNODE1, pathseg, path); in kern_extattr_set_path()
332 error = extattr_set_vp(nd.ni_vp, attrnamespace, attrname, data, in kern_extattr_set_path()
339 /*-
344 * pointer "data", buffer length "nbytes", thread "td".
351 void *data, size_t nbytes, struct thread *td) in extattr_get_vp() argument
365 * Slightly unusual semantics: if the user provides a NULL data in extattr_get_vp()
366 * pointer, they don't want to receive the data, just the maximum in extattr_get_vp()
372 if (data != NULL) { in extattr_get_vp()
373 aiov.iov_base = data; in extattr_get_vp()
388 error = mac_vnode_check_getextattr(td->td_ucred, vp, attrnamespace, in extattr_get_vp()
395 td->td_ucred, td); in extattr_get_vp()
398 cnt -= auio.uio_resid; in extattr_get_vp()
399 td->td_retval[0] = cnt; in extattr_get_vp()
401 td->td_retval[0] = size; in extattr_get_vp()
414 void *data; member
424 error = copyinstr(uap->attrname, attrname, sizeof(attrname), NULL); in sys_extattr_get_fd()
427 return (kern_extattr_get_fd(td, uap->fd, uap->attrnamespace, in sys_extattr_get_fd()
428 attrname, uap->data, uap->nbytes)); in sys_extattr_get_fd()
433 const char *attrname, void *data, size_t nbytes) in kern_extattr_get_fd() argument
448 error = extattr_get_vp(fp->f_vnode, attrnamespace, in kern_extattr_get_fd()
449 attrname, data, nbytes, td); in kern_extattr_get_fd()
457 const char *path; member
460 void *data; member
467 return (user_extattr_get_path(td, uap->path, uap->attrnamespace, in sys_extattr_get_file()
468 uap->attrname, uap->data, uap->nbytes, FOLLOW)); in sys_extattr_get_file()
473 const char *path; member
476 void *data; member
483 return (user_extattr_get_path(td, uap->path, uap->attrnamespace, in sys_extattr_get_link()
484 uap->attrname, uap->data, uap->nbytes, NOFOLLOW)); in sys_extattr_get_link()
488 user_extattr_get_path(struct thread *td, const char *path, int attrnamespace, in user_extattr_get_path() argument
489 const char *uattrname, void *data, size_t nbytes, int follow) in user_extattr_get_path() argument
497 return (kern_extattr_get_path(td, path, attrnamespace, in user_extattr_get_path()
498 attrname, data, nbytes, follow, UIO_USERSPACE)); in user_extattr_get_path()
502 kern_extattr_get_path(struct thread *td, const char *path, int attrnamespace, in kern_extattr_get_path() argument
503 const char *attrname, void *data, size_t nbytes, int follow, in kern_extattr_get_path() argument
512 NDINIT(&nd, LOOKUP, follow | AUDITVNODE1, pathseg, path); in kern_extattr_get_path()
518 error = extattr_get_vp(nd.ni_vp, attrnamespace, attrname, data, in kern_extattr_get_path()
548 error = mac_vnode_check_deleteextattr(td->td_ucred, vp, attrnamespace, in extattr_delete_vp()
554 error = VOP_DELETEEXTATTR(vp, attrnamespace, attrname, td->td_ucred, in extattr_delete_vp()
558 td->td_ucred, td); in extattr_delete_vp()
580 error = copyinstr(uap->attrname, attrname, sizeof(attrname), NULL); in sys_extattr_delete_fd()
583 return (kern_extattr_delete_fd(td, uap->fd, uap->attrnamespace, in sys_extattr_delete_fd()
604 error = extattr_delete_vp(fp->f_vnode, attrnamespace, in kern_extattr_delete_fd()
612 const char *path; member
621 return (user_extattr_delete_path(td, uap->path, uap->attrnamespace, in sys_extattr_delete_file()
622 uap->attrname, FOLLOW)); in sys_extattr_delete_file()
627 const char *path; member
636 return (user_extattr_delete_path(td, uap->path, uap->attrnamespace, in sys_extattr_delete_link()
637 uap->attrname, NOFOLLOW)); in sys_extattr_delete_link()
641 user_extattr_delete_path(struct thread *td, const char *path, int attrnamespace, in user_extattr_delete_path() argument
650 return (kern_extattr_delete_path(td, path, attrnamespace, in user_extattr_delete_path()
655 kern_extattr_delete_path(struct thread *td, const char *path, int attrnamespace, in kern_extattr_delete_path() argument
664 NDINIT(&nd, LOOKUP, follow | AUDITVNODE1, pathseg, path); in kern_extattr_delete_path()
675 /*-
679 * userspace buffer pointer "data", buffer length "nbytes",
696 if (auiop->uio_resid > IOSIZE_MAX) in extattr_list_vp()
698 cnt = auiop->uio_resid; in extattr_list_vp()
705 error = mac_vnode_check_listextattr(td->td_ucred, vp, attrnamespace); in extattr_list_vp()
713 td->td_ucred, td); in extattr_list_vp()
717 cnt -= auiop->uio_resid; in extattr_list_vp()
718 td->td_retval[0] = cnt; in extattr_list_vp()
720 td->td_retval[0] = size; in extattr_list_vp()
728 void *data; member
738 if (uap->data != NULL) { in sys_extattr_list_fd()
739 aiov.iov_base = uap->data; in sys_extattr_list_fd()
740 aiov.iov_len = uap->nbytes; in sys_extattr_list_fd()
744 auio.uio_resid = uap->nbytes; in sys_extattr_list_fd()
752 return (kern_extattr_list_fd(td, uap->fd, uap->attrnamespace, in sys_extattr_list_fd()
771 error = extattr_list_vp(fp->f_vnode, attrnamespace, auiop, td); in kern_extattr_list_fd()
779 const char *path; member
781 void *data; member
789 return (user_extattr_list_path(td, uap->path, uap->attrnamespace, in sys_extattr_list_file()
790 uap->data, uap->nbytes, FOLLOW)); in sys_extattr_list_file()
795 const char *path; member
797 void *data; member
805 return (user_extattr_list_path(td, uap->path, uap->attrnamespace, in sys_extattr_list_link()
806 uap->data, uap->nbytes, NOFOLLOW)); in sys_extattr_list_link()
810 user_extattr_list_path(struct thread *td, const char *path, int attrnamespace, in user_extattr_list_path() argument
811 void *data, size_t nbytes, int follow) in user_extattr_list_path() argument
816 if (data != NULL) { in user_extattr_list_path()
817 aiov.iov_base = data; in user_extattr_list_path()
830 return (kern_extattr_list_path(td, path, attrnamespace, in user_extattr_list_path()
835 kern_extattr_list_path(struct thread *td, const char *path, int attrnamespace, in kern_extattr_list_path() argument
842 NDINIT(&nd, LOOKUP, follow | AUDITVNODE1, pathseg, path); in kern_extattr_list_path()