diff mbox

[1/3] drm/exynos: correct dma_buf exporter permission as ReadWrite

Message ID CAOc=iHWZp+CvDjbOMakRd6whCyPVhxF2vrOYN8qtgBk70idJPw@mail.gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Cooper Yuan July 10, 2012, 1:32 p.m. UTC
Set dma_buf exporter permission as ReadWrite, otherwise mmap will get
errno 13: permission denied.

Signed-off-by: Cooper Yuan <cooperyuan@gmail.com>
---
 drivers/gpu/drm/exynos/exynos_drm_dmabuf.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

 struct drm_gem_object *exynos_dmabuf_prime_import(struct drm_device *drm_dev,

Comments

Inki Dae July 20, 2012, 12:27 p.m. UTC | #1
2012/7/10, Cooper Yuan <cooperyuan@gmail.com>:
> Set dma_buf exporter permission as ReadWrite, otherwise mmap will get
> errno 13: permission denied.
>
> Signed-off-by: Cooper Yuan <cooperyuan@gmail.com>
> ---
>  drivers/gpu/drm/exynos/exynos_drm_dmabuf.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c
> b/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c
> index 613bf8a..e4eeb0b 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c
> @@ -29,6 +29,7 @@
>  #include "exynos_drm_drv.h"
>  #include "exynos_drm_gem.h"
>
> +#include <linux/fcntl.h>
>  #include <linux/dma-buf.h>
>
>  static struct sg_table *exynos_pages_to_sg(struct page **pages, int
> nr_pages,
> @@ -179,7 +180,7 @@ struct dma_buf *exynos_dmabuf_prime_export(struct
> drm_device *drm_dev,
>  	struct exynos_drm_gem_obj *exynos_gem_obj = to_exynos_gem_obj(obj);
>
>  	return dma_buf_export(exynos_gem_obj, &exynos_dmabuf_ops,
> -				exynos_gem_obj->base.size, 0600);
> +				exynos_gem_obj->base.size, O_RDWR);

this way is not good. the permission should be set from user so use
flags variable.

>  }
>
>  struct drm_gem_object *exynos_dmabuf_prime_import(struct drm_device
> *drm_dev,
> --


> 1.7.0.4
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>
Inki Dae July 20, 2012, 12:46 p.m. UTC | #2
2012/7/20, InKi Dae <daeinki@gmail.com>:
> 2012/7/10, Cooper Yuan <cooperyuan@gmail.com>:
>> Set dma_buf exporter permission as ReadWrite, otherwise mmap will get
>> errno 13: permission denied.
>>
>> Signed-off-by: Cooper Yuan <cooperyuan@gmail.com>
>> ---
>>  drivers/gpu/drm/exynos/exynos_drm_dmabuf.c |    3 ++-
>>  1 files changed, 2 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c
>> b/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c
>> index 613bf8a..e4eeb0b 100644
>> --- a/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c
>> +++ b/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c
>> @@ -29,6 +29,7 @@
>>  #include "exynos_drm_drv.h"
>>  #include "exynos_drm_gem.h"
>>
>> +#include <linux/fcntl.h>
>>  #include <linux/dma-buf.h>
>>
>>  static struct sg_table *exynos_pages_to_sg(struct page **pages, int
>> nr_pages,
>> @@ -179,7 +180,7 @@ struct dma_buf *exynos_dmabuf_prime_export(struct
>> drm_device *drm_dev,
>>  	struct exynos_drm_gem_obj *exynos_gem_obj = to_exynos_gem_obj(obj);
>>
>>  	return dma_buf_export(exynos_gem_obj, &exynos_dmabuf_ops,
>> -				exynos_gem_obj->base.size, 0600);
>> +				exynos_gem_obj->base.size, O_RDWR);
>
> this way is not good. the permission should be set from user so use
> flags variable.
>

hm, it seems like that now drm prime has one issue. the flags has only
O_CLOEXEC by drm_prime_handle_to_fd_ioctl function but I think we need
some flag values from user. so could you please explain why having
only O_CLOEXEC?

Thanks,
Inki Dae

>>  }
>>
>>  struct drm_gem_object *exynos_dmabuf_prime_import(struct drm_device
>> *drm_dev,
>> --
>
>
>> 1.7.0.4
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>>
>
Inki Dae July 20, 2012, 12:53 p.m. UTC | #3
I'm so sorry, there was typo (you -> anyone)

2012/7/20, InKi Dae <daeinki@gmail.com>:
> 2012/7/20, InKi Dae <daeinki@gmail.com>:
>> 2012/7/10, Cooper Yuan <cooperyuan@gmail.com>:
>>> Set dma_buf exporter permission as ReadWrite, otherwise mmap will get
>>> errno 13: permission denied.
>>>
>>> Signed-off-by: Cooper Yuan <cooperyuan@gmail.com>
>>> ---
>>>  drivers/gpu/drm/exynos/exynos_drm_dmabuf.c |    3 ++-
>>>  1 files changed, 2 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c
>>> b/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c
>>> index 613bf8a..e4eeb0b 100644
>>> --- a/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c
>>> +++ b/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c
>>> @@ -29,6 +29,7 @@
>>>  #include "exynos_drm_drv.h"
>>>  #include "exynos_drm_gem.h"
>>>
>>> +#include <linux/fcntl.h>
>>>  #include <linux/dma-buf.h>
>>>
>>>  static struct sg_table *exynos_pages_to_sg(struct page **pages, int
>>> nr_pages,
>>> @@ -179,7 +180,7 @@ struct dma_buf *exynos_dmabuf_prime_export(struct
>>> drm_device *drm_dev,
>>>  	struct exynos_drm_gem_obj *exynos_gem_obj = to_exynos_gem_obj(obj);
>>>
>>>  	return dma_buf_export(exynos_gem_obj, &exynos_dmabuf_ops,
>>> -				exynos_gem_obj->base.size, 0600);
>>> +				exynos_gem_obj->base.size, O_RDWR);
>>
>> this way is not good. the permission should be set from user so use
>> flags variable.
>>
>
> hm, it seems like that now drm prime has one issue. the flags has only
> O_CLOEXEC by drm_prime_handle_to_fd_ioctl function but I think we need
> some flag values from user. so could anyone please explain why having
> only O_CLOEXEC?
>
> Thanks,
> Inki Dae
>
>>>  }
>>>
>>>  struct drm_gem_object *exynos_dmabuf_prime_import(struct drm_device
>>> *drm_dev,
>>> --
>>
>>
>>> 1.7.0.4
>>> _______________________________________________
>>> dri-devel mailing list
>>> dri-devel@lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>>>
>>
>
diff mbox

Patch

diff --git a/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c
b/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c
index 613bf8a..e4eeb0b 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c
@@ -29,6 +29,7 @@ 
 #include "exynos_drm_drv.h"
 #include "exynos_drm_gem.h"

+#include <linux/fcntl.h>
 #include <linux/dma-buf.h>

 static struct sg_table *exynos_pages_to_sg(struct page **pages, int nr_pages,
@@ -179,7 +180,7 @@  struct dma_buf *exynos_dmabuf_prime_export(struct
drm_device *drm_dev,
 	struct exynos_drm_gem_obj *exynos_gem_obj = to_exynos_gem_obj(obj);

 	return dma_buf_export(exynos_gem_obj, &exynos_dmabuf_ops,
-				exynos_gem_obj->base.size, 0600);
+				exynos_gem_obj->base.size, O_RDWR);
 }