Signed-off-by: Hal Rosenstock <[email protected]> --- diff --git a/opensm/opensm/osm_ucast_lash.c b/opensm/opensm/osm_ucast_lash.c index 7133e25..a139bdb 100644 --- a/opensm/opensm/osm_ucast_lash.c +++ b/opensm/opensm/osm_ucast_lash.c @@ -296,8 +296,8 @@ static void shortest_path(lash_t * p_lash, int ir) cl_list_destroy(&bfsq); } -static void generate_routing_func_for_mst(lash_t * p_lash, int sw_id, - reachable_dest_t ** destinations) +static boolean_t generate_routing_func_for_mst(lash_t * p_lash, int sw_id, + reachable_dest_t ** destinations) { int i, next_switch; switch_t *sw = p_lash->switches[sw_id]; @@ -306,7 +306,8 @@ static void generate_routing_func_for_mst(lash_t * p_lash, int sw_id, for (i = 0; i < num_channels; i++) { next_switch = sw->dij_channels[i]; - generate_routing_func_for_mst(p_lash, next_switch, &dest); + if (!generate_routing_func_for_mst(p_lash, next_switch, &dest)) + return FALSE; i_dest = dest; prev = i_dest; @@ -327,9 +328,15 @@ static void generate_routing_func_for_mst(lash_t * p_lash, int sw_id, } i_dest = (reachable_dest_t *) malloc(sizeof(reachable_dest_t)); - i_dest->switch_id = sw->id; - i_dest->next = concat_dest; + if (i_dest) { + i_dest->switch_id = sw->id; + i_dest->next = concat_dest; + } *destinations = i_dest; + if (i_dest) + return TRUE; + else + return FALSE; } static void generate_cdg_for_sp(lash_t * p_lash, int sw, int dest_switch, @@ -707,6 +714,8 @@ static int init_lash_structures(lash_t * p_lash) /* initialise cdg_vertex_matrix[num_switches][num_switches][num_switches] */ p_lash->cdg_vertex_matrix = (cdg_vertex_t ****) malloc(vl_min * sizeof(cdg_vertex_t ****)); + if (p_lash->cdg_vertex_matrix == NULL) + goto Exit_Mem_Error; for (i = 0; i < vl_min; i++) { p_lash->cdg_vertex_matrix[i] = (cdg_vertex_t ***) malloc(num_switches * @@ -800,7 +809,11 @@ static int lash_core(lash_t * p_lash) for (i = 0; i < num_switches; i++) { shortest_path(p_lash, i); - generate_routing_func_for_mst(p_lash, i, &dests); + if (!generate_routing_func_for_mst(p_lash, i, &dests)) { + OSM_LOG(p_log, OSM_LOG_ERROR, + "generate_routing_func_for_mst failed\n"); + goto Exit; + } idest = dests; while (idest != NULL) { _______________________________________________ general mailing list [email protected] http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general
To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
