svn commit: r300764 - head/sys/netinet
Bjoern A. Zeeb
bz at FreeBSD.org
Fri May 27 00:15:02 UTC 2016
> On 26 May 2016, at 18:35 , John Baldwin <jhb at FreeBSD.org> wrote:
>
> Author: jhb
> Date: Thu May 26 18:35:37 2016
> New Revision: 300764
> URL: https://svnweb.freebsd.org/changeset/base/300764
>
> Log:
> Don't reuse the source mbuf in tcp_respond() if it is not writable.
>
> Not all mbufs passed up from device drivers are M_WRITABLE(). In
> particular, the Chelsio T4/T5 driver uses a feature called "buffer packing"
> to receive multiple frames in a single receive buffer. The mbufs for
> these frames all share the same external storage so are treated as
> read-only by the rest of the stack when multiple frames are in flight.
> Previously tcp_respond() would blindly overwrite read-only mbufs when
> INVARIANTS was disabled or panic with an assertion failure if INVARIANTS
> was enabled. Note that the new case is a bit of a mix of the two other
> cases in tcp_respond(). The TCP and IP headers must be copied explicitly
> into the new mbuf instead of being inherited (similar to the m == NULL
> case), but the addresses and ports must be swapped in the reply (similar
> to the m != NULL case).
Is the same true for ICMP(v6) replies?
/bz
More information about the svn-src-head
mailing list