X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=target%2Flinux%2Fgeneric%2Fpatches-3.18%2F077-08-bgmac-add-check-for-oversized-packets.patch;h=6bb474768605c397e74f0f426d56a29883ff6be0;hb=de350550ef648d9728351b986b0516fa29465c45;hp=89e1a3236885cac4da6aeb4cfe0fe3e22fe758ac;hpb=1bf8e555bb3466baf775113ab27aa8f05f0e6aa7;p=openwrt%2Fopenwrt.git diff --git a/target/linux/generic/patches-3.18/077-08-bgmac-add-check-for-oversized-packets.patch b/target/linux/generic/patches-3.18/077-08-bgmac-add-check-for-oversized-packets.patch index 89e1a32368..6bb4747686 100644 --- a/target/linux/generic/patches-3.18/077-08-bgmac-add-check-for-oversized-packets.patch +++ b/target/linux/generic/patches-3.18/077-08-bgmac-add-check-for-oversized-packets.patch @@ -1,4 +1,4 @@ -From: Felix Fietkau +From: Felix Fietkau Date: Sun, 12 Apr 2015 22:28:20 +0200 Subject: [PATCH] bgmac: add check for oversized packets @@ -6,19 +6,19 @@ 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 +Signed-off-by: Felix Fietkau --- --- a/drivers/net/ethernet/broadcom/bgmac.c +++ b/drivers/net/ethernet/broadcom/bgmac.c -@@ -428,6 +428,13 @@ static int bgmac_dma_rx_read(struct bgma +@@ -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); -+ kfree(buf); ++ put_page(virt_to_head_page(buf)); + break; + } +