summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorqctecmdr <qctecmdr@localhost>2023-03-06 06:30:20 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2023-03-06 06:30:19 -0800
commitf900d903dbe93e6000b044a9a2c0aeb9b05abc26 (patch)
treee5c758852b8be5a2741c82530d3a0e5df4726926
parent37cbee3a0328d8982157398349fd52a41686a6c7 (diff)
parentd0f7fc0412b8769039f1e88db393823b2f5be7ed (diff)
downloadgraphics-f900d903dbe93e6000b044a9a2c0aeb9b05abc26.tar.gz
Merge "Revert "msm: kgsl: Call dma_buf_unmap_attachment() early""
-rw-r--r--kgsl.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/kgsl.c b/kgsl.c
index eb4e820..1d3e1aa 100644
--- a/kgsl.c
+++ b/kgsl.c
@@ -332,6 +332,7 @@ static void kgsl_destroy_ion(struct kgsl_memdesc *memdesc)
if (metadata != NULL) {
remove_dmabuf_list(metadata);
+ dma_buf_unmap_attachment(metadata->attach, memdesc->sgt, DMA_BIDIRECTIONAL);
dma_buf_detach(metadata->dmabuf, metadata->attach);
dma_buf_put(metadata->dmabuf);
kfree(metadata);
@@ -3289,7 +3290,7 @@ static int kgsl_setup_dma_buf(struct kgsl_device *device,
{
int ret = 0;
struct scatterlist *s;
- struct sg_table *sg_table;
+ struct sg_table *sg_table = NULL;
struct dma_buf_attachment *attach = NULL;
struct kgsl_dma_buf_meta *metadata;
@@ -3331,8 +3332,6 @@ static int kgsl_setup_dma_buf(struct kgsl_device *device,
goto out;
}
- dma_buf_unmap_attachment(attach, sg_table, DMA_BIDIRECTIONAL);
-
metadata->table = sg_table;
entry->priv_data = metadata;
entry->memdesc.sgt = sg_table;
@@ -3355,6 +3354,9 @@ static int kgsl_setup_dma_buf(struct kgsl_device *device,
out:
if (ret) {
+ if (!IS_ERR_OR_NULL(sg_table))
+ dma_buf_unmap_attachment(attach, sg_table, DMA_BIDIRECTIONAL);
+
if (!IS_ERR_OR_NULL(attach))
dma_buf_detach(dmabuf, attach);