static void mali_mem_vma_close(struct vm_area_struct *vma) { /* If need to share the allocation, unref ref_count here */ mali_mem_allocation *alloc = (mali_mem_allocation *)vma->vm_private_data; mali_allocation_unref(&alloc); vma->vm_private_data = NULL; }
_mali_osk_errcode_t _mali_ukk_mem_free(_mali_uk_free_mem_s *args) { struct mali_session_data *session = (struct mali_session_data *)(uintptr_t)args->ctx; u32 vaddr = args->gpu_vaddr; mali_mem_allocation *mali_alloc = NULL; struct mali_vma_node *mali_vma_node = NULL; /* find mali allocation structure by vaddress*/ mali_vma_node = mali_vma_offset_search(&session->allocation_mgr, vaddr, 0); MALI_DEBUG_ASSERT(NULL != mali_vma_node); mali_alloc = container_of(mali_vma_node, struct mali_mem_allocation, mali_vma_node); if (mali_alloc) /* check ref_count */ mali_allocation_unref(&mali_alloc); return _MALI_OSK_ERR_OK; }