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 >