Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: src/sys
On Sun, Feb 14, 2021 at 07:46:38PM +0000, Roy Marples wrote:
> On 13/02/2021 21:34, David Young wrote:
> > On Tue, Feb 09, 2021 at 07:02:32AM +0000, Roy Marples wrote:
> > > Hi David
> > >
> > > On 03/02/2021 21:45, David Young wrote:
> > > >
> > > > This change looks a little hasty to me.
> > > >
> > > > It looks to me like some of these structs were __packed so that
> > > > they could be read/written directly from/to any offset in a packet
> > > > chain using mtod(), which does not pay any mind to the alignment
> > > > of `*t`:
> > > >
> > > > #define mtod(m, t) ((t)((m)->m_data))
> > > >
> > > > I see gre_h is accessed in that way, just for one example.
> > >
> > > Looking at the other places where this is handled, does this patch to gre_h
> > > address your concerns?
> > > I tested this on aarch64 which does not define __NO_STRICT_ALIGNMENT and it
> > > passes the KASSERT.
> >
> > It is possible to simplify your patch a lot. The GRE header is only 4
> > bytes long. On the receive side, just perform the m_pullup like the
> > old code did and then memcpy to a `struct gre_h` on the stack. On the
> > send side, construct the header on the stack and then memcpy it into the
> > mbuf.
> >
> > The same general approach, of copying headers between mbufs the stack,
> > is probably plenty fast for virtually any size of header used in the
> > network stack.
Thank you. I know you probably did not expect to spend so much time on
this. I appreciate your efforts.
Dave
--
David Young
dyoung%pobox.com@localhost Urbana, IL (217) 721-9981
Home |
Main Index |
Thread Index |
Old Index