X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/39236c6e673c41db228275375ab7fdb0f837b292..cc8bc92ae4a8e9f1a1ab61bf83d34ad8150b3405:/osfmk/kern/kext_alloc.c diff --git a/osfmk/kern/kext_alloc.c b/osfmk/kern/kext_alloc.c index 336e58d07..479d114e3 100644 --- a/osfmk/kern/kext_alloc.c +++ b/osfmk/kern/kext_alloc.c @@ -38,6 +38,7 @@ #include #include +#include #define KASLR_IOREG_DEBUG 0 @@ -104,6 +105,7 @@ kext_alloc_init(void) rval = kmem_suballoc(kernel_map, (vm_offset_t *) &kext_alloc_base, kext_alloc_size, /* pageable */ TRUE, VM_FLAGS_FIXED|VM_FLAGS_OVERWRITE, + VM_MAP_KERNEL_FLAGS_NONE, VM_KERN_MEMORY_KEXT, &g_kext_map); if (rval != KERN_SUCCESS) { panic("kext_alloc_init: kmem_suballoc failed 0x%x\n", rval); @@ -149,11 +151,12 @@ kext_alloc(vm_offset_t *_addr, vm_size_t size, boolean_t fixed) * fixed (post boot) kext allocations to start looking for free space * just past where prelinked kexts have loaded. */ - rval = mach_vm_map(g_kext_map, + rval = mach_vm_map_kernel(g_kext_map, &addr, size, 0, flags, + VM_KERN_MEMORY_KEXT, MACH_PORT_NULL, 0, TRUE, @@ -165,7 +168,7 @@ kext_alloc(vm_offset_t *_addr, vm_size_t size, boolean_t fixed) goto finish; } #else - rval = mach_vm_allocate(g_kext_map, &addr, size, flags); + rval = mach_vm_allocate_kernel(g_kext_map, &addr, size, flags, VM_KERN_MEMORY_KEXT); if (rval != KERN_SUCCESS) { printf("vm_allocate failed - %d\n", rval); goto finish; @@ -181,6 +184,9 @@ kext_alloc(vm_offset_t *_addr, vm_size_t size, boolean_t fixed) *_addr = (vm_offset_t)addr; rval = KERN_SUCCESS; +#if KASAN + kasan_notify_address(addr, size); +#endif finish: return rval;