ramips: fix cd-poll sd card remove randomly
[openwrt/openwrt.git] / target / linux / generic / patches-3.18 / 077-08-bgmac-add-check-for-oversized-packets.patch
index 89e1a3236885cac4da6aeb4cfe0fe3e22fe758ac..6bb474768605c397e74f0f426d56a29883ff6be0 100644 (file)
@@ -1,4 +1,4 @@
-From: Felix Fietkau <nbd@openwrt.org>
+From: Felix Fietkau <nbd@nbd.name>
 Date: Sun, 12 Apr 2015 22:28:20 +0200
 Subject: [PATCH] bgmac: add check for oversized packets
 
@@ -6,19 +6,19 @@ In very rare cases, the MAC can catch an internal buffer that is bigger
 than it's supposed to be. Instead of crashing the kernel, simply pass
 the buffer back to the hardware
 
-Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
 ---
 
 --- a/drivers/net/ethernet/broadcom/bgmac.c
 +++ b/drivers/net/ethernet/broadcom/bgmac.c
-@@ -428,6 +428,13 @@ static int bgmac_dma_rx_read(struct bgma
+@@ -445,6 +445,13 @@ static int bgmac_dma_rx_read(struct bgma
                                break;
                        }
  
 +                      if (len > BGMAC_RX_ALLOC_SIZE) {
 +                              bgmac_err(bgmac, "Found oversized packet at slot %d, DMA issue!\n",
 +                                        ring->start);
-+                              kfree(buf);
++                              put_page(virt_to_head_page(buf));
 +                              break;
 +                      }
 +