Netdev List
 help / color / mirror / Atom feed
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

  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