Author: markj
Date: Fri Apr 24 13:24:19 2020
New Revision: 360255
URL: https://svnweb.freebsd.org/changeset/base/360255

Log:
  MFC r359779:
  sbappendcontrol() needs to avoid clearing M_NOTREADY on data mbufs.

Modified:
  stable/12/sys/kern/uipc_sockbuf.c
  stable/12/sys/kern/uipc_usrreq.c
  stable/12/sys/sys/sockbuf.h
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/kern/uipc_sockbuf.c
==============================================================================
--- stable/12/sys/kern/uipc_sockbuf.c   Fri Apr 24 13:23:16 2020        
(r360254)
+++ stable/12/sys/kern/uipc_sockbuf.c   Fri Apr 24 13:24:19 2020        
(r360255)
@@ -957,11 +957,11 @@ sbappendaddr(struct sockbuf *sb, const struct sockaddr
 
 void
 sbappendcontrol_locked(struct sockbuf *sb, struct mbuf *m0,
-    struct mbuf *control)
+    struct mbuf *control, int flags)
 {
        struct mbuf *m, *mlast;
 
-       m_clrprotoflags(m0);
+       sbm_clrprotoflags(m0, flags);
        m_last(control)->m_next = m0;
 
        SBLASTRECORDCHK(sb);
@@ -979,11 +979,12 @@ sbappendcontrol_locked(struct sockbuf *sb, struct mbuf
 }
 
 void
-sbappendcontrol(struct sockbuf *sb, struct mbuf *m0, struct mbuf *control)
+sbappendcontrol(struct sockbuf *sb, struct mbuf *m0, struct mbuf *control,
+    int flags)
 {
 
        SOCKBUF_LOCK(sb);
-       sbappendcontrol_locked(sb, m0, control);
+       sbappendcontrol_locked(sb, m0, control, flags);
        SOCKBUF_UNLOCK(sb);
 }
 

Modified: stable/12/sys/kern/uipc_usrreq.c
==============================================================================
--- stable/12/sys/kern/uipc_usrreq.c    Fri Apr 24 13:23:16 2020        
(r360254)
+++ stable/12/sys/kern/uipc_usrreq.c    Fri Apr 24 13:24:19 2020        
(r360255)
@@ -1193,7 +1193,7 @@ uipc_send(struct socket *so, int flags, struct mbuf *m
                case SOCK_STREAM:
                        if (control != NULL) {
                                sbappendcontrol_locked(&so2->so_rcv, m,
-                                   control);
+                                   control, flags);
                                control = NULL;
                        } else
                                sbappend_locked(&so2->so_rcv, m, flags);

Modified: stable/12/sys/sys/sockbuf.h
==============================================================================
--- stable/12/sys/sys/sockbuf.h Fri Apr 24 13:23:16 2020        (r360254)
+++ stable/12/sys/sys/sockbuf.h Fri Apr 24 13:24:19 2020        (r360255)
@@ -140,9 +140,9 @@ int sbappendaddr_locked(struct sockbuf *sb, const stru
 int    sbappendaddr_nospacecheck_locked(struct sockbuf *sb,
            const struct sockaddr *asa, struct mbuf *m0, struct mbuf *control);
 void   sbappendcontrol(struct sockbuf *sb, struct mbuf *m0,
-           struct mbuf *control);
+           struct mbuf *control, int flags);
 void   sbappendcontrol_locked(struct sockbuf *sb, struct mbuf *m0,
-           struct mbuf *control);
+           struct mbuf *control, int flags);
 void   sbappendrecord(struct sockbuf *sb, struct mbuf *m0);
 void   sbappendrecord_locked(struct sockbuf *sb, struct mbuf *m0);
 void   sbcompress(struct sockbuf *sb, struct mbuf *m, struct mbuf *n);
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to