diff mbox

dma-buf: add support for compat ioctl

Message ID 1487683261-2655-1-git-send-email-m.szyprowski@samsung.com (mailing list archive)
State New, archived
Headers show

Commit Message

Marek Szyprowski Feb. 21, 2017, 1:21 p.m. UTC
Add compat ioctl support to dma-buf. This lets one to use DMA_BUF_IOCTL_SYNC
ioctl from 32bit application on 64bit kernel. Data structures for both 32
and 64bit modes are same, so there is no need for additional translation
layer.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
---
 drivers/dma-buf/dma-buf.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Christian König Feb. 21, 2017, 1:59 p.m. UTC | #1
Am 21.02.2017 um 14:21 schrieb Marek Szyprowski:
> Add compat ioctl support to dma-buf. This lets one to use DMA_BUF_IOCTL_SYNC
> ioctl from 32bit application on 64bit kernel. Data structures for both 32
> and 64bit modes are same, so there is no need for additional translation
> layer.

Well I might be wrong, but IIRC compat_ioctl was just optional and if 
not specified unlocked_ioctl was called instead.

If that is true your patch wouldn't have any effect at all.

Regards,
Christian.

>
> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
> ---
>   drivers/dma-buf/dma-buf.c | 3 +++
>   1 file changed, 3 insertions(+)
>
> diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
> index 718f832a5c71..0007b792827b 100644
> --- a/drivers/dma-buf/dma-buf.c
> +++ b/drivers/dma-buf/dma-buf.c
> @@ -325,6 +325,9 @@ static long dma_buf_ioctl(struct file *file,
>   	.llseek		= dma_buf_llseek,
>   	.poll		= dma_buf_poll,
>   	.unlocked_ioctl	= dma_buf_ioctl,
> +#ifdef CONFIG_COMPAT
> +	.compat_ioctl	= dma_buf_ioctl,
> +#endif
>   };
>   
>   /*
Marek Szyprowski Feb. 21, 2017, 2:37 p.m. UTC | #2
Hi Christian,

On 2017-02-21 14:59, Christian König wrote:
> Am 21.02.2017 um 14:21 schrieb Marek Szyprowski:
>> Add compat ioctl support to dma-buf. This lets one to use 
>> DMA_BUF_IOCTL_SYNC
>> ioctl from 32bit application on 64bit kernel. Data structures for 
>> both 32
>> and 64bit modes are same, so there is no need for additional translation
>> layer.
>
> Well I might be wrong, but IIRC compat_ioctl was just optional and if 
> not specified unlocked_ioctl was called instead.
>
> If that is true your patch wouldn't have any effect at all.

Well, then why I got -ENOTTY in the 32bit test app for this ioctl on 
64bit ARM64 kernel without this patch?

Best regards
Marek Szyprowski Feb. 21, 2017, 2:55 p.m. UTC | #3
Dear All,

On 2017-02-21 15:37, Marek Szyprowski wrote:
> Hi Christian,
>
> On 2017-02-21 14:59, Christian König wrote:
>> Am 21.02.2017 um 14:21 schrieb Marek Szyprowski:
>>> Add compat ioctl support to dma-buf. This lets one to use 
>>> DMA_BUF_IOCTL_SYNC
>>> ioctl from 32bit application on 64bit kernel. Data structures for 
>>> both 32
>>> and 64bit modes are same, so there is no need for additional 
>>> translation
>>> layer.
>>
>> Well I might be wrong, but IIRC compat_ioctl was just optional and if 
>> not specified unlocked_ioctl was called instead.
>>
>> If that is true your patch wouldn't have any effect at all.
>
> Well, then why I got -ENOTTY in the 32bit test app for this ioctl on 
> 64bit ARM64 kernel without this patch?
>

I've checked in fs/compat_ioctl.c, I see no fallback in 
COMPAT_SYSCALL_DEFINE3,
so one has to provide compat_ioctl callback to have ioctl working with 32bit
apps.

Best regards
Christian König Feb. 21, 2017, 3:08 p.m. UTC | #4
Am 21.02.2017 um 15:55 schrieb Marek Szyprowski:
> Dear All,
>
> On 2017-02-21 15:37, Marek Szyprowski wrote:
>> Hi Christian,
>>
>> On 2017-02-21 14:59, Christian König wrote:
>>> Am 21.02.2017 um 14:21 schrieb Marek Szyprowski:
>>>> Add compat ioctl support to dma-buf. This lets one to use 
>>>> DMA_BUF_IOCTL_SYNC
>>>> ioctl from 32bit application on 64bit kernel. Data structures for 
>>>> both 32
>>>> and 64bit modes are same, so there is no need for additional 
>>>> translation
>>>> layer.
>>>
>>> Well I might be wrong, but IIRC compat_ioctl was just optional and 
>>> if not specified unlocked_ioctl was called instead.
>>>
>>> If that is true your patch wouldn't have any effect at all.
>>
>> Well, then why I got -ENOTTY in the 32bit test app for this ioctl on 
>> 64bit ARM64 kernel without this patch?
>>
>
> I've checked in fs/compat_ioctl.c, I see no fallback in 
> COMPAT_SYSCALL_DEFINE3,
> so one has to provide compat_ioctl callback to have ioctl working with 
> 32bit
> apps.

Then my memory cheated on me.

In this case the patch is Reviewed-by: Christian König 
<christian.koenig@amd.com>.

Regards,
Christian.

>
> Best regards
Daniel Vetter Feb. 22, 2017, 7:07 p.m. UTC | #5
On Tue, Feb 21, 2017 at 4:08 PM, Christian König
<deathsimple@vodafone.de> wrote:
> Am 21.02.2017 um 15:55 schrieb Marek Szyprowski:
>>
>> Dear All,
>>
>> On 2017-02-21 15:37, Marek Szyprowski wrote:
>>>
>>> Hi Christian,
>>>
>>> On 2017-02-21 14:59, Christian König wrote:
>>>>
>>>> Am 21.02.2017 um 14:21 schrieb Marek Szyprowski:
>>>>>
>>>>> Add compat ioctl support to dma-buf. This lets one to use
>>>>> DMA_BUF_IOCTL_SYNC
>>>>> ioctl from 32bit application on 64bit kernel. Data structures for both
>>>>> 32
>>>>> and 64bit modes are same, so there is no need for additional
>>>>> translation
>>>>> layer.
>>>>
>>>>
>>>> Well I might be wrong, but IIRC compat_ioctl was just optional and if
>>>> not specified unlocked_ioctl was called instead.
>>>>
>>>> If that is true your patch wouldn't have any effect at all.
>>>
>>>
>>> Well, then why I got -ENOTTY in the 32bit test app for this ioctl on
>>> 64bit ARM64 kernel without this patch?
>>>
>>
>> I've checked in fs/compat_ioctl.c, I see no fallback in
>> COMPAT_SYSCALL_DEFINE3,
>> so one has to provide compat_ioctl callback to have ioctl working with
>> 32bit
>> apps.
>
>
> Then my memory cheated on me.
>
> In this case the patch is Reviewed-by: Christian König
> <christian.koenig@amd.com>.

Since you have commit rights for drm-misc, care to push this to
drm-misc-next-fixes pls? Also I think this warrants a cc: stable,
clearly an obvious screw-up in creating this api on our side :( So
feel free to smash my ack on the patch.

Thanks, Daniel
Sumit Semwal Feb. 23, 2017, 6:37 a.m. UTC | #6
Hi Marek,

On 23 February 2017 at 00:37, Daniel Vetter <daniel@ffwll.ch> wrote:
> On Tue, Feb 21, 2017 at 4:08 PM, Christian König
> <deathsimple@vodafone.de> wrote:
>> Am 21.02.2017 um 15:55 schrieb Marek Szyprowski:
>>>
>>> Dear All,
>>>
>>> On 2017-02-21 15:37, Marek Szyprowski wrote:
>>>>
>>>> Hi Christian,
>>>>
>>>> On 2017-02-21 14:59, Christian König wrote:
>>>>>
>>>>> Am 21.02.2017 um 14:21 schrieb Marek Szyprowski:
>>>>>>
>>>>>> Add compat ioctl support to dma-buf. This lets one to use
>>>>>> DMA_BUF_IOCTL_SYNC
>>>>>> ioctl from 32bit application on 64bit kernel. Data structures for both
>>>>>> 32
>>>>>> and 64bit modes are same, so there is no need for additional
>>>>>> translation
>>>>>> layer.
>>>>>
>>>>>
>>>>> Well I might be wrong, but IIRC compat_ioctl was just optional and if
>>>>> not specified unlocked_ioctl was called instead.
>>>>>
>>>>> If that is true your patch wouldn't have any effect at all.
>>>>
>>>>
>>>> Well, then why I got -ENOTTY in the 32bit test app for this ioctl on
>>>> 64bit ARM64 kernel without this patch?
>>>>
>>>
>>> I've checked in fs/compat_ioctl.c, I see no fallback in
>>> COMPAT_SYSCALL_DEFINE3,
>>> so one has to provide compat_ioctl callback to have ioctl working with
>>> 32bit
>>> apps.
>>
>>
>> Then my memory cheated on me.
>>
>> In this case the patch is Reviewed-by: Christian König
>> <christian.koenig@amd.com>.
>

Thanks much for spotting this!

> Since you have commit rights for drm-misc, care to push this to
> drm-misc-next-fixes pls? Also I think this warrants a cc: stable,
> clearly an obvious screw-up in creating this api on our side :( So
> feel free to smash my ack on the patch.
>
Daniel, Christian,

I saw this just now, so if Christian hasn't already pulled it into
drm-misc-next-fixes, I'll give it a stab.

> Thanks, Daniel
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> +41 (0) 79 365 57 48 - http://blog.ffwll.ch
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

Best,
Sumit.
diff mbox

Patch

diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
index 718f832a5c71..0007b792827b 100644
--- a/drivers/dma-buf/dma-buf.c
+++ b/drivers/dma-buf/dma-buf.c
@@ -325,6 +325,9 @@  static long dma_buf_ioctl(struct file *file,
 	.llseek		= dma_buf_llseek,
 	.poll		= dma_buf_poll,
 	.unlocked_ioctl	= dma_buf_ioctl,
+#ifdef CONFIG_COMPAT
+	.compat_ioctl	= dma_buf_ioctl,
+#endif
 };
 
 /*