You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
767 B
27 lines
767 B
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;
|
|
|
|
|