Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Jun 2005 23:01:20 -0700
From:      Sam Leffler <sam@errno.com>
To:        Daniel Hartmeier <daniel@benzedrine.cx>
Cc:        freebsd-net@freebsd.org, Marcel Moolenaar <marcel@freebsd.org>, freebsd-pf@freebsd.org
Subject:   Re: ia64/81284: Unaligned Reference with pf on 5.4/IA64
Message-ID:  <42B115B0.4090603@errno.com>
In-Reply-To: <20050615204232.GX8526@insomnia.benzedrine.cx>
References:  <200506132123.j5DLNove069255@freefall.freebsd.org> <20050615204232.GX8526@insomnia.benzedrine.cx>

next in thread | previous in thread | raw e-mail | index | archive | help
Daniel Hartmeier wrote:
> On Mon, Jun 13, 2005 at 09:23:50PM +0000, Marcel Moolenaar wrote:
> 
> 
>>Synopsis: Unaligned Reference with pf on 5.4/IA64
>>
>>Responsible-Changed-From-To: freebsd-net->freebsd-pf
>>Responsible-Changed-By: marcel
>>Responsible-Changed-When: Mon Jun 13 21:22:54 GMT 2005
>>Responsible-Changed-Why: 
>>Move to a more pf-focussed responsible party.
>>
>>http://www.freebsd.org/cgi/query-pr.cgi?pr=81284
> 
> 
> If I understand the problem correctly, there is an underlying
> network-generic question I'd like to ask here.
> 
> When a function in the kernel gets passed a struct ip pointer, can it
> assume that the struct ip object pointed to is properly aligned? Or
> should it assume that this is not the case, and extract members more
> carefully?
> 
> We can fix the access in pf of course, but if other functions rightfully
> count on struct ip objects being properly aligned, this might simply
> crash outside of pf, too.
> 
> In short, is the problem that bridge doesn't properly align the struct
> ip object (which I can try to fix, too), or that pf assumes that such
> objects should be aligned?
> 
> On OpenBSD's 64-bit architectures with varying alignment rules, this has
> never occured, I think because the struct ip objects (and, hence, their
> ip_src/dst members) are kept aligned.
> 
> If I'm way off, and proper alignment of struct ip objects does not
> guarantee proper alignment of the ip_src/dst members as 32-bit
> unsigneds, please explain. If ia64 is different from other 64-bit
> architectures (of which I only know amd64, sparc64 and alpha), please
> explain what alignment rules there are for u_int32_t.

Much code assumes ip packets are aligned.

	Sam



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?42B115B0.4090603>