[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20080206173342.21CDF8E152@adsl-69-226-248-13.dsl.pltn13.pacbell.net>
Date: Wed, 06 Feb 2008 09:33:42 -0800
From: David Brownell <david-b@...bell.net>
To: netdev@...r.kernel.org, lanconelli.claudio@...ar.com
Subject: Re: [patch 2.6.24-git] net/enc28j60: oops fix
> > Prevent unaligned packet oops on enc28j60 packet RX.
>
> How can I reproduce the unaligned packet oops?
Use any architecture that doesn't support unaligned accesses
in kernel space. I used AVR32 for this (it's got a pretty
solid SPI master controller driver). ARM isn't immune either,
and there are others. That's why NET_IP_ALIGN exists.
> Did you use any utilities to force this condition?
"ping" ... the first RX packet oopsed.
> Can you split the patch in 2 parts, unaligned rx and power save?
Below is: unaligned access.
- Dave
=========== CUT HERE
Prevent oops on enc28j60 packet RX: make sure buffers are aligned.
Not all architectures support unaligned accesses in kernel space.
Signed-off-by: David Brownell <dbrownell@...rs.sourceforge.net>
---
drivers/net/enc28j60.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletion(-)
--- a/drivers/net/enc28j60.c 2008-02-06 09:29:00.000000000 -0800
+++ b/drivers/net/enc28j60.c 2008-02-06 09:30:03.000000000 -0800
@@ -900,7 +900,7 @@ static void enc28j60_hw_rx(struct net_de
if (RSV_GETBIT(rxstat, RSV_LENCHECKERR))
ndev->stats.rx_frame_errors++;
} else {
- skb = dev_alloc_skb(len);
+ skb = dev_alloc_skb(len + NET_IP_ALIGN);
if (!skb) {
if (netif_msg_rx_err(priv))
dev_err(&ndev->dev,
@@ -908,6 +908,7 @@ static void enc28j60_hw_rx(struct net_de
ndev->stats.rx_dropped++;
} else {
skb->dev = ndev;
+ skb_reserve(skb, NET_IP_ALIGN);
/* copy the packet from the receive buffer */
enc28j60_mem_read(priv, priv->next_pk_ptr + sizeof(rsv),
len, skb_put(skb, len));
--
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