123456789101112131415161718192021222324252627 |
- 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
- @@ -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);
- + put_page(virt_to_head_page(buf));
- + break;
- + }
- +
- /* Omit CRC. */
- len -= ETH_FCS_LEN;
-
|