[dpdk-dev] [PATCH 36/38] net/sfc/base: avoid division by 0 if no event queue timers
Andrew Rybchenko
arybchenko at solarflare.com
Thu Feb 7 17:29:41 CET 2019
If event queue timers are not supported, enc_evq_timer_quantum_ns and
enc_evq_timer_max_us should be set to 0. Make sure that division by 0
does not happen in libefx, if public function efx_ev_usecs_to_ticks()
is used in this case.
Signed-off-by: Andrew Rybchenko <arybchenko at solarflare.com>
---
drivers/net/sfc/base/efx_ev.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/net/sfc/base/efx_ev.c b/drivers/net/sfc/base/efx_ev.c
index 69224cbc5..7b5130291 100644
--- a/drivers/net/sfc/base/efx_ev.c
+++ b/drivers/net/sfc/base/efx_ev.c
@@ -566,6 +566,12 @@ efx_ev_usecs_to_ticks(
{
efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
unsigned int ticks;
+ efx_rc_t rc;
+
+ if (encp->enc_evq_timer_quantum_ns == 0) {
+ rc = ENOTSUP;
+ goto fail1;
+ }
/* Convert microseconds to a timer tick count */
if (us == 0)
@@ -577,6 +583,10 @@ efx_ev_usecs_to_ticks(
*ticksp = ticks;
return (0);
+
+fail1:
+ EFSYS_PROBE1(fail1, efx_rc_t, rc);
+ return (rc);
}
__checkReturn efx_rc_t
--
2.17.1
More information about the dev
mailing list