From 40d2864c8ae4db307b9d6c3482af1f4e349e3cb7 Mon Sep 17 00:00:00 2001 From: Andrew Rybchenko Date: Thu, 7 Feb 2019 16:29:41 +0000 Subject: [PATCH] net/sfc/base: avoid division by 0 if no event queue timers 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 --- 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 69224cbc5f..7b5130291d 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.20.1