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>