aboutsummaryrefslogtreecommitdiffstats
path: root/main/linux-grsec/via-velocity-length-check.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/linux-grsec/via-velocity-length-check.patch')
-rw-r--r--main/linux-grsec/via-velocity-length-check.patch86
1 files changed, 0 insertions, 86 deletions
diff --git a/main/linux-grsec/via-velocity-length-check.patch b/main/linux-grsec/via-velocity-length-check.patch
deleted file mode 100644
index 163bf54494..0000000000
--- a/main/linux-grsec/via-velocity-length-check.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From patchwork Mon Nov 16 12:36:32 2015
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 8bit
-Subject: via-velocity: unconditionally drop frames with bad l2 length
-From: =?utf-8?q?Timo_Ter=C3=A4s?= <timo.teras@iki.fi>
-X-Patchwork-Id: 544990
-Message-Id: <1447677392-17400-1-git-send-email-timo.teras@iki.fi>
-To: Francois Romieu <romieu@fr.zoreil.com>, netdev@vger.kernel.org
-Cc: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
-Date: Mon, 16 Nov 2015 14:36:32 +0200
-
-By default the driver allowed incorrect frames to be received. What is
-worse the code does not handle very short frames correctly. The FCS
-length is unconditionally subtracted, and the underflow can cause
-skb_put to be called with large number after implicit cast to unsigned.
-And indeed, an skb_over_panic() was observed with via-velocity.
-
-This removes the module parameter as it does not work in it's
-current state, and should be implemented via NETIF_F_RXALL if needed.
-
-Suggested-by: Francois Romieu <romieu@fr.zoreil.com>
-Signed-off-by: Timo Teräs <timo.teras@iki.fi>
----
-Francois, is this something like you had in mind? I can try give this
-a test spin in the known bad location, if this looks otherwise ok.
-
- drivers/net/ethernet/via/via-velocity.c | 24 +++---------------------
- 1 file changed, 3 insertions(+), 21 deletions(-)
-
-diff --git a/drivers/net/ethernet/via/via-velocity.c b/drivers/net/ethernet/via/via-velocity.c
-index a43e849..03ce386 100644
---- a/drivers/net/ethernet/via/via-velocity.c
-+++ b/drivers/net/ethernet/via/via-velocity.c
-@@ -345,13 +345,6 @@ VELOCITY_PARAM(flow_control, "Enable flow control ability");
- */
- VELOCITY_PARAM(speed_duplex, "Setting the speed and duplex mode");
-
--#define VAL_PKT_LEN_DEF 0
--/* ValPktLen[] is used for setting the checksum offload ability of NIC.
-- 0: Receive frame with invalid layer 2 length (Default)
-- 1: Drop frame with invalid layer 2 length
--*/
--VELOCITY_PARAM(ValPktLen, "Receiving or Drop invalid 802.3 frame");
--
- #define WOL_OPT_DEF 0
- #define WOL_OPT_MIN 0
- #define WOL_OPT_MAX 7
-@@ -494,7 +487,6 @@ static void velocity_get_options(struct velocity_opt *opts, int index,
-
- velocity_set_int_opt(&opts->flow_cntl, flow_control[index], FLOW_CNTL_MIN, FLOW_CNTL_MAX, FLOW_CNTL_DEF, "flow_control", devname);
- velocity_set_bool_opt(&opts->flags, IP_byte_align[index], IP_ALIG_DEF, VELOCITY_FLAGS_IP_ALIGN, "IP_byte_align", devname);
-- velocity_set_bool_opt(&opts->flags, ValPktLen[index], VAL_PKT_LEN_DEF, VELOCITY_FLAGS_VAL_PKT_LEN, "ValPktLen", devname);
- velocity_set_int_opt((int *) &opts->spd_dpx, speed_duplex[index], MED_LNK_MIN, MED_LNK_MAX, MED_LNK_DEF, "Media link mode", devname);
- velocity_set_int_opt(&opts->wol_opts, wol_opts[index], WOL_OPT_MIN, WOL_OPT_MAX, WOL_OPT_DEF, "Wake On Lan options", devname);
- opts->numrx = (opts->numrx & ~3);
-@@ -2055,8 +2047,9 @@ static int velocity_receive_frame(struct velocity_info *vptr, int idx)
- int pkt_len = le16_to_cpu(rd->rdesc0.len) & 0x3fff;
- struct sk_buff *skb;
-
-- if (rd->rdesc0.RSR & (RSR_STP | RSR_EDP)) {
-- VELOCITY_PRT(MSG_LEVEL_VERBOSE, KERN_ERR " %s : the received frame spans multiple RDs.\n", vptr->netdev->name);
-+ if (unlikely(rd->rdesc0.RSR & (RSR_STP | RSR_EDP | RSR_RL))) {
-+ if (rd->rdesc0.RSR & (RSR_STP | RSR_EDP))
-+ VELOCITY_PRT(MSG_LEVEL_VERBOSE, KERN_ERR " %s : the received frame spans multiple RDs.\n", vptr->netdev->name);
- stats->rx_length_errors++;
- return -EINVAL;
- }
-@@ -2069,17 +2062,6 @@ static int velocity_receive_frame(struct velocity_info *vptr, int idx)
- dma_sync_single_for_cpu(vptr->dev, rd_info->skb_dma,
- vptr->rx.buf_sz, DMA_FROM_DEVICE);
-
-- /*
-- * Drop frame not meeting IEEE 802.3
-- */
--
-- if (vptr->flags & VELOCITY_FLAGS_VAL_PKT_LEN) {
-- if (rd->rdesc0.RSR & RSR_RL) {
-- stats->rx_length_errors++;
-- return -EINVAL;
-- }
-- }
--
- velocity_rx_csum(rd, skb);
-
- if (velocity_rx_copy(&skb, pkt_len, vptr) < 0) {