X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/6d2010ae8f7a6078e10b361c6962983bab233e0f..bb59bff194111743b33cc36712410b5656329d3c:/libkern/OSKextLib.cpp diff --git a/libkern/OSKextLib.cpp b/libkern/OSKextLib.cpp index c782a830f..175704eec 100644 --- a/libkern/OSKextLib.cpp +++ b/libkern/OSKextLib.cpp @@ -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