示例#1
0
文件: pmem.cpp 项目: KarlVogel/rekall
// 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;
}
示例#2
0
文件: driver.cpp 项目: Delostik/LuLu
//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;
}
示例#3
0
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);
}