e1000e: fix division by zero on jumbo MTUs
authorDmitry Fleytman <dmitry@daynix.com>
Tue, 13 Oct 2015 09:48:18 +0000 (12:48 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 15 Sep 2016 06:27:38 +0000 (08:27 +0200)
[ Upstream commit b77ac46bbae862dcb3f51296825c940404c69b0f ]

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 <dmitry@daynix.com>
Signed-off-by: Leonid Bloch <leonid@daynix.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/ethernet/intel/e1000e/netdev.c

index 0a854a47d31a77ef0723231dd75e3aceddc5d6b0..80ec587d510efeeeb758d8566db3cfbe9ec2acb1 100644 (file)
@@ -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;
        }