Skip to contentSkip to conversation

opensm: Only clear SMP beyond end of PortInfo attribute

PATCH Applied Hal Rosenstock 2 participants 2 messages Nov 6, 2009 1 message not in the archive InfiniBand

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 opensm: Only clear SMP beyond end of PortInfo attribute

rather than the whole SMP

---

opensm/opensm/osm_lid_mgr.c +2 -1
index 145be1c..5529033 100644
@@ -865,8 +865,9 @@ static int lid_mgr_set_physp_pi(IN osm_lid_mgr_t * p_mgr,
 	   Third, send the SMP to this physical port.
 	 */
 
-	memset(payload, 0, IB_SMP_DATA_SIZE);
 	memcpy(payload, p_old_pi, sizeof(ib_port_info_t));
+	memset(payload + sizeof(ib_port_info_t), 0,
+	       IB_SMP_DATA_SIZE - sizeof(ib_port_info_t));
 
 	/*
 	   Should never write back a value that is bigger then 3 in
opensm/opensm/osm_link_mgr.c +2 -1
index 2477f2c..bcfc269 100644
@@ -152,8 +152,9 @@ static int link_mgr_set_physp_pi(osm_sm_t * sm, IN osm_physp_t * p_physp,
 			esp0 = TRUE;
 	}
 
-	memset(payload, 0, IB_SMP_DATA_SIZE);
 	memcpy(payload, p_old_pi, sizeof(ib_port_info_t));
+	memset(payload + sizeof(ib_port_info_t), 0,
+	       IB_SMP_DATA_SIZE - sizeof(ib_port_info_t));
 
 	/*
 	   Should never write back a value that is bigger then 3 in
opensm/opensm/osm_pkey_mgr.c +2 -1
index 6666be2..de79e3d 100644
@@ -200,8 +200,9 @@ pkey_mgr_enforce_partition(IN osm_log_t * p_log, osm_sm_t * sm,
 		return IB_SUCCESS;
 	}
 
-	memset(payload, 0, IB_SMP_DATA_SIZE);
 	memcpy(payload, p_pi, sizeof(ib_port_info_t));
+	memset(payload + sizeof(ib_port_info_t), 0,
+	       IB_SMP_DATA_SIZE - sizeof(ib_port_info_t));
 
 	p_pi = (ib_port_info_t *) payload;
 	if (enforce == TRUE)

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

A message that is not in the archive (sent off-list or not yet received): [email protected]