If mkeys are protected, sweep should always be enabled and set to an interval < the lease timeout, to ensure a missed trap doesn't lead to mkey exposure.
Signed-off-by: Jim Foraker <[email protected]> --- opensm/osm_subnet.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/opensm/osm_subnet.c b/opensm/osm_subnet.c index ddee955..3f336d8 100644 --- a/opensm/osm_subnet.c +++ b/opensm/osm_subnet.c @@ -1502,6 +1502,26 @@ int osm_subn_verify_config(IN osm_subn_opt_t * p_opts) "instead\n", p_opts->m_key_protect_bits, 2); p_opts->m_key_protect_bits = 2; } + if (p_opts->m_key_protect_bits && p_opts->m_key_lease_period) { + if (!p_opts->sweep_interval) { + log_report(" Sweep disabled with protected mkey " + "leases in effect; re-enabling sweeping " + "with interval %u\n", + cl_ntoh16(p_opts->m_key_lease_period) - 1); + p_opts->sweep_interval = + cl_ntoh16(p_opts->m_key_lease_period) - 1; + } + if (p_opts->sweep_interval >= + cl_ntoh16(p_opts->m_key_lease_period)) { + log_report(" Sweep interval %u >= mkey lease period " + "%u. Setting lease period to %u\n", + p_opts->sweep_interval, + cl_ntoh16(p_opts->m_key_lease_period), + p_opts->sweep_interval + 1); + p_opts->m_key_lease_period = + cl_hton16(p_opts->sweep_interval + 1); + } + } if (p_opts->root_guid_file != NULL) { FILE *root_file = fopen(p_opts->root_guid_file, "r"); -- 1.7.9.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
