Exemplo n.º 1
0
static void ion_buffer_destroy(struct kref *kref)
{
	struct ion_buffer *buffer = container_of(kref, struct ion_buffer, ref);
	struct ion_device *dev = buffer->dev;

	if (WARN_ON(buffer->kmap_cnt > 0))
		buffer->heap->ops->unmap_kernel(buffer->heap, buffer);

	buffer->heap->ops->unmap_dma(buffer->heap, buffer);

	ion_iommu_delayed_unmap(buffer);
	buffer->heap->ops->free(buffer);
#if defined(CONFIG_MACH_LGE_L9II_OPEN_EU)
	mutex_lock(&dev->buffer_lock);
#else
	mutex_lock(&dev->lock);
#endif
	rb_erase(&buffer->node, &dev->buffers);
#if defined(CONFIG_MACH_LGE_L9II_OPEN_EU)
	mutex_unlock(&dev->buffer_lock);
#else
	mutex_unlock(&dev->lock);
#endif
	kfree(buffer);
}
Exemplo n.º 2
0
static void ion_buffer_destroy(struct kref *kref)
{
	struct ion_buffer *buffer = container_of(kref, struct ion_buffer, ref);
	struct ion_device *dev = buffer->dev;

	ion_iommu_delayed_unmap(buffer);
	buffer->heap->ops->free(buffer);
	mutex_lock(&dev->lock);
	rb_erase(&buffer->node, &dev->buffers);
	mutex_unlock(&dev->lock);
	kfree(buffer);
}