Segfault happens when yet non-initialized lid_matrix tables are
accessed - with up/down routing engine when root nodes are provided by
user and lid matrices are not pre-created. There is the fix.

Signed-off-by: Sasha Khapyorsky <[EMAIL PROTECTED]>
---
 osm/include/opensm/osm_matrix.h |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/osm/include/opensm/osm_matrix.h b/osm/include/opensm/osm_matrix.h
index 9a940be..bf28e83 100644
--- a/osm/include/opensm/osm_matrix.h
+++ b/osm/include/opensm/osm_matrix.h
@@ -236,7 +236,10 @@ osm_lid_matrix_get(
        IN const uint8_t port_num )
 {
        CL_ASSERT( port_num < p_lmx->num_ports );
-       CL_ASSERT( lid_ho <cl_vector_get_size(&p_lmx->lid_vec) );
+
+       if ( lid_ho >= cl_vector_get_size(&p_lmx->lid_vec) )
+               return OSM_NO_PATH;
+
        return( ((uint8_t *)cl_vector_get_ptr(
                        &p_lmx->lid_vec, lid_ho ))[port_num] );
 }
@@ -273,7 +276,8 @@ static inline uint16_t
 osm_lid_matrix_get_max_lid_ho(
        IN const osm_lid_matrix_t* const p_lmx )
 {
-       return( (uint16_t)(cl_vector_get_size( &p_lmx->lid_vec ) - 1 ) );
+       return cl_vector_get_size( &p_lmx->lid_vec ) ?
+               (uint16_t)(cl_vector_get_size( &p_lmx->lid_vec ) - 1) : 0;
 }
 /*
 * PARAMETERS
-- 
1.4.4.2.gfc82d


_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to