Loading...
iokit/Kernel/IOBufferMemoryDescriptor.cpp xnu-8792.81.2 xnu-8796.101.5
--- xnu/xnu-8792.81.2/iokit/Kernel/IOBufferMemoryDescriptor.cpp
+++ xnu/xnu-8796.101.5/iokit/Kernel/IOBufferMemoryDescriptor.cpp
@@ -679,9 +679,12 @@
 	IOAddressRange * range     = _ranges.v64;
 	vm_offset_t      alignment = _alignment;
 	kalloc_heap_t    kheap     = KHEAP_DATA_BUFFERS;
+	vm_size_t        rsize;
 
 	if (alignment >= page_size) {
-		size = round_page(size);
+		if (!round_page_overflow(size, &rsize)) {
+			size = rsize;
+		}
 	}
 
 	if (reserved) {
@@ -694,7 +697,9 @@
 
 	if ((options & kIOMemoryPageable)
 	    || (kInternalFlagPageSized & internalFlags)) {
-		size = round_page(size);
+		if (!round_page_overflow(size, &rsize)) {
+			size = rsize;
+		}
 	}
 
 	if (internalFlags & kInternalFlagHasPointers) {