diff mbox

opensm: Only clear SMP beyond end of PortInfo attribute

Message ID 20091106141402.GA19699@comcast.net (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Hal Rosenstock Nov. 6, 2009, 2:14 p.m. UTC
None
diff mbox

Patch

diff --git a/opensm/opensm/osm_lid_mgr.c b/opensm/opensm/osm_lid_mgr.c
index 145be1c..5529033 100644
--- a/opensm/opensm/osm_lid_mgr.c
+++ b/opensm/opensm/osm_lid_mgr.c
@@ -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
diff --git a/opensm/opensm/osm_link_mgr.c b/opensm/opensm/osm_link_mgr.c
index 2477f2c..bcfc269 100644
--- a/opensm/opensm/osm_link_mgr.c
+++ b/opensm/opensm/osm_link_mgr.c
@@ -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
diff --git a/opensm/opensm/osm_pkey_mgr.c b/opensm/opensm/osm_pkey_mgr.c
index 6666be2..de79e3d 100644
--- a/opensm/opensm/osm_pkey_mgr.c
+++ b/opensm/opensm/osm_pkey_mgr.c
@@ -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)