lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <8d5ae067-e1bf-46a7-9137-d5936197ad5c@amd.com>
Date: Thu, 27 Nov 2025 09:07:06 +0100
From: Christian König <christian.koenig@....com>
To: Viresh Kumar <viresh.kumar@...aro.org>,
 Sumit Semwal <sumit.semwal@...aro.org>
Cc: linux-media@...r.kernel.org, dri-devel@...ts.freedesktop.org,
 linaro-mm-sig@...ts.linaro.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] dma-buf: add no-op stubs when CONFIG_DMA_SHARED_BUFFER is
 disabled

On 11/27/25 08:40, Viresh Kumar wrote:
> Move several dma-buf function declarations under
> CONFIG_DMA_SHARED_BUFFER and provide static inline no-op implementations
> for the disabled case to allow the callers to build when the feature is
> not compiled in.

Good point, but which driver actually needs that?

At least the whole DRM subsystem selects CONFIG_DMA_SHARED_BUFFER and others (like V4L) usually don't compile their whole infrastructure when that option isn't selected.

In other words there should be a concrete example of what breaks in the commit message.

> 
> Signed-off-by: Viresh Kumar <viresh.kumar@...aro.org>
> ---
>  include/linux/dma-buf.h | 116 ++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 116 insertions(+)
> 
> diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h
> index d58e329ac0e7..06e494d8f6b0 100644
> --- a/include/linux/dma-buf.h
> +++ b/include/linux/dma-buf.h
> @@ -568,6 +568,7 @@ static inline bool dma_buf_is_dynamic(struct dma_buf *dmabuf)
>  	return !!dmabuf->ops->pin;
>  }
>  
> +#ifdef CONFIG_DMA_SHARED_BUFFER
>  struct dma_buf_attachment *dma_buf_attach(struct dma_buf *dmabuf,
>  					  struct device *dev);
>  struct dma_buf_attachment *
> @@ -609,4 +610,119 @@ int dma_buf_vmap_unlocked(struct dma_buf *dmabuf, struct iosys_map *map);
>  void dma_buf_vunmap_unlocked(struct dma_buf *dmabuf, struct iosys_map *map);
>  struct dma_buf *dma_buf_iter_begin(void);
>  struct dma_buf *dma_buf_iter_next(struct dma_buf *dmbuf);
> +
> +#else
> +static inline struct dma_buf_attachment *dma_buf_attach(struct dma_buf *dmabuf,
> +							struct device *dev)
> +{
> +	return NULL;

This should probably be an ERR_PTR(-EOPNOTSUPP);

> +}
> +
> +static inline struct dma_buf_attachment *
> +dma_buf_dynamic_attach(struct dma_buf *dmabuf, struct device *dev,
> +		       const struct dma_buf_attach_ops *importer_ops,
> +		       void *importer_priv)
> +{
> +	return NULL;

Same here, ERR_PTR(-EOPNOTSUPP).

> +}
> +
> +static inline void dma_buf_detach(struct dma_buf *dmabuf,
> +				  struct dma_buf_attachment *attach) { }
> +
> +static inline int dma_buf_pin(struct dma_buf_attachment *attach)
> +{
> +	return -EOPNOTSUPP;
> +}
> +
> +static inline void dma_buf_unpin(struct dma_buf_attachment *attach) { }
> +
> +static inline struct dma_buf *
> +dma_buf_export(const struct dma_buf_export_info *exp_info)
> +{
> +	return NULL;
> +}
> +
> +
> +static inline int dma_buf_fd(struct dma_buf *dmabuf, int flags)
> +{
> +	return -EOPNOTSUPP;
> +}
> +
> +
> +static inline struct dma_buf *dma_buf_get(int fd)
> +{
> +	return NULL;

And here ERR_PTR(-EINVAL).

> +}
> +
> +static inline void dma_buf_put(struct dma_buf *dmabuf) { }
> +
> +static inline struct sg_table *
> +dma_buf_map_attachment(struct dma_buf_attachment *, enum dma_data_direction)
> +{
> +	return NULL;

ERR_PTR(-EINVAL)

> +}
> +
> +static inline void dma_buf_unmap_attachment(struct dma_buf_attachment *,
> +					    struct sg_table *,
> +					    enum dma_data_direction) { }
> +
> +static inline void dma_buf_move_notify(struct dma_buf *dma_buf) { }
> +
> +static inline int dma_buf_begin_cpu_access(struct dma_buf *dma_buf,
> +					   enum dma_data_direction dir)
> +{
> +	return -EOPNOTSUPP;
> +}
> +
> +static inline int dma_buf_end_cpu_access(struct dma_buf *dma_buf,
> +					 enum dma_data_direction dir)
> +{
> +	return -EOPNOTSUPP;
> +}
> +
> +static inline struct sg_table *
> +dma_buf_map_attachment_unlocked(struct dma_buf_attachment *attach,
> +				enum dma_data_direction direction)
> +{
> +	return NULL;

ERR_PTR(-EINVAL)

> +}
> +
> +static inline void
> +dma_buf_unmap_attachment_unlocked(struct dma_buf_attachment *attach,
> +				  struct sg_table *sg_table,
> +				  enum dma_data_direction direction) { }
> +
> +static inline int dma_buf_mmap(struct dma_buf *, struct vm_area_struct *,
> +			       unsigned long)
> +{
> +	return -EOPNOTSUPP;
> +}
> +
> +static inline int dma_buf_vmap(struct dma_buf *dmabuf, struct iosys_map *map)
> +{
> +	return -EOPNOTSUPP;
> +}
> +
> +static inline void dma_buf_vunmap(struct dma_buf *dmabuf, struct iosys_map *map)
> +{ }
> +
> +static inline int dma_buf_vmap_unlocked(struct dma_buf *dmabuf,
> +					struct iosys_map *map)
> +{
> +	return -EOPNOTSUPP;
> +}
> +
> +static inline void dma_buf_vunmap_unlocked(struct dma_buf *dmabuf,
> +					   struct iosys_map *map) { }
> +


> +static inline struct dma_buf *dma_buf_iter_begin(void)
> +{
> +	return NULL;
> +}
> +
> +static inline struct dma_buf *dma_buf_iter_next(struct dma_buf *dmbuf)
> +{
> +	return NULL;
> +}

Those two are only for BPF and not driver use.

Regards,
Christian.

> +#endif /* CONFIG_DMA_SHARED_BUFFER */
>  #endif /* __DMA_BUF_H__ */


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ