Re: [PATCH v2 1/6] ntb: Store original DMA address for future release

Dave Jiang <[email protected]> Fri, 1 May 2026 10:00:10 -0700
Newsgroups dev.linux.lists.ntb,dev.linux.lists.iommu,org.kernel.vger.linux-kernel
Message-ID <[email protected]>

On 4/30/26 11:35 PM, Leon Romanovsky wrote:
> From: Leon Romanovsky <[email protected]>
> 
> The DMA API requires that dma_free_attrs receive the exact dma_handle
> originally returned by the allocation function. Do not modify it.
> 
> Fixes: fc5d1829f9bf ("NTB: transport: Try harder to alloc an aligned MW buffer")
> Signed-off-by: Leon Romanovsky <[email protected]>

Reviewed-by: Dave Jiang <[email protected]>

> ---
>  drivers/ntb/ntb_transport.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c
> index 7cabc82305d6b..771eb7d9f4356 100644
> --- a/drivers/ntb/ntb_transport.c
> +++ b/drivers/ntb/ntb_transport.c
> @@ -223,6 +223,7 @@ struct ntb_transport_mw {
>  	void *alloc_addr;
>  	void *virt_addr;
>  	dma_addr_t dma_addr;
> +	dma_addr_t original_dma_addr;
>  };
>  
>  struct ntb_transport_client_dev {
> @@ -766,7 +767,7 @@ static void ntb_free_mw(struct ntb_transport_ctx *nt, int num_mw)
>  
>  	ntb_mw_clear_trans(nt->ndev, PIDX, num_mw);
>  	dma_free_coherent(dma_dev, mw->alloc_size,
> -			  mw->alloc_addr, mw->dma_addr);
> +			  mw->alloc_addr, mw->original_dma_addr);
>  	mw->xlat_size = 0;
>  	mw->buff_size = 0;
>  	mw->alloc_size = 0;
> @@ -802,6 +803,7 @@ static int ntb_alloc_mw_buffer(struct ntb_transport_mw *mw,
>  		return -ENOMEM;
>  	}
>  	virt_addr = alloc_addr;
> +	mw->original_dma_addr = dma_addr;
>  
>  	/*
>  	 * we must ensure that the memory address allocated is BAR size
>