aboutsummaryrefslogtreecommitdiff
path: root/contrib/ofed
diff options
context:
space:
mode:
authorEric van Gyzen <vangyzen@FreeBSD.org>2020-08-31 15:26:01 +0000
committerEric van Gyzen <vangyzen@FreeBSD.org>2020-08-31 15:26:01 +0000
commit24e330015929251ffef8a73127850d32fb143296 (patch)
tree04948133c7be166b1534f457558e51c714f3bff8 /contrib/ofed
parent5dd47b52e59bbca60bda9388051d45ebbfc3305c (diff)
downloadsrc-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.c16
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) {