[openib-general] [PATCH] librdmacm: ucma_init reads past end of device_list
Boyd R. Faulkner
faulkner at opengridcomputing.com
Thu Jun 1 16:37:35 PDT 2006
The code currently in place seems to expect there to be a null element at the
end of the dev_list to trigger the end of the loop. ibv_get_device_list
does not provide such an entry, but the number of entries is
available. This patch retrieves that number and loops based on it.
If ibv_get_device_list should return a list with a null element at the end
then it is not working correctly. This patch will work with either of the
possible intended behaviors of ibv_get_device_list.
Roland has said that ibv_get_device_list should return a list with a null
element at the end.
Fix spelling of "liste".
Signed-off-by: Boyd Faulkner <faulkner at opengridcomputing.com>
Index: cma.c
===================================================================
--- cma.c (revision 7568)
+++ cma.c (working copy)
@@ -183,6 +183,7 @@
static int ucma_init(void)
{
int i;
+ int num_devices;
struct cma_device *cma_dev;
struct ibv_device_attr attr;
int ret;
@@ -201,14 +202,14 @@
goto err;
}
- dev_list = ibv_get_device_list(NULL);
+ dev_list = ibv_get_device_list(&num_devices);
if (!dev_list) {
- printf("CMA: unable to get RDMA device liste\n");
+ printf("CMA: unable to get RDMA device list\n");
ret = -ENODEV;
goto err;
}
- for (i = 0; dev_list[i]; ++i) {
+ for (i = 0; i < num_devices; ++i) {
cma_dev = malloc(sizeof *cma_dev);
if (!cma_dev) {
ret = -ENOMEM;
More information about the general
mailing list