[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20130814095233.GH24092@twins.programming.kicks-ass.net>
Date: Wed, 14 Aug 2013 11:52:33 +0200
From: Peter Zijlstra <peterz@...radead.org>
To: Francois Romieu <romieu@...zoreil.com>
Cc: nic_swsd@...ltek.com, netdev@...r.kernel.org
Subject: Re: r8169 OOPSen in rtl_rx
On Wed, Aug 14, 2013 at 11:29:15AM +0200, Peter Zijlstra wrote:
> diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
> index 393f961..76d1c18 100644
> --- a/drivers/net/ethernet/realtek/r8169.c
> +++ b/drivers/net/ethernet/realtek/r8169.c
> @@ -6185,6 +6185,8 @@ static int rtl_rx(struct net_device *dev, struct rtl8169_private *tp, u32 budget
> else
> pkt_size = status & 0x00003fff;
>
> + WARN_ON(!(pkt_size > 0 && pkt_size <= ETH_FRAME_LEN));
> +
> /*
> * The driver does not support incoming fragmented
> * frames. They are seen as a symptom of over-mtu
OK, I changed that to:
diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
index 393f961..81e0bf4 100644
--- a/drivers/net/ethernet/realtek/r8169.c
+++ b/drivers/net/ethernet/realtek/r8169.c
@@ -6185,6 +6185,12 @@ static int rtl_rx(struct net_device *dev, struct rtl8169_private *tp, u32 budget
else
pkt_size = status & 0x00003fff;
+ if (!(pkt_size > 0 && pkt_size <= ETH_FRAME_LEN)) {
+ dev->stats.rx_dropped++;
+ printk("%s Funny sized packet: %d\n", dev->name, pkt_size);
+ goto release_descriptor;
+ }
+
/*
* The driver does not support incoming fragmented
* frames. They are seen as a symptom of over-mtu
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists