Hi Sasha,
Re-fixing our recent fix in handling multicast leave.
When updating the state will cause port removal, port
object will be freed, so bad things will happen if we
try using it's state.
Signed-off-by: Yevgeny Kliteynik <[EMAIL PROTECTED]>
---
opensm/opensm/osm_sa_mcmember_record.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/opensm/opensm/osm_sa_mcmember_record.c
b/opensm/opensm/osm_sa_mcmember_record.c
index 4e77f06..99aee1b 100644
--- a/opensm/opensm/osm_sa_mcmember_record.c
+++ b/opensm/opensm/osm_sa_mcmember_record.c
@@ -1085,10 +1085,14 @@ __osm_mcmr_rcv_leave_mgrp(IN osm_sa_t * sa,
goto Exit;
}
+ /* store state - we'll need it if the port is removed */
+ mcmember_rec.scope_state = p_mcm_port->scope_state;
+
/* remove port or update join state */
removed = osm_mgrp_remove_port(sa->p_subn, sa->p_log, p_mgrp,
p_mcm_port,
p_recvd_mcmember_rec->scope_state&0x0F);
- mcmember_rec.scope_state = p_mcm_port->scope_state;
+ if (!removed)
+ mcmember_rec.scope_state = p_mcm_port->scope_state;
CL_PLOCK_RELEASE(sa->p_lock);
--
1.5.1.4
_______________________________________________
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