X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/8f6c56a50524aa785f7e596d52dddfb331e18961..cc8bc92ae4a8e9f1a1ab61bf83d34ad8150b3405:/osfmk/i386/io_map.c diff --git a/osfmk/i386/io_map.c b/osfmk/i386/io_map.c index 0c27621c6..012d4117f 100644 --- a/osfmk/i386/io_map.c +++ b/osfmk/i386/io_map.c @@ -61,6 +61,7 @@ #include #include #include +#include extern vm_offset_t virtual_avail; @@ -69,9 +70,7 @@ extern vm_offset_t virtual_avail; * Mach VM is running. */ vm_offset_t -io_map(phys_addr, size) - vm_offset_t phys_addr; - vm_size_t size; +io_map(vm_map_offset_t phys_addr, vm_size_t size, unsigned int flags) { vm_offset_t start; @@ -82,20 +81,25 @@ io_map(phys_addr, size) start = virtual_avail; virtual_avail += round_page(size); +#if KASAN + kasan_notify_address(start, size); +#endif (void) pmap_map_bd(start, phys_addr, phys_addr + round_page(size), - VM_PROT_READ|VM_PROT_WRITE); + VM_PROT_READ|VM_PROT_WRITE, + flags); } else { - (void) kmem_alloc_pageable(kernel_map, &start, round_page(size)); + (void) kmem_alloc_pageable(kernel_map, &start, round_page(size), VM_KERN_MEMORY_IOKIT); (void) pmap_map(start, phys_addr, phys_addr + round_page(size), - VM_PROT_READ|VM_PROT_WRITE); + VM_PROT_READ|VM_PROT_WRITE, + flags); } return (start); } /* just wrap this since io_map handles it */ -vm_offset_t io_map_spec(vm_offset_t phys_addr, vm_size_t size) +vm_offset_t io_map_spec(vm_map_offset_t phys_addr, vm_size_t size, unsigned int flags) { - return (io_map(phys_addr, size)); + return (io_map(phys_addr, size, flags)); }