Skip to contentSkip to conversation

osm_link_mgr.c: fix uninitialized variable usage

PATCH New Hal Rosenstock 1 participant 1 message Nov 11, 2013 InfiniBand

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 osm_link_mgr.c: fix uninitialized variable usage

From: Alex Netes <alexne-VPRAkNaXOzVWk0Htik3J/[email protected]>

PortInfo may be sent without the correct M_Key

---
 opensm/osm_link_mgr.c |   16 +++++++++++-----
 1 files changed, 11 insertions(+), 5 deletions(-)
opensm/osm_link_mgr.c +11 -5
index 2420e4f..5fdb7ca 100644
@@ -149,6 +149,8 @@ static int link_mgr_set_physp_pi(osm_sm_t * sm, IN osm_physp_t * p_physp,
 			goto Exit;
 		}
 
+		physp0 = osm_node_get_physp_ptr(p_physp->p_node, 0);
+
 		if (ib_switch_info_is_enhanced_port0(&p_node->sw->switch_info)
 		    == FALSE) {
 
@@ -190,6 +192,13 @@ static int link_mgr_set_physp_pi(osm_sm_t * sm, IN osm_physp_t * p_physp,
 	p_pi->state_info2 = 0x02;
 	ib_port_info_set_port_state(p_pi, port_state);
 
+	/* Determine ports' M_Key */
+	if (osm_node_get_type(p_physp->p_node) == IB_NODE_TYPE_SWITCH &&
+	    osm_physp_get_port_num(p_physp) != 0)
+		m_key = ib_port_info_get_m_key(&physp0->port_info);
+	else
+		m_key = ib_port_info_get_m_key(p_pi);
+
 	/* Check whether this is base port0 smsl handling only */
 	if (port_num == 0 && esp0 == FALSE) {
 		ib_port_info_set_master_smsl(p_pi, smsl);
@@ -369,13 +378,10 @@ static int link_mgr_set_physp_pi(osm_sm_t * sm, IN osm_physp_t * p_physp,
 
 		if (osm_node_get_type(p_physp->p_node) == IB_NODE_TYPE_SWITCH &&
 		    osm_physp_get_port_num(p_physp) != 0) {
-			physp0 = osm_node_get_physp_ptr(p_physp->p_node, 0);
 			cap_mask = physp0->port_info.capability_mask;
-			m_key = ib_port_info_get_m_key(&physp0->port_info);
-		} else {
+		} else
 			cap_mask = p_pi->capability_mask;
-			m_key = ib_port_info_get_m_key(p_pi);
-		}
+
 		if (cap_mask & IB_PORT_CAP_HAS_EXT_SPEEDS)
 			issue_ext = 1;
 
Signature · 6 lines
1.7.8.2

--
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