RDMA/cm: Set num_paths when manually assigning path records
authorSean Hefty <sean.hefty@intel.com>
Thu, 25 Mar 2010 19:12:36 +0000 (19:12 +0000)
committerRoland Dreier <rolandd@cisco.com>
Wed, 7 Apr 2010 21:13:22 +0000 (14:13 -0700)
When manually assigning the path records to use for a connection, save
the number of paths that were set.  Otherwise, checks against num_path
will show 0, even though path record data is available.

This was discovered by manually setting the path records from user
space, then querying the kernel to see if the correct path records
were assigned, only to discover that the kernel returned 0 path
records to the query.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/core/cma.c

index 875e34e0b235d93a68b44290fbc7f1417104773c..09b4b13fdbee05eb697c556e1c4a45ec2d5a520d 100644 (file)
@@ -1683,6 +1683,7 @@ int rdma_set_ib_paths(struct rdma_cm_id *id,
        }
 
        memcpy(id->route.path_rec, path_rec, sizeof *path_rec * num_paths);
        }
 
        memcpy(id->route.path_rec, path_rec, sizeof *path_rec * num_paths);
+       id->route.num_paths = num_paths;
        return 0;
 err:
        cma_comp_exch(id_priv, CMA_ROUTE_RESOLVED, CMA_ADDR_RESOLVED);
        return 0;
 err:
        cma_comp_exch(id_priv, CMA_ROUTE_RESOLVED, CMA_ADDR_RESOLVED);