lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <93d1fdd10903091218g17d65ea2r89a9b2a50fae7f11@mail.gmail.com>
Date:	Mon, 9 Mar 2009 14:18:24 -0500
From:	Ron Yorgason <yorgasor@...il.com>
To:	Eric Dumazet <dada1@...mosbay.com>
Cc:	netdev@...r.kernel.org
Subject: Re: Kernel Oops in UDP w/ ARM architecture

On Mon, Mar 9, 2009 at 1:21 PM, Eric Dumazet <dada1@...mosbay.com> wrote:
> Please dont top post on this mailing list
>
> Ron Yorgason a écrit :
>> We're using the fec driver, found in drivers/net/fec.c.  I modified
>> this driver slightly to get the MAC address from the redboot
>> configuration stored in flash memory, but it's otherwise untouched.  I
>> can send my version of the file if that would help.
>>
>> --Ron
>>
>>
>
> Given that ARM seems to be picky about non aligned accesses, you might
> try this patch. This should force IP header to be aligned.
>
> diff -u linux-2.6.19/drivers/net/fec.c.old linux-2.6.19/drivers/net/fec.c
> --- linux-2.6.19/drivers/net/fec.c.old
> +++ linux-2.6.19/drivers/net/fec.c
> @@ -641,13 +641,14 @@
>         * include that when passing upstream as it messes up
>         * bridging applications.
>         */
> -       skb = dev_alloc_skb(pkt_len-4);
> +       skb = dev_alloc_skb((pkt_len - 4) + 2);
>
>        if (skb == NULL) {
>                printk("%s: Memory squeeze, dropping packet.\n", dev->name);
>                fep->stats.rx_dropped++;
>        } else {
>                skb->dev = dev;
> +               skb_reserve(skb, 2); /* Align IP on 16 byte boundaries */
>                skb_put(skb,pkt_len-4); /* Make room */
>                eth_copy_and_sum(skb, data, pkt_len-4, 0);
>                skb->protocol=eth_type_trans(skb,dev);
>
>

Thanks for the patch.  It looks like Freescale modified this section
of the code in our BSP, so I'm looking at how to best merge things in.
 Also, since we're allocating an extra 2 bytes in dev_alloc_skb(), do
we need to account for those bytes in skb_put() and
eth_copy_and_sum(), or does the skb_reserve() call handle that?

Ron
--
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

Powered by Openwall GNU/*/Linux Powered by OpenVZ