mirror of https://github.com/hak5/openwrt.git
29 lines
802 B
Diff
29 lines
802 B
Diff
|
From: Felix Fietkau <nbd@openwrt.org>
|
||
|
Date: Sun, 12 Apr 2015 22:28:20 +0200
|
||
|
Subject: [PATCH] bgmac: add check for oversized packets
|
||
|
|
||
|
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>
|
||
|
---
|
||
|
|
||
|
--- a/drivers/net/ethernet/broadcom/bgmac.c
|
||
|
+++ b/drivers/net/ethernet/broadcom/bgmac.c
|
||
|
@@ -422,6 +422,14 @@ 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);
|
||
|
+ rx->len = cpu_to_le16(0xdead);
|
||
|
+ rx->flags = cpu_to_le16(0xbeef);
|
||
|
+ break;
|
||
|
+ }
|
||
|
+
|
||
|
/* Omit CRC. */
|
||
|
len -= ETH_FCS_LEN;
|
||
|
|