74d00a8c38
* properly format/comment all patches * merge debloat patches * merge Kconfig patches * merge swconfig patches * merge hotplug patches * drop 200-fix_localversion.patch - upstream * drop 222-arm_zimage_none.patch - unused * drop 252-mv_cesa_depends.patch - no longer required * drop 410-mtd-move-forward-declaration-of-struct-mtd_info.patch - unused * drop 661-fq_codel_keep_dropped_stats.patch - outdated * drop 702-phy_add_aneg_done_function.patch - upstream * drop 840-rtc7301.patch - unused * drop 841-rtc_pt7c4338.patch - upstream * drop 921-use_preinit_as_init.patch - unused * drop spio-gpio-old and gpio-mmc - unused Signed-off-by: John Crispin <john@phrozen.org>
28 lines
761 B
Diff
28 lines
761 B
Diff
From: Felix Fietkau <nbd@nbd.name>
|
|
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@nbd.name>
|
|
---
|
|
|
|
--- 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;
|
|
|