svn commit: r360255 - in stable/12/sys: kern sys

Mark Johnston markj at FreeBSD.org
Fri Apr 24 13:24:21 UTC 2020


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);


More information about the svn-src-all mailing list