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); }
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); }