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.
28 lines
761 B
28 lines
761 B
9 years ago
|
From: Felix Fietkau <nbd@nbd.name>
|
||
10 years ago
|
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
|
||
|
|
||
9 years ago
|
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||
10 years ago
|
---
|
||
|
|
||
|
--- a/drivers/net/ethernet/broadcom/bgmac.c
|
||
|
+++ b/drivers/net/ethernet/broadcom/bgmac.c
|
||
10 years ago
|
@@ -445,6 +445,13 @@ static int bgmac_dma_rx_read(struct bgma
|
||
10 years ago
|
break;
|
||
|
}
|
||
|
|
||
|
+ if (len > BGMAC_RX_ALLOC_SIZE) {
|
||
|
+ bgmac_err(bgmac, "Found oversized packet at slot %d, DMA issue!\n",
|
||
|
+ ring->start);
|
||
10 years ago
|
+ put_page(virt_to_head_page(buf));
|
||
10 years ago
|
+ break;
|
||
|
+ }
|
||
|
+
|
||
|
/* Omit CRC. */
|
||
|
len -= ETH_FCS_LEN;
|
||
|
|