]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/vfs/vfs_xattr.c
xnu-3789.31.2.tar.gz
[apple/xnu.git] / bsd / vfs / vfs_xattr.c
index a6fc322516fa6c90aad8207682a2de7f14c242d5..bd38c5f51050b00fb4e32b584fb117a5cd830214 100644 (file)
@@ -254,9 +254,11 @@ vn_setxattr(vnode_t vp, const char *name, uio_t uio, int options, vfs_context_t
                error = default_setxattr(vp, name, uio, options, context);
        }
 #if CONFIG_MACF
-       if ((error == 0) && !(options & XATTR_NOSECURITY) &&
-           (vfs_flags(vnode_mount(vp)) & MNT_MULTILABEL))
-               mac_vnode_label_update_extattr(vnode_mount(vp), vp, name);
+       if ((error == 0) && !(options & XATTR_NOSECURITY)) {
+               mac_vnode_notify_setextattr(context, vp, name, uio);
+               if (vfs_flags(vnode_mount(vp)) & MNT_MULTILABEL)
+                       mac_vnode_label_update_extattr(vnode_mount(vp), vp, name);
+       }
 #endif
 out:
        return (error);
@@ -313,9 +315,11 @@ vn_removexattr(vnode_t vp, const char * name, int options, vfs_context_t context
 #endif /* DUAL_EAS */
        }
 #if CONFIG_MACF
-       if ((error == 0) && !(options & XATTR_NOSECURITY) &&
-           (vfs_flags(vnode_mount(vp)) & MNT_MULTILABEL))
-               mac_vnode_label_update_extattr(vnode_mount(vp), vp, name);
+       if ((error == 0) && !(options & XATTR_NOSECURITY)) {
+               mac_vnode_notify_deleteextattr(context, vp, name);
+               if (vfs_flags(vnode_mount(vp)) & MNT_MULTILABEL)
+                       mac_vnode_label_update_extattr(vnode_mount(vp), vp, name);
+       }
 #endif
 out:
        return (error);
@@ -598,7 +602,7 @@ vnode_flushnamedstream(vnode_t vp, vnode_t svp, vfs_context_t context)
        }
 
        iosize = bufsize = MIN(datasize, NS_IOBUFSIZE);
-       if (kmem_alloc(kernel_map, (vm_offset_t *)&bufptr, bufsize)) {
+       if (kmem_alloc(kernel_map, (vm_offset_t *)&bufptr, bufsize, VM_KERN_MEMORY_FILE)) {
                return (ENOMEM);
        }
        auio = uio_create(1, 0, UIO_SYSSPACE, UIO_READ);
@@ -941,7 +945,7 @@ retry:
                size_t  iosize;
 
                iosize = bufsize = MIN(datasize, NS_IOBUFSIZE);
-               if (kmem_alloc(kernel_map, (vm_offset_t *)&bufptr, bufsize)) {
+               if (kmem_alloc(kernel_map, (vm_offset_t *)&bufptr, bufsize, VM_KERN_MEMORY_FILE)) {
                        error = ENOMEM;
                        goto out;
                }
@@ -3215,7 +3219,7 @@ shift_data_down(vnode_t xvp, off_t start, size_t len, off_t delta, vfs_context_t
        }
        orig_chunk = chunk;
 
-       if (kmem_alloc(kernel_map, (vm_offset_t *)&buff, chunk)) {
+       if (kmem_alloc(kernel_map, (vm_offset_t *)&buff, chunk, VM_KERN_MEMORY_FILE)) {
                return ENOMEM;
        }
 
@@ -3270,7 +3274,7 @@ shift_data_up(vnode_t xvp, off_t start, size_t len, off_t delta, vfs_context_t c
        orig_chunk = chunk;
        end = start + len;
 
-       if (kmem_alloc(kernel_map, (vm_offset_t *)&buff, chunk)) {
+       if (kmem_alloc(kernel_map, (vm_offset_t *)&buff, chunk, VM_KERN_MEMORY_FILE)) {
                return ENOMEM;
        }