[PATCH 2/3] dma-mapping: Add auto cleanup support dma_map_single()

Frank Li Frank.Li at nxp.com
Fri Oct 10 11:50:25 PDT 2025


Add auto cleanup support for dma_map_single().

    fun()
    {
        CLASS(dma_map_single, dma)(dev, ...);
        ...
        if (error)
            return -EIO; // dma_unmap_single() will be auto-called
    }

Signed-off-by: Frank Li <Frank.Li at nxp.com>
---
 include/linux/dma-mapping.h | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
index 8248ff9363eed2ae5dc18e9eedb711b299201bea..89fc80e7cd85ba5a4068c61f58f3a578ab0a7a01 100644
--- a/include/linux/dma-mapping.h
+++ b/include/linux/dma-mapping.h
@@ -757,4 +757,12 @@ static inline int dma_mmap_wc(struct device *dev,
 	do { typeof(PTR) __p __maybe_unused = PTR; } while (0)
 #endif
 
+DEFINE_GUARD_ARGS_CLASS(dma_map_single, dma_addr_t,
+			dma_mapping_error(_T.args.dev, _T.ret),
+			dma_unmap_single(_T->args.dev, _T->ret, _T->args.size, _T->args.dir),
+			dma_map_single,
+			(struct device *dev; void *ptr; size_t size; enum dma_data_direction dir),
+			(struct device *dev, void *ptr, size_t size, enum dma_data_direction dir),
+			(dev, ptr, size, dir))
+
 #endif /* _LINUX_DMA_MAPPING_H */

-- 
2.34.1




More information about the linux-arm-kernel mailing list