From nobody Thu Apr 27 17:19:04 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Q6jBw70LKz47h8b; Thu, 27 Apr 2023 17:19:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Q6jBw6Ps1z3qkS; Thu, 27 Apr 2023 17:19:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1682615944; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=scLetbSSKbpBGZ6P0rlw0VlJVDeOo2+7s1X62V40hYQ=; b=airuOxtitqwOW4BgAcits19ZHRSVUX7/GpA0Y3bovJpqhofoTb7iS1R2kmsZA7UKgfYFsw ZQ0EIwpnwViqW34WcAD+HzW79ChKmZCDXDNXHA6dT9vy295wyvn/mOTUAi+QeEFAqctWjk Gx6eCt07ok+AyLAsRTsbKR5a3iFPaoPt9fqQUIjTk+Qs/CeI6c3tcyYmULiFUjyhj1BOru YlRji0EtHKqF/aE2VqjSy9qcGCbquVjPjWvhHeZ4D+ReDNY5xCIgUnXzd16burpr0vncVd Kib4xS4TsxbcCo5zW0vilAkjTGI+HjlnT5QYXp/Q1xppLy9zAomh4cP7Pl8J2A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1682615944; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=scLetbSSKbpBGZ6P0rlw0VlJVDeOo2+7s1X62V40hYQ=; b=r5oP6UW6lKsac0N8eeI8Ny9EqzvSYZwa0mZDj/i3gbb6W6XEYg4PCU54nV8TDx2SALGEfS 50JsmOqaIdsmp0kpN75zWoAPCKSf16ee0QBr4DnqsVC7haoyZn7qmr6OAyUKGsC2u6omp2 v3Tr11Ijo1YKk7zNsdPI4Fd7/6oYeMq0YzbtcNIrCbnfCru2+t2it+f7kuAFLTm5HmE4nd BxHgYZKHQZizrmlxPr0FDtUGuR8ODJbgqzAXdjcylNk30npGlRCORSYmupj1wJIU5fjsTO BwIYkCDejO3MUAI1W2Wo/5cBvru8YO/v4AVyD5lEvt2VjuILqoRp3bFtNO/f9w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1682615944; a=rsa-sha256; cv=none; b=jYmsZM3VhOJicTThK8Jn+19yUmkUReJLo7DJR7nHCWrGAByzuIbLKjEtII2N5m6lYB82s7 wHTqtdKOEgDMPi180fXhFZAptUU1PiZb7X5XcXv9zeoFG4g5WRxSnuxCmGn0ikesH53mzN vGrd1PSV9+cIykGaLIAdkNY90/44P0I0nRq8f60MXvLd4H3TQijz1vhS3MzaEFrgZgJbAO 1my4A8PEc538xKL/NvKd/0ImNUwuNVA3uvP5og0Ddn/VSxxUYulHRKa8cO3SY0mO60CVWH N7fD/A+b+olZDqiDkqO0w/7w2b4nQ5CTZ7gM9zZR0g33iECLVaAWrP5/4tBYhg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Q6jBw5Rz8zR0S; Thu, 27 Apr 2023 17:19:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 33RHJ4bR064795; Thu, 27 Apr 2023 17:19:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 33RHJ4UU064794; Thu, 27 Apr 2023 17:19:04 GMT (envelope-from git) Date: Thu, 27 Apr 2023 17:19:04 GMT Message-Id: <202304271719.33RHJ4UU064794@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: ec45f952a232 - main - sockbuf: Add KMSAN checks to sbappend*() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ec45f952a232068ba17b091e96a8b6e79bcec85a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=ec45f952a232068ba17b091e96a8b6e79bcec85a commit ec45f952a232068ba17b091e96a8b6e79bcec85a Author: Mark Johnston AuthorDate: 2023-04-27 16:58:56 +0000 Commit: Mark Johnston CommitDate: 2023-04-27 16:58:56 +0000 sockbuf: Add KMSAN checks to sbappend*() Otherwise KMSAN only detects uninitialized memory when the contents of the buffer are copied out to userspace or transmitted to a network interface. At that point the KMSAN violation will be far removed from its origin, so let's try to make debugging such problems a bit easier. Reviewed by: glebius MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D38101 --- sys/kern/uipc_sockbuf.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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 #include #include +#include #include #include #include @@ -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;