diff options
Diffstat (limited to 'drivers/gpu/drm/drm_prime.c')
| -rw-r--r-- | drivers/gpu/drm/drm_prime.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c index eb09e86044c6..f924b8b4ab6b 100644 --- a/drivers/gpu/drm/drm_prime.c +++ b/drivers/gpu/drm/drm_prime.c @@ -781,6 +781,8 @@ int drm_gem_dmabuf_mmap(struct dma_buf *dma_buf, struct vm_area_struct *vma)  	struct drm_gem_object *obj = dma_buf->priv;  	struct drm_device *dev = obj->dev; +	dma_resv_assert_held(dma_buf->resv); +  	if (!dev->driver->gem_prime_mmap)  		return -ENOSYS; @@ -940,7 +942,7 @@ struct drm_gem_object *drm_gem_prime_import_dev(struct drm_device *dev,  	get_dma_buf(dma_buf); -	sgt = dma_buf_map_attachment(attach, DMA_BIDIRECTIONAL); +	sgt = dma_buf_map_attachment_unlocked(attach, DMA_BIDIRECTIONAL);  	if (IS_ERR(sgt)) {  		ret = PTR_ERR(sgt);  		goto fail_detach; @@ -958,7 +960,7 @@ struct drm_gem_object *drm_gem_prime_import_dev(struct drm_device *dev,  	return obj;  fail_unmap: -	dma_buf_unmap_attachment(attach, sgt, DMA_BIDIRECTIONAL); +	dma_buf_unmap_attachment_unlocked(attach, sgt, DMA_BIDIRECTIONAL);  fail_detach:  	dma_buf_detach(dma_buf, attach);  	dma_buf_put(dma_buf); @@ -1056,7 +1058,7 @@ void drm_prime_gem_destroy(struct drm_gem_object *obj, struct sg_table *sg)  	attach = obj->import_attach;  	if (sg) -		dma_buf_unmap_attachment(attach, sg, DMA_BIDIRECTIONAL); +		dma_buf_unmap_attachment_unlocked(attach, sg, DMA_BIDIRECTIONAL);  	dma_buf = attach->dmabuf;  	dma_buf_detach(attach->dmabuf, attach);  	/* remove the reference */  |