From 125c2f9542e86d6f40c3839b4280d08561ffb242 Mon Sep 17 00:00:00 2001 From: Mikhail Yurasov Date: Wed, 12 Aug 2026 20:38:00 -0700 Subject: [PATCH] opensm/osm_multicast.c: Treat send only full members like full members on partial leave to avoid MLID leak Signed-off-by: Mikhail Yurasov --- opensm/osm_multicast.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/opensm/osm_multicast.c b/opensm/osm_multicast.c index 38f4a680..62338dbe 100644 --- a/opensm/osm_multicast.c +++ b/opensm/osm_multicast.c @@ -370,9 +370,11 @@ boolean_t osm_mgrp_remove_port(osm_subn_t * subn, osm_log_t * log, osm_mgrp_t * cl_ntoh16(mgrp->mlid)); } - if (new_join_state & IB_JOIN_STATE_FULL || + full_join_state = IB_JOIN_STATE_FULL | IB_JOIN_STATE_SEND_ONLY_FULL; + + if (new_join_state & full_join_state || (new_join_state && - (mgrp->full_members > (port_join_state & IB_JOIN_STATE_FULL) ? 1 : 0))) { + (mgrp->full_members > ((port_join_state & full_join_state) ? 1 : 0)))) { mcm_alias_guid->scope_state = new_join_state | (mcm_alias_guid->scope_state & 0xf0); OSM_LOG(log, OSM_LOG_DEBUG, @@ -404,8 +406,6 @@ boolean_t osm_mgrp_remove_port(osm_subn_t * subn, osm_log_t * log, osm_mgrp_t * osm_mcm_alias_guid_delete(&mcm_alias_guid); } - full_join_state = IB_JOIN_STATE_FULL | IB_JOIN_STATE_SEND_ONLY_FULL; - /* no more full members so the group will be deleted after re-route but only if it is not a well known group */ if ((port_join_state & full_join_state) && !(new_join_state & full_join_state) &&