]> git.saurik.com Git - apple/xnu.git/blobdiff - libkern/OSKextLib.cpp
xnu-2782.30.5.tar.gz
[apple/xnu.git] / libkern / OSKextLib.cpp
index c782a830fd4e7454476829ba782bcbc4755afe53..175704eecdb20b780dbbd62235adf5cf8b084f64 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008 Apple Inc. All rights reserved.
+ * Copyright (c) 2008-2012 Apple Inc. All rights reserved.
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  * 
@@ -339,10 +339,12 @@ finish:
         (void)vm_deallocate(kernel_map, (vm_offset_t)request, requestLengthIn);
     }
     if (response) {
-        kmem_free(kernel_map, (vm_offset_t)response, responseLength);
+        /* 11981737 - clear uninitialized data in last page */
+        kmem_free(kernel_map, (vm_offset_t)response, round_page(responseLength));
     }
     if (logData) {
-        kmem_free(kernel_map, (vm_offset_t)logData, logDataLength);
+        /* 11981737 - clear uninitialized data in last page */
+        kmem_free(kernel_map, (vm_offset_t)logData, round_page(logDataLength));
     }
 
     return result;
@@ -351,8 +353,8 @@ finish:
 /*********************************************************************
 * Gets the vm_map for the current kext
 *********************************************************************/
-extern vm_offset_t sectPRELINKB;
-extern int sectSizePRELINK;
+extern vm_offset_t segPRELINKB;
+extern unsigned long segSizePRELINK;
 extern int kth_started;
 extern vm_map_t g_kext_map;
 
@@ -362,8 +364,8 @@ kext_get_vm_map(kmod_info_t *info)
     vm_map_t kext_map = NULL;
 
     /* Set the vm map */
-    if ((info->address >= sectPRELINKB) && 
-            (info->address < (sectPRELINKB + sectSizePRELINK)))
+    if ((info->address >= segPRELINKB) && 
+            (info->address < (segPRELINKB + segSizePRELINK)))
     {
         kext_map = kernel_map;
     } else {
@@ -439,34 +441,26 @@ kmod_panic_dump(vm_offset_t * addr, unsigned int cnt)
     extern int kdb_printf(const char *format, ...) __printflike(1,2);
 
     OSKext::printKextsInBacktrace(addr, cnt, &kdb_printf,
-        /* takeLock? */ false);
+        /* takeLock? */ false, false);
     return;
 }
 
 /********************************************************************/
-void kmod_dump_log(vm_offset_t *addr, unsigned int cnt);
+void kmod_dump_log(vm_offset_t *addr, unsigned int cnt, boolean_t doUnslide);
 
 void
 kmod_dump_log(
     vm_offset_t * addr,
-    unsigned int cnt)
+    unsigned int cnt,
+    boolean_t doUnslide)
 {
-    OSKext::printKextsInBacktrace(addr, cnt, &printf, /* lock? */ true);
+    OSKext::printKextsInBacktrace(addr, cnt, &printf, /* lock? */ true, doUnslide);
 }
 
 /*********************************************************************
 * Compatibility implementation for kmod_get_info() host_priv routine.
 * Only supported on old 32-bit architectures.
 *********************************************************************/
-#if __i386__
-kern_return_t
-kext_get_kmod_info(
-    kmod_info_array_t      * kmod_list,
-    mach_msg_type_number_t * kmodCount)
-{
-    return OSKext::getKmodInfo(kmod_list, kmodCount);
-}
-#endif /* __i386__ */
 
 #if PRAGMA_MARK
 #pragma mark Loaded Kext Summary