All dma-buf functions has been moved to dynamic locking specification
The dma_buf_mmap_internal() was missed out by accident. Take reservation
lock around file mapping operation to adhere the common locking convention.
Reported-by: Daniel Vetter <[email protected]>
Signed-off-by: Dmitry Osipenko <[email protected]>
---
drivers/dma-buf/dma-buf.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
index 13bfd2d09c56..b809513b03fe 100644
--- a/drivers/dma-buf/dma-buf.c
+++ b/drivers/dma-buf/dma-buf.c
@@ -129,6 +129,7 @@ static struct file_system_type dma_buf_fs_type = {
static int dma_buf_mmap_internal(struct file *file, struct vm_area_struct *vma)
{
struct dma_buf *dmabuf;
+ int ret;
if (!is_dma_buf_file(file))
return -EINVAL;
@@ -144,7 +145,11 @@ static int dma_buf_mmap_internal(struct file *file, struct vm_area_struct *vma)
dmabuf->size >> PAGE_SHIFT)
return -EINVAL;
- return dmabuf->ops->mmap(dmabuf, vma);
+ dma_resv_lock(dmabuf->resv, NULL);
+ ret = dmabuf->ops->mmap(dmabuf, vma);
+ dma_resv_unlock(dmabuf->resv);
+
+ return ret;
}
static loff_t dma_buf_llseek(struct file *file, loff_t offset, int whence)
--
2.37.3
Am 10.11.22 um 21:13 schrieb Dmitry Osipenko:
> All dma-buf functions has been moved to dynamic locking specification
> The dma_buf_mmap_internal() was missed out by accident. Take reservation
> lock around file mapping operation to adhere the common locking convention.
>
> Reported-by: Daniel Vetter <[email protected]>
> Signed-off-by: Dmitry Osipenko <[email protected]>
Reviewed-by: Christian König <[email protected]> for this patch here.
Acked-by: Christian König <[email protected]> for the rest of the
series.
Regards,
Christian.
> ---
> drivers/dma-buf/dma-buf.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
> index 13bfd2d09c56..b809513b03fe 100644
> --- a/drivers/dma-buf/dma-buf.c
> +++ b/drivers/dma-buf/dma-buf.c
> @@ -129,6 +129,7 @@ static struct file_system_type dma_buf_fs_type = {
> static int dma_buf_mmap_internal(struct file *file, struct vm_area_struct *vma)
> {
> struct dma_buf *dmabuf;
> + int ret;
>
> if (!is_dma_buf_file(file))
> return -EINVAL;
> @@ -144,7 +145,11 @@ static int dma_buf_mmap_internal(struct file *file, struct vm_area_struct *vma)
> dmabuf->size >> PAGE_SHIFT)
> return -EINVAL;
>
> - return dmabuf->ops->mmap(dmabuf, vma);
> + dma_resv_lock(dmabuf->resv, NULL);
> + ret = dmabuf->ops->mmap(dmabuf, vma);
> + dma_resv_unlock(dmabuf->resv);
> +
> + return ret;
> }
>
> static loff_t dma_buf_llseek(struct file *file, loff_t offset, int whence)