CVSROOT:        /cvs
Module name:    src
Changes by:     d...@cvs.openbsd.org    2018/03/12 17:38:42

Modified files:
        sys/kern       : uipc_mbuf.c 

Log message:
make m_adj keep m_data aligned when removing all the data in an mbuf.

previously it took a shortcut when emptying an mbuf by only setting
m_len to 0, but leaving m_data alone. this interacts badly with
m_pullup, which tries to maintain the alignment of the data
payload. if there was a 14 byte ethernet header on its own that was
m_adjed off, and then the stack wants an ip header, m_pullup
would put the ip header on the ethernet header alignment, which is
off by 2 bytes.

found by stsp@ with pair(4) on sparc64.
ok stsp@ too

Reply via email to