| From 7c3e9fcad9c7d8bb5d69a576044fb16b1d2e8a01 Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Pouiller?= <jerome.pouiller@silabs.com> |
| Date: Tue, 17 May 2022 09:27:08 +0200 |
| Subject: dma-buf: fix use of DMA_BUF_SET_NAME_{A,B} in userspace |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Jérôme Pouiller <jerome.pouiller@silabs.com> |
| |
| commit 7c3e9fcad9c7d8bb5d69a576044fb16b1d2e8a01 upstream. |
| |
| The typedefs u32 and u64 are not available in userspace. Thus user get |
| an error he try to use DMA_BUF_SET_NAME_A or DMA_BUF_SET_NAME_B: |
| |
| $ gcc -Wall -c -MMD -c -o ioctls_list.o ioctls_list.c |
| In file included from /usr/include/x86_64-linux-gnu/asm/ioctl.h:1, |
| from /usr/include/linux/ioctl.h:5, |
| from /usr/include/asm-generic/ioctls.h:5, |
| from ioctls_list.c:11: |
| ioctls_list.c:463:29: error: ‘u32’ undeclared here (not in a function) |
| 463 | { "DMA_BUF_SET_NAME_A", DMA_BUF_SET_NAME_A, -1, -1 }, // linux/dma-buf.h |
| | ^~~~~~~~~~~~~~~~~~ |
| ioctls_list.c:464:29: error: ‘u64’ undeclared here (not in a function) |
| 464 | { "DMA_BUF_SET_NAME_B", DMA_BUF_SET_NAME_B, -1, -1 }, // linux/dma-buf.h |
| | ^~~~~~~~~~~~~~~~~~ |
| |
| The issue was initially reported here[1]. |
| |
| [1]: https://github.com/jerome-pouiller/ioctl/pull/14 |
| |
| Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> |
| Reviewed-by: Christian König <christian.koenig@amd.com> |
| Fixes: a5bff92eaac4 ("dma-buf: Fix SET_NAME ioctl uapi") |
| CC: stable@vger.kernel.org |
| Link: https://patchwork.freedesktop.org/patch/msgid/20220517072708.245265-1-Jerome.Pouiller@silabs.com |
| Signed-off-by: Christian König <christian.koenig@amd.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| include/uapi/linux/dma-buf.h | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/include/uapi/linux/dma-buf.h |
| +++ b/include/uapi/linux/dma-buf.h |
| @@ -92,7 +92,7 @@ struct dma_buf_sync { |
| * between them in actual uapi, they're just different numbers. |
| */ |
| #define DMA_BUF_SET_NAME _IOW(DMA_BUF_BASE, 1, const char *) |
| -#define DMA_BUF_SET_NAME_A _IOW(DMA_BUF_BASE, 1, u32) |
| -#define DMA_BUF_SET_NAME_B _IOW(DMA_BUF_BASE, 1, u64) |
| +#define DMA_BUF_SET_NAME_A _IOW(DMA_BUF_BASE, 1, __u32) |
| +#define DMA_BUF_SET_NAME_B _IOW(DMA_BUF_BASE, 1, __u64) |
| |
| #endif |