Hi, This patch fixes SEGFAULT in libibverbs in case when there are no user space drivers found. I've cloned the libibverbs from git://git.openfabrics.org/ofed_1_1_5/libibverbs.git (I hope this is correct)
Example: rping gets segmentation fault in libibverbs when there are no user space drivers found. Here is the output $ rping -s libibverbs: Warning: no userspace device-specific driver found for /sys/class/infiniband_verbs/uverbs0 Segmentation fault rping[28471]: segfault at 3 ip 00007f20c5a51ca6 sp 00007fffddc22b80 error 4 in libibverbs.so.1.0.0[7f20c5a4b000+c000] This is caused by corrupt pointers, driver_name_list and sysfs_dev_list. They are used in maintaining the head of the link list but are not re-initialized to NULL in between the invocations. The previous stale address values are used in read_config() and find_sysfs_dev() calls. Although I am not sure if calls to rdma_create_event_channel() and rdma_create_id() (in rping) should succeed, if there are no user space drivers. That is why there are multiple invocations to ibverbs_init(). Thanks, -- Animesh Signed-off-by: Animesh Trivedi <[email protected]> diff --git a/src/init.c b/src/init.c index 4f0130e..45c360f 100644 --- a/src/init.c +++ b/src/init.c @@ -232,6 +232,7 @@ static void load_drivers(void) free(name->name); free(name); } + driver_name_list=NULL; } static void read_config_file(const char *path) @@ -536,6 +537,7 @@ out: } free(sysfs_dev); } + sysfs_dev_list=NULL; return num_devices; } -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
