[PATCH] fmr pool: remove unnecessary pointer dereference
authorMichael S. Tsirkin <mst@mellanox.co.il>
Fri, 14 Jul 2006 07:23:55 +0000 (00:23 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Sat, 15 Jul 2006 04:53:51 +0000 (21:53 -0700)
ib_fmr_pool_map_phys gets the virtual address by pointer but never writes
there, and users (e.g.  srp) seem to assume this and ignore the value
returned.  This patch cleans up the API to get the VA by value, and updates
all users.

Signed-off-by: Michael S. Tsirkin <mst@mellanox.co.il>
Acked-by: Roland Dreier <rolandd@cisco.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/infiniband/core/fmr_pool.c
drivers/infiniband/ulp/iser/iser_verbs.c
drivers/infiniband/ulp/srp/ib_srp.c
include/rdma/ib_fmr_pool.h

index 615fe9cc6c568fe9b42dffdf007fda3254c81e1e..86a3b2d401dbaf72bdaadd3533fc9594f67fda03 100644 (file)
@@ -426,7 +426,7 @@ EXPORT_SYMBOL(ib_flush_fmr_pool);
 struct ib_pool_fmr *ib_fmr_pool_map_phys(struct ib_fmr_pool *pool_handle,
                                         u64                *page_list,
                                         int                 list_len,
-                                        u64                *io_virtual_address)
+                                        u64                 io_virtual_address)
 {
        struct ib_fmr_pool *pool = pool_handle;
        struct ib_pool_fmr *fmr;
@@ -440,7 +440,7 @@ struct ib_pool_fmr *ib_fmr_pool_map_phys(struct ib_fmr_pool *pool_handle,
        fmr = ib_fmr_cache_lookup(pool,
                                  page_list,
                                  list_len,
-                                 *io_virtual_address);
+                                 io_virtual_address);
        if (fmr) {
                /* found in cache */
                ++fmr->ref_count;
@@ -464,7 +464,7 @@ struct ib_pool_fmr *ib_fmr_pool_map_phys(struct ib_fmr_pool *pool_handle,
        spin_unlock_irqrestore(&pool->pool_lock, flags);
 
        result = ib_map_phys_fmr(fmr->fmr, page_list, list_len,
-                                *io_virtual_address);
+                                io_virtual_address);
 
        if (result) {
                spin_lock_irqsave(&pool->pool_lock, flags);
@@ -481,7 +481,7 @@ struct ib_pool_fmr *ib_fmr_pool_map_phys(struct ib_fmr_pool *pool_handle,
        fmr->ref_count = 1;
 
        if (pool->cache_bucket) {
-               fmr->io_virtual_address = *io_virtual_address;
+               fmr->io_virtual_address = io_virtual_address;
                fmr->page_list_len      = list_len;
                memcpy(fmr->page_list, page_list, list_len * sizeof(*page_list));
 
index ff117bbf81b40baee27782f123eb66a5161c1f7a..72febf1f8ff8d74b974d12333fe4e7e4a81ef50e 100644 (file)
@@ -594,7 +594,7 @@ int iser_reg_page_vec(struct iser_conn     *ib_conn,
        mem  = ib_fmr_pool_map_phys(ib_conn->fmr_pool,
                                    page_list,
                                    page_vec->length,
-                                   &io_addr);
+                                   io_addr);
 
        if (IS_ERR(mem)) {
                status = (int)PTR_ERR(mem);
index 619118080bcb64fa7b350e89dfff03689adc7d0d..8f472e7113b41afcd4b35f35a0ea7ae0f55d93fe 100644 (file)
@@ -615,7 +615,7 @@ static int srp_map_fmr(struct srp_device *dev, struct scatterlist *scat,
                                (sg_dma_address(&scat[i]) & dev->fmr_page_mask) + j;
 
        req->fmr = ib_fmr_pool_map_phys(dev->fmr_pool,
-                                       dma_pages, page_cnt, &io_addr);
+                                       dma_pages, page_cnt, io_addr);
        if (IS_ERR(req->fmr)) {
                ret = PTR_ERR(req->fmr);
                req->fmr = NULL;
index 4ace54cd0ccee3233223e9c8b3ee7c0aac222641..00dadbf94e1d75cca1d9004a9b997efe3eb103c6 100644 (file)
@@ -88,7 +88,7 @@ int ib_flush_fmr_pool(struct ib_fmr_pool *pool);
 struct ib_pool_fmr *ib_fmr_pool_map_phys(struct ib_fmr_pool *pool_handle,
                                         u64                *page_list,
                                         int                 list_len,
-                                        u64                *io_virtual_address);
+                                        u64                 io_virtual_address);
 
 int ib_fmr_pool_unmap(struct ib_pool_fmr *fmr);