// Tries to free all resources and also passes through any errors // // args: the error arg will be overwritten with KERN_FAILURE in case of an error // or returned unmodified in case everything went well. // return: the given error argument or KERN_FAILURE if anything went wrong static int pmem_cleanup(int error) { if (pmem_zero_page) { OSFree(pmem_zero_page, PAGE_SIZE, pmem_tag); } if (pte_mmap != NULL) { pte_mmap_osx_delete(pte_mmap); } if (pmem_tag) { OSMalloc_Tagfree(pmem_tag); } if (pmem_devpmemnode) { devfs_remove(pmem_devpmemnode); } if (pmem_devmajor != -1) { int devindex = 0; devindex = cdevsw_remove(pmem_devmajor, &pmem_cdevsw); if (devindex != pmem_devmajor) { pmem_error("Failed to remove cdevsw, cdevsw_remove() returned %d," "should be %d", devindex, pmem_devmajor); pmem_error("Kext will not be unloaded as an uio could result" " in calling non-existent code"); error = KERN_FAILURE; } } return error; }
//stop void com_objective_see_firewall::stop(IOService *provider) { //dbg msg IOLog("LULU: in %s\n", __FUNCTION__); //free rule locks, dictionary, etc uninitRules(); //free shared memory descriptor if(NULL != sharedMemoryDescriptor) { //release sharedMemoryDescriptor->release(); //unset sharedMemoryDescriptor = NULL; } //free shared data queue if(NULL != sharedDataQueue) { //release sharedDataQueue->release(); //unset sharedDataQueue = NULL; } //free alloc tag if(NULL != allocTag) { //free OSMalloc_Tagfree(allocTag); //unset allocTag = NULL; } //super super::stop(provider); bail: return; }
void zfs_context_fini(void) { lck_attr_free(zfs_lock_attr); zfs_lock_attr = NULL; lck_grp_attr_free(zfs_group_attr); zfs_group_attr = NULL; lck_grp_free(zfs_mutex_group); zfs_mutex_group = NULL; lck_grp_free(zfs_rwlock_group); zfs_rwlock_group = NULL; lck_grp_free(zfs_spinlock_group); zfs_spinlock_group = NULL; OSMalloc_Tagfree(zfs_kmem_alloc_tag); }