From: Dmitry Fleytman Date: Tue, 13 Oct 2015 09:48:18 +0000 (+0300) Subject: e1000e: fix division by zero on jumbo MTUs X-Git-Tag: v4.1.12-105.0.20170622_2100~147 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=0726f8e64e588bfac3c100a9e29427270497146e;p=users%2Fjedix%2Flinux-maple.git e1000e: fix division by zero on jumbo MTUs This patch fixes possible division by zero in receive interrupt handler when working without adaptive interrupt moderation. The adaptive interrupt moderation mechanism is typically disabled on jumbo MTUs. Signed-off-by: Dmitry Fleytman Signed-off-by: Leonid Bloch Tested-by: Aaron Brown Signed-off-by: Jeff Kirsher Orabug: 26243014 (cherry picked from commit b77ac46bbae862dcb3f51296825c940404c69b0f) Signed-off-by: Jack Vogel Reviewed-by: Ethan Zhao --- diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c index 3c7d06210c27b..b0a5b2eaa07a2 100644 --- a/drivers/net/ethernet/intel/e1000e/netdev.c +++ b/drivers/net/ethernet/intel/e1000e/netdev.c @@ -1959,8 +1959,10 @@ static irqreturn_t e1000_intr_msix_rx(int __always_unused irq, void *data) * previous interrupt. */ if (rx_ring->set_itr) { - writel(1000000000 / (rx_ring->itr_val * 256), - rx_ring->itr_register); + u32 itr = rx_ring->itr_val ? + 1000000000 / (rx_ring->itr_val * 256) : 0; + + writel(itr, rx_ring->itr_register); rx_ring->set_itr = 0; }