Skip to content

Commit

Permalink
[PATCH] fmr pool: remove unnecessary pointer dereference
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Michael S. Tsirkin authored and Linus Torvalds committed Jul 15, 2006
1 parent 74f76fb commit adfaa88
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 7 deletions.
8 changes: 4 additions & 4 deletions drivers/infiniband/core/fmr_pool.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -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);
Expand All @@ -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));

Expand Down
2 changes: 1 addition & 1 deletion drivers/infiniband/ulp/iser/iser_verbs.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion drivers/infiniband/ulp/srp/ib_srp.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion include/rdma/ib_fmr_pool.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down

0 comments on commit adfaa88

Please sign in to comment.