aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/uipc_sockbuf.c
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2023-04-27 16:58:56 +0000
committerMark Johnston <markj@FreeBSD.org>2023-04-27 16:58:56 +0000
commitec45f952a232068ba17b091e96a8b6e79bcec85a (patch)
treec9e95b39115946f2f65c613ed84bb3cbf7dd2f69 /sys/kern/uipc_sockbuf.c
parent83fd35b3f3fa580d2b99874abd1f67ee61dcb659 (diff)
downloadsrc-ec45f952a232068ba17b091e96a8b6e79bcec85a.tar.gz
src-ec45f952a232068ba17b091e96a8b6e79bcec85a.zip
Diffstat (limited to 'sys/kern/uipc_sockbuf.c')
-rw-r--r--sys/kern/uipc_sockbuf.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/sys/kern/uipc_sockbuf.c b/sys/kern/uipc_sockbuf.c
index 61ec0c794270..170f67be4216 100644
--- a/sys/kern/uipc_sockbuf.c
+++ b/sys/kern/uipc_sockbuf.c
@@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$");
#include <sys/lock.h>
#include <sys/malloc.h>
#include <sys/mbuf.h>
+#include <sys/msan.h>
#include <sys/mutex.h>
#include <sys/proc.h>
#include <sys/protosw.h>
@@ -908,6 +909,7 @@ sbappend_locked(struct sockbuf *sb, struct mbuf *m, int flags)
if (m == NULL)
return;
+ kmsan_check_mbuf(m, "sbappend");
sbm_clrprotoflags(m, flags);
SBLASTRECORDCHK(sb);
n = sb->sb_mb;
@@ -1022,6 +1024,8 @@ sbappendstream_locked(struct sockbuf *sb, struct mbuf *m, int flags)
KASSERT(m->m_nextpkt == NULL,("sbappendstream 0"));
+ kmsan_check_mbuf(m, "sbappend");
+
#ifdef KERN_TLS
/*
* Decrypted TLS records are appended as records via
@@ -1170,7 +1174,10 @@ sbappendrecord_locked(struct sockbuf *sb, struct mbuf *m0)
if (m0 == NULL)
return;
+
+ kmsan_check_mbuf(m0, "sbappend");
m_clrprotoflags(m0);
+
/*
* Put the first mbuf on the queue. Note this permits zero length
* records.
@@ -1207,6 +1214,12 @@ sbappendaddr_locked_internal(struct sockbuf *sb, const struct sockaddr *asa,
struct mbuf *m0, struct mbuf *control, struct mbuf *ctrl_last)
{
struct mbuf *m, *n, *nlast;
+
+ if (m0 != NULL)
+ kmsan_check_mbuf(m0, "sbappend");
+ if (control != NULL)
+ kmsan_check_mbuf(control, "sbappend");
+
#if MSIZE <= 256
if (asa->sa_len > MLEN)
return (0);
@@ -1317,6 +1330,9 @@ sbappendcontrol_locked(struct sockbuf *sb, struct mbuf *m0,
{
struct mbuf *m, *mlast;
+ kmsan_check_mbuf(m0, "sbappend");
+ kmsan_check_mbuf(control, "sbappend");
+
sbm_clrprotoflags(m0, flags);
m_last(control)->m_next = m0;