IB: Fix ib_dma_alloc_coherent() wrapper
The ib_dma_alloc_coherent() wrapper uses a u64* for the dma_handle parameter, unlike dma_alloc_coherent, which uses dma_addr_t*. This means that we need a temporary variable to handle the case when ib_dma_alloc_coherent() just falls through directly to dma_alloc_coherent() on architectures where sizeof u64 != sizeof dma_addr_t. Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
parent
d1998ef38a
commit
c59a3da134
|
@ -1639,7 +1639,14 @@ static inline void *ib_dma_alloc_coherent(struct ib_device *dev,
|
||||||
{
|
{
|
||||||
if (dev->dma_ops)
|
if (dev->dma_ops)
|
||||||
return dev->dma_ops->alloc_coherent(dev, size, dma_handle, flag);
|
return dev->dma_ops->alloc_coherent(dev, size, dma_handle, flag);
|
||||||
return dma_alloc_coherent(dev->dma_device, size, dma_handle, flag);
|
else {
|
||||||
|
dma_addr_t handle;
|
||||||
|
void *ret;
|
||||||
|
|
||||||
|
ret = dma_alloc_coherent(dev->dma_device, size, &handle, flag);
|
||||||
|
*dma_handle = handle;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue