void *mali_descriptor_mapping_free(mali_descriptor_mapping *map, int descriptor)
{
	void *old_value = NULL;
	mali_mem_allocation *tmp_descriptor;
	struct mali_session_data *session;

	_mali_osk_mutex_rw_wait(map->lock, _MALI_OSK_LOCKMODE_RW);
	if ((descriptor >= 0) && (descriptor < map->current_nr_mappings) && _mali_osk_test_bit(descriptor, map->table->usage)) {
		old_value = map->table->mappings[descriptor];
		map->table->mappings[descriptor] = NULL;
		_mali_osk_clear_nonatomic_bit(descriptor, map->table->usage);
	}
	if (NULL != old_value) {
		tmp_descriptor = (mali_mem_allocation *)old_value;
		session = tmp_descriptor->session;

		MALI_DEBUG_ASSERT_POINTER(session);

		MALI_DEBUG_ASSERT(session->mali_mem_array[tmp_descriptor->type] >= tmp_descriptor->size);

		session->mali_mem_array[tmp_descriptor->type] -= tmp_descriptor->size;
	}
	_mali_osk_mutex_rw_signal(map->lock, _MALI_OSK_LOCKMODE_RW);

	return old_value;
}
void ump_descriptor_mapping_free(ump_descriptor_mapping *map, int descriptor)
{
	_mali_osk_mutex_rw_wait(map->lock, _MALI_OSK_LOCKMODE_RW);
	if ((descriptor > 0) && (descriptor < map->current_nr_mappings) && _mali_osk_test_bit(descriptor, map->table->usage)) {
		map->table->mappings[descriptor] = NULL;
		_mali_osk_clear_nonatomic_bit(descriptor, map->table->usage);
	}
	_mali_osk_mutex_rw_signal(map->lock, _MALI_OSK_LOCKMODE_RW);
}
void *mali_descriptor_mapping_free(mali_descriptor_mapping * map, int descriptor)
{
    void *old_value = NULL;

    _mali_osk_mutex_rw_wait(map->lock, _MALI_OSK_LOCKMODE_RW);
    if ( (descriptor >= 0) && (descriptor < map->current_nr_mappings) && _mali_osk_test_bit(descriptor, map->table->usage) ) {
        old_value = map->table->mappings[descriptor];
        map->table->mappings[descriptor] = NULL;
        _mali_osk_clear_nonatomic_bit(descriptor, map->table->usage);
    }
    _mali_osk_mutex_rw_signal(map->lock, _MALI_OSK_LOCKMODE_RW);

    return old_value;
}