Hi,

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;
                if (len <= m_trailingspace(m)) {
@@ -701,16 +701,16 @@ send:
                        tcpstat_inc(tcps_sndwinup);
 
                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;

Reply via email to