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