int32_t v_kusecount; /* count of in-kernel refs */
int32_t v_usecount; /* reference count of users */
int32_t v_iocount; /* iocounters */
- void * v_owner; /* act that owns the vnode */
+ void * XNU_PTRAUTH_SIGNED_PTR("vnode.v_owner") v_owner; /* act that owns the vnode */
uint16_t v_type; /* vnode type */
uint16_t v_tag; /* type of underlying data */
uint32_t v_id; /* identity of vnode contents */
union {
- struct mount *vu_mountedhere;/* ptr to mounted vfs (VDIR) */
- struct socket *vu_socket; /* unix ipc (VSOCK) */
- struct specinfo *vu_specinfo; /* device (VCHR, VBLK) */
- struct fifoinfo *vu_fifoinfo; /* fifo (VFIFO) */
- struct ubc_info *vu_ubcinfo; /* valid for (VREG) */
+ struct mount * XNU_PTRAUTH_SIGNED_PTR("vnode.v_data") vu_mountedhere; /* ptr to mounted vfs (VDIR) */
+ struct socket * XNU_PTRAUTH_SIGNED_PTR("vnode.vu_socket") vu_socket; /* unix ipc (VSOCK) */
+ struct specinfo * XNU_PTRAUTH_SIGNED_PTR("vnode.vu_specinfo") vu_specinfo; /* device (VCHR, VBLK) */
+ struct fifoinfo * XNU_PTRAUTH_SIGNED_PTR("vnode.vu_fifoinfo") vu_fifoinfo; /* fifo (VFIFO) */
+ struct ubc_info * XNU_PTRAUTH_SIGNED_PTR("vnode.vu_ubcinfo") vu_ubcinfo; /* valid for (VREG) */
} v_un;
struct buflists v_cleanblkhd; /* clean blocklist head */
struct buflists v_dirtyblkhd; /* dirty blocklist head */
* by the name_cache_lock held in
* excluive mode
*/
- kauth_cred_t v_cred; /* last authorized credential */
+ kauth_cred_t XNU_PTRAUTH_SIGNED_PTR("vnode.v_cred") v_cred; /* last authorized credential */
kauth_action_t v_authorized_actions; /* current authorized actions for v_cred */
int v_cred_timestamp; /* determine if entry is stale for MNTK_AUTH_OPAQUE */
int v_nc_generation; /* changes when nodes are removed from the name cache */
int32_t v_numoutput; /* num of writes in progress */
int32_t v_writecount; /* reference count of writers */
const char *v_name; /* name component of the vnode */
- vnode_t v_parent; /* pointer to parent vnode */
+ vnode_t XNU_PTRAUTH_SIGNED_PTR("vnode.v_parent") v_parent; /* pointer to parent vnode */
struct lockf *v_lockf; /* advisory lock list head */
int(**v_op)(void *); /* vnode operations vector */
- mount_t v_mount; /* ptr to vfs we are in */
+ mount_t XNU_PTRAUTH_SIGNED_PTR("vnode.v_mount") v_mount; /* ptr to vfs we are in */
void * v_data; /* private data for fs */
#if CONFIG_MACF
struct label *v_label; /* MAC security label */
uint32_t flags, vfs_context_t ctx, void *reserved);
/* End of authorization subroutines */
+void vnode_attr_handle_mnt_ignore_ownership(struct vnode_attr *vap, mount_t mp, vfs_context_t ctx);
+
#define VN_CREATE_NOAUTH (1<<0)
#define VN_CREATE_NOINHERIT (1<<1)
#define VN_CREATE_UNION (1<<2)
void vnode_rele_internal(vnode_t, int, int, int);
#ifdef BSD_KERNEL_PRIVATE
int vnode_getalways(vnode_t);
+int vnode_getalways_from_pager(vnode_t);
int vget_internal(vnode_t, int, int);
errno_t vnode_getiocount(vnode_t, unsigned int, int);
#endif /* BSD_KERNEL_PRIVATE */
int vnode_get_locked(vnode_t);
int vnode_put_locked(vnode_t);
+#ifdef BSD_KERNEL_PRIVATE
+int vnode_put_from_pager(vnode_t);
+#endif /* BSD_KERNEL_PRIVATE */
int vnode_issock(vnode_t);
int vnode_isaliased(vnode_t);
void vfs_nested_trigger_unmounts(mount_t, int, vfs_context_t);
#endif /* CONFIG_TRIGGERS */
-int build_path_with_parent(vnode_t, vnode_t /* parent */, char *, int, int *, int, vfs_context_t);
+int build_path_with_parent(vnode_t, vnode_t /* parent */, char *, int, int *, size_t *, int, vfs_context_t);
void nspace_resolver_init(void);
void nspace_resolver_exited(struct proc *);
int vnode_materialize_dataless_file(vnode_t, uint64_t);
+int vnode_isinuse_locked(vnode_t, int, int );
+
#endif /* BSD_KERNEL_PRIVATE */
+extern bool rootvp_is_ssd;
+
#endif /* !_SYS_VNODE_INTERNAL_H_ */