diff options
author | Roland Dreier <rolandd@cisco.com> | 2006-12-15 22:57:26 +0100 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2006-12-15 22:57:26 +0100 |
commit | c59a3da1342ff456e5123361739bc331446cda21 (patch) | |
tree | a75aa1d937a774f53e1875849082d28683c859ec | |
parent | [PATCH] ib_verbs: Use explicit if-else statements to avoid errors with do-whi... (diff) | |
download | linux-c59a3da1342ff456e5123361739bc331446cda21.tar.xz linux-c59a3da1342ff456e5123361739bc331446cda21.zip |
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>
-rw-r--r-- | include/rdma/ib_verbs.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index 3c2e10574b23..0bfa3328d686 100644 --- a/include/rdma/ib_verbs.h +++ b/include/rdma/ib_verbs.h @@ -1639,7 +1639,14 @@ static inline void *ib_dma_alloc_coherent(struct ib_device *dev, { if (dev->dma_ops) 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; + } } /** |