On Friday, 2017-03-03 14:04:26 +0300, Dan Carpenter wrote:
On Thu, Mar 02, 2017 at 01:44:36PM -0800, Laura Abbott wrote:
static struct sg_table *ion_map_dma_buf(struct dma_buf_attachment *attachment, enum dma_data_direction direction) { struct dma_buf *dmabuf = attachment->dmabuf; struct ion_buffer *buffer = dmabuf->priv;
- struct sg_table *table;
 - int ret;
 - /*
 * TODO: Need to sync wrt CPU or device completely owning?*/- table = dup_sg_table(buffer->sg_table);
 
- ion_buffer_sync_for_device(buffer, attachment->dev, direction);
 - return dup_sg_table(buffer->sg_table);
 
- if (!dma_map_sg(attachment->dev, table->sgl, table->nents,
 direction)){ret = -ENOMEM;goto err;- }
 
Actually, I think `ret` should be left uninitialised on success, what's really missing is this return before the `err:` label:
+ return table;
+err:
- free_duped_table(table);
 - return ERR_PTR(ret);
 ret isn't initialized on success.
}
regards, dan carpenter