Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 609444d0 authored by Isaac J. Manjarres's avatar Isaac J. Manjarres
Browse files

staging: ion: Allow for attach and detach ops to be overridden



The ION core is supposed to allow for all of the dma-buf ops
to be overridden by a heap's dma-buf ops. However, the
attach and detach ops are not overridable, which doesn't make
much sense, as the other dma-buf ops assume that the attachment
structure that they operate on was allocated by their attach
callbacks, which aren't being invoked. Thus, allow for the dma-buf
attach and detach ops to be overridable.

Change-Id: I8e9cbccac6df8810a85eff8c153a18ab76d275fb
Signed-off-by: default avatarIsaac J. Manjarres <isaacm@codeaurora.org>
parent 96cd1812
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -57,6 +57,10 @@ static int ion_dma_buf_attach(struct dma_buf *dmabuf,
	struct ion_dma_buf_attachment *a;
	struct sg_table *table;
	struct ion_buffer *buffer = dmabuf->priv;
	struct ion_heap *heap = buffer->heap;

	if (heap->buf_ops.attach)
		return heap->buf_ops.attach(dmabuf, attachment);

	a = kzalloc(sizeof(*a), GFP_KERNEL);
	if (!a)
@@ -86,6 +90,10 @@ static void ion_dma_buf_detatch(struct dma_buf *dmabuf,
{
	struct ion_dma_buf_attachment *a = attachment->priv;
	struct ion_buffer *buffer = dmabuf->priv;
	struct ion_heap *heap = buffer->heap;

	if (heap->buf_ops.detach)
		return heap->buf_ops.detach(dmabuf, attachment);

	mutex_lock(&buffer->lock);
	list_del(&a->list);