2024-06-05 01:26:44

by Barry Song

[permalink] [raw]
Subject: [PATCH v2] dma-buf: align fd_flags and heap_flags with dma_heap_allocation_data

From: Barry Song <[email protected]>

dma_heap_allocation_data defines the UAPI as follows:

struct dma_heap_allocation_data {
__u64 len;
__u32 fd;
__u32 fd_flags;
__u64 heap_flags;
};

However, dma_heap_buffer_alloc() casts both fd_flags and heap_flags
into unsigned int. We're inconsistent with types in the non UAPI
arguments. This patch fixes it.

Signed-off-by: Barry Song <[email protected]>
Acked-by: John Stultz <[email protected]>
---
-v2:
collect ack of John, thanks!
refine commit message;

drivers/dma-buf/dma-heap.c | 4 ++--
include/uapi/linux/dma-heap.h | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/dma-buf/dma-heap.c b/drivers/dma-buf/dma-heap.c
index 84ae708fafe7..2298ca5e112e 100644
--- a/drivers/dma-buf/dma-heap.c
+++ b/drivers/dma-buf/dma-heap.c
@@ -50,8 +50,8 @@ static struct class *dma_heap_class;
static DEFINE_XARRAY_ALLOC(dma_heap_minors);

static int dma_heap_buffer_alloc(struct dma_heap *heap, size_t len,
- unsigned int fd_flags,
- unsigned int heap_flags)
+ u32 fd_flags,
+ u64 heap_flags)
{
struct dma_buf *dmabuf;
int fd;
diff --git a/include/uapi/linux/dma-heap.h b/include/uapi/linux/dma-heap.h
index 6f84fa08e074..a4cf716a49fa 100644
--- a/include/uapi/linux/dma-heap.h
+++ b/include/uapi/linux/dma-heap.h
@@ -19,7 +19,7 @@
#define DMA_HEAP_VALID_FD_FLAGS (O_CLOEXEC | O_ACCMODE)

/* Currently no heap flags */
-#define DMA_HEAP_VALID_HEAP_FLAGS (0)
+#define DMA_HEAP_VALID_HEAP_FLAGS (0ULL)

/**
* struct dma_heap_allocation_data - metadata passed from userspace for
--
2.34.1



2024-06-05 09:25:38

by Sumit Semwal

[permalink] [raw]
Subject: Re: [PATCH v2] dma-buf: align fd_flags and heap_flags with dma_heap_allocation_data

Hello Barry,


On Wed, 5 Jun 2024 at 06:56, Barry Song <[email protected]> wrote:
>
> From: Barry Song <[email protected]>
>
> dma_heap_allocation_data defines the UAPI as follows:
>
> struct dma_heap_allocation_data {
> __u64 len;
> __u32 fd;
> __u32 fd_flags;
> __u64 heap_flags;
> };
>
> However, dma_heap_buffer_alloc() casts both fd_flags and heap_flags
> into unsigned int. We're inconsistent with types in the non UAPI
> arguments. This patch fixes it.

Thank you for your patch; I've pushed it to drm-misc-next.

Best,
Sumit.
>
> Signed-off-by: Barry Song <[email protected]>
> Acked-by: John Stultz <[email protected]>
> ---
> -v2:
> collect ack of John, thanks!
> refine commit message;
>
> drivers/dma-buf/dma-heap.c | 4 ++--
> include/uapi/linux/dma-heap.h | 2 +-
> 2 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/dma-buf/dma-heap.c b/drivers/dma-buf/dma-heap.c
> index 84ae708fafe7..2298ca5e112e 100644
> --- a/drivers/dma-buf/dma-heap.c
> +++ b/drivers/dma-buf/dma-heap.c
> @@ -50,8 +50,8 @@ static struct class *dma_heap_class;
> static DEFINE_XARRAY_ALLOC(dma_heap_minors);
>
> static int dma_heap_buffer_alloc(struct dma_heap *heap, size_t len,
> - unsigned int fd_flags,
> - unsigned int heap_flags)
> + u32 fd_flags,
> + u64 heap_flags)
> {
> struct dma_buf *dmabuf;
> int fd;
> diff --git a/include/uapi/linux/dma-heap.h b/include/uapi/linux/dma-heap.h
> index 6f84fa08e074..a4cf716a49fa 100644
> --- a/include/uapi/linux/dma-heap.h
> +++ b/include/uapi/linux/dma-heap.h
> @@ -19,7 +19,7 @@
> #define DMA_HEAP_VALID_FD_FLAGS (O_CLOEXEC | O_ACCMODE)
>
> /* Currently no heap flags */
> -#define DMA_HEAP_VALID_HEAP_FLAGS (0)
> +#define DMA_HEAP_VALID_HEAP_FLAGS (0ULL)
>
> /**
> * struct dma_heap_allocation_data - metadata passed from userspace for
> --
> 2.34.1
>


--
Thanks and regards,

Sumit Semwal (he / him)
Tech Lead - LCG, Vertical Technologies
Linaro.org │ Open source software for ARM SoCs