From 24e330015929251ffef8a73127850d32fb143296 Mon Sep 17 00:00:00 2001 From: Eric van Gyzen Date: Mon, 31 Aug 2020 15:26:01 +0000 Subject: [PATCH] opensm: Fix a possible dereference of a NULL pointer Reported by: Coverity Reviewed by: hselasky, kib MFC after: 2 weeks Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D26233 --- contrib/ofed/opensm/opensm/osm_perfmgr.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/contrib/ofed/opensm/opensm/osm_perfmgr.c b/contrib/ofed/opensm/opensm/osm_perfmgr.c index 6cd8bb7cfcff..e7cd0ebb5e3e 100644 --- a/contrib/ofed/opensm/opensm/osm_perfmgr.c +++ b/contrib/ofed/opensm/opensm/osm_perfmgr.c @@ -1311,6 +1311,14 @@ static void perfmgr_check_overflow(osm_perfmgr_t * pm, cl_plock_acquire(&pm->osm->lock); p_node = osm_get_node_by_guid(pm->subn, cl_hton64(mon_node->guid)); + if (!p_node) { + OSM_LOG(pm->log, OSM_LOG_ERROR, + "ERR 5407: Node \"%s\" (guid 0x%" PRIx64 + ") no longer exists so removing from PerfMgr" + " monitoring\n", + mon_node->name, mon_node->guid); + goto Exit; + } lid = get_lid(p_node, port, mon_node); cl_plock_release(&pm->osm->lock); if (lid == 0) { @@ -1402,6 +1410,14 @@ static void perfmgr_check_pce_overflow(osm_perfmgr_t * pm, cl_plock_acquire(&pm->osm->lock); p_node = osm_get_node_by_guid(pm->subn, cl_hton64(mon_node->guid)); + if (!p_node) { + OSM_LOG(pm->log, OSM_LOG_ERROR, + "ERR 5407: Node \"%s\" (guid 0x%" PRIx64 + ") no longer exists so removing from PerfMgr" + " monitoring\n", + mon_node->name, mon_node->guid); + goto Exit; + } lid = get_lid(p_node, port, mon_node); cl_plock_release(&pm->osm->lock); if (lid == 0) {