timer: fix null access if not initialized
authorErik Gabriel Carrillo <erik.g.carrillo@intel.com>
Mon, 15 Jul 2019 15:39:31 +0000 (10:39 -0500)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 18 Jul 2019 21:14:53 +0000 (23:14 +0200)
If the timer subsystem is not initialized before rte_timer_manage (for
example) is invoked, a pointer to a shared hugepage memory region will
still be null and dereferenced when it is checked for validity; handle
this case.

Fixes: c0749f7096c7 ("timer: allow management in shared memory")
Cc: stable@dpdk.org
Signed-off-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
lib/librte_timer/rte_timer.c

index 71dffd2..bdcf05d 100644 (file)
@@ -85,7 +85,8 @@ static struct rte_timer_data default_timer_data;
 static inline int
 timer_data_valid(uint32_t id)
 {
-       return !!(rte_timer_data_arr[id].internal_flags & FL_ALLOCATED);
+       return rte_timer_data_arr &&
+               (rte_timer_data_arr[id].internal_flags & FL_ALLOCATED);
 }
 
 /* validate ID and retrieve timer data pointer, or return error value */