From: Eric Dumazet <eric.dumazet@gmail.com>
To: "Måns Rullgård" <mans@mansr.com>
Cc: David Laight <David.Laight@ACULAB.COM>,
Jon Masters <jonathan@jonmasters.org>,
linux-arm-kernel@lists.infradead.org, netdev@vger.kernel.org
Subject: Re: alignment faults in 3.6
Date: Thu, 11 Oct 2012 12:22:06 +0200 [thread overview]
Message-ID: <1349950926.21172.8521.camel@edumazet-glaptop> (raw)
In-Reply-To: <1349949638.21172.8445.camel@edumazet-glaptop>
On Thu, 2012-10-11 at 12:00 +0200, Eric Dumazet wrote:
> On Thu, 2012-10-11 at 10:45 +0100, Måns Rullgård wrote:
>
> I have no idea what is the problem,
>
> -ENOTENOUGHCONTEXT
>
>
I took a look, and I dont see why/how gcc could use a ldm instruction
Doing so assumed the alignment of the structure was 8 bytes, but its
not.
Networking stack mandates that IP headers are aligned on 4 bytes
boundaries, not 8 bytes.
(Some arches like x86 dont care, so we might have some bugs in some
drivers, but not in the GRO code)
Some drivers are not aware of the NET_IP_ALIGN stuff.
They should be fixed, or else you have alignment faults.
struct iphdr {
__u8 ihl:4,
version:4;
__u8 tos;
__be16 tot_len;
__be16 id;
__be16 frag_off;
__u8 ttl;
__u8 protocol;
__sum16 check;
__be32 saddr;
__be32 daddr;
/*The options start here. */
};
The alignment of iphdr is 4, not 8
doing id = ntohl(*(__be32 *)&iph->id); is valid
doing flush = (u16)((ntohl(*(__be32 *)iph) ^ len) | (id ^ IP_DF)); is valid as well.
If arm compiler decided to use a 8bytes load, thats a compiler bug.
(unless compiler was specifically told that alignment did not matter)
c02ac020: e8920840 ldm r2, {r6, fp} // HERE
c02ac024: e6bfbf3b rev fp, fp
c02ac028: e6bf6f36 rev r6, r6
c02ac02c: e22bc901 eor ip, fp, #16384 ; 0x4000
c02ac030: e0266008 eor r6, r6, r8
c02ac034: e18c6006 orr r6, ip, r6
next prev parent reply other threads:[~2012-10-11 10:22 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <506E1762.3010601@gmail.com>
[not found] ` <CANLjY-no-L9=LRCvCetC5XCHicOoSWOfRZmUd7itAiUHWBhAyw@mail.gmail.com>
[not found] ` <CAG5Tg6Wuybruc31x1eh6mFafsg=7cOgYLgpZUBuJUo75ap3osQ@mail.gmail.com>
[not found] ` <506E3E58.80703@gmail.com>
[not found] ` <CAG5Tg6V0Vj9HTy3=AU-q+Qa3DuJs6R1Kw+3uOWU_jOGfkgyXzw@mail.gmail.com>
[not found] ` <20121005071216.GD4625@n2100.arm.linux.org.uk>
[not found] ` <CAG5Tg6VciuxJ=k+fatzLugcehF54mGNOLHpUwdMX99oCnAVg8Q@mail.gmail.com>
[not found] ` <20121005082439.GF4625@n2100.arm.linux.org.uk>
[not found] ` <506ED18C.3010009@gmail.com>
[not found] ` <20121005140556.GQ4625@n2100.arm.linux.org.uk>
[not found] ` <506EEFBB.3060705@gmail.com>
[not found] ` <507619FA.6080001@jonmasters.org>
2012-10-11 2:27 ` alignment faults in 3.6 Måns Rullgård
2012-10-11 2:34 ` Jon Masters
2012-10-11 8:21 ` David Laight
2012-10-11 8:53 ` Russell King - ARM Linux
2012-10-11 9:45 ` Måns Rullgård
2012-10-11 10:00 ` Eric Dumazet
2012-10-11 10:20 ` Måns Rullgård
2012-10-11 10:22 ` Eric Dumazet [this message]
2012-10-11 10:32 ` Russell King - ARM Linux
2012-10-11 10:49 ` Eric Dumazet
2012-10-11 10:56 ` Maxime Bizon
2012-10-11 11:28 ` Eric Dumazet
2012-10-11 11:47 ` Maxime Bizon
2012-10-11 11:54 ` Eric Dumazet
2012-10-11 12:00 ` Eric Dumazet
2012-10-11 12:51 ` Maxime Bizon
2012-10-11 12:59 ` Eric Dumazet
2012-10-11 12:28 ` Arnd Bergmann
2012-10-11 12:40 ` Eric Dumazet
2012-10-11 13:20 ` Rob Herring
2012-10-11 13:32 ` Måns Rullgård
2012-10-11 13:35 ` Arnd Bergmann
2012-10-11 13:47 ` Eric Dumazet
2012-10-11 15:23 ` Rob Herring
2012-10-11 15:39 ` David Laight
2012-10-11 16:18 ` Måns Rullgård
2012-10-12 8:11 ` Arnd Bergmann
2012-10-12 9:03 ` Russell King - ARM Linux
2012-10-12 10:04 ` Eric Dumazet
2012-10-12 12:24 ` Russell King - ARM Linux
2012-10-12 11:00 ` Måns Rullgård
2012-10-12 11:07 ` Russell King - ARM Linux
2012-10-12 11:18 ` Måns Rullgård
2012-10-12 11:44 ` Russell King - ARM Linux
2012-10-12 12:08 ` Eric Dumazet
2012-10-12 14:22 ` Benjamin LaHaise
2012-10-12 14:36 ` David Laight
2012-10-12 14:48 ` Eric Dumazet
2012-10-12 15:00 ` Benjamin LaHaise
2012-10-12 15:04 ` Ben Hutchings
2012-10-12 15:47 ` David Laight
2012-10-12 16:13 ` Ben Hutchings
2012-10-12 12:16 ` Måns Rullgård
2012-10-12 11:19 ` Russell King - ARM Linux
2012-10-11 16:15 ` Eric Dumazet
2012-10-11 16:59 ` Catalin Marinas
2012-10-11 10:16 ` David Laight
2012-10-11 10:46 ` Måns Rullgård
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1349950926.21172.8521.camel@edumazet-glaptop \
--to=eric.dumazet@gmail.com \
--cc=David.Laight@ACULAB.COM \
--cc=jonathan@jonmasters.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=mans@mansr.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox