diff options
author | Eric van Gyzen <vangyzen@FreeBSD.org> | 2020-08-31 15:26:01 +0000 |
---|---|---|
committer | Eric van Gyzen <vangyzen@FreeBSD.org> | 2020-08-31 15:26:01 +0000 |
commit | 24e330015929251ffef8a73127850d32fb143296 (patch) | |
tree | 04948133c7be166b1534f457558e51c714f3bff8 /contrib/ofed | |
parent | 5dd47b52e59bbca60bda9388051d45ebbfc3305c (diff) | |
download | src-24e330015929251ffef8a73127850d32fb143296.tar.gz src-24e330015929251ffef8a73127850d32fb143296.zip |
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
Notes
Notes:
svn path=/head/; revision=364991
Diffstat (limited to 'contrib/ofed')
-rw-r--r-- | contrib/ofed/opensm/opensm/osm_perfmgr.c | 16 |
1 files changed, 16 insertions, 0 deletions
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) { |