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