Hi Lucas, On Wed, Nov 06, 2019 at 08:28:43PM +0000, Lucas wrote: > Jan Klemkow <j.klem...@wemelug.de> wrote: > > the following diff simplifies the error handling of MGETHDR() in > > tcp_output(). Jumps earlier to out, prevents a double check of NULL and > > makes the code more readable. > > > > OK? > > > > Bye, > > Jan > > > > Index: netinet/tcp_output.c > > =================================================================== > > RCS file: /cvs/src/sys/netinet/tcp_output.c,v > > retrieving revision 1.128 > > diff -u -p -r1.128 tcp_output.c > > --- netinet/tcp_output.c 10 Nov 2018 18:40:34 -0000 1.128 > > +++ netinet/tcp_output.c 6 Nov 2019 14:34:40 -0000 > > @@ -652,17 +652,17 @@ send: > > m->m_data -= hdrlen; > > #else > > MGETHDR(m, M_DONTWAIT, MT_HEADER); > > - if (m != NULL && max_linkhdr + hdrlen > MHLEN) { > > + if (m == NULL) { > > + error = ENOBUFS; > > + goto out; > > + } > > + if (max_linkhdr + hdrlen > MHLEN) { > > MCLGET(m, M_DONTWAIT); > > if ((m->m_flags & M_EXT) == 0) { > > m_freem(m); > > m = NULL; > > } > > } > > - if (m == NULL) { > > - error = ENOBUFS; > > - goto out; > > - } > > m->m_data += max_linkhdr; > > m->m_len = hdrlen; > > I might be missing something, but m can be NULL here, if (m->m_flags & > M_EXT) == 0.
Yes, you are right. I missed that. Thank, Jan