]> git.saurik.com Git - apple/xnu.git/blobdiff - libkern/c++/OSData.cpp
xnu-4570.1.46.tar.gz
[apple/xnu.git] / libkern / c++ / OSData.cpp
index 6e17f6c41fe3a7b24369f0e5d66a6a4482086bd2..fda3dd7c9c3f1a84880f97fae580d60d8a93aafa 100644 (file)
@@ -76,8 +76,8 @@ bool OSData::initWithCapacity(unsigned int inCapacity)
        if (inCapacity < page_size) data = (void *) kalloc_container(inCapacity);
        else {
            kern_return_t kr;
-           inCapacity = round_page_32(inCapacity);
-           kr = kmem_alloc(kernel_map, (vm_offset_t *)&data, inCapacity, IOMemoryTag(kernel_map));
+           if (round_page_overflow(inCapacity, &inCapacity)) kr = KERN_RESOURCE_SHORTAGE;
+           else kr = kmem_alloc(kernel_map, (vm_offset_t *)&data, inCapacity, IOMemoryTag(kernel_map));
            if (KERN_SUCCESS != kr) data = NULL;
        }
         if (!data)
@@ -496,3 +496,8 @@ void OSData::setSerializable(bool serializable)
     }
     reserved->disableSerialization = (!serializable);
 }
+
+bool OSData::isSerializable(void)
+{
+    return (!reserved || !reserved->disableSerialization);
+}