git: 0f9fda8fb7b7 - stable/15 - unix/stream: fix instant panic w/o INVARIANTS
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 24 Aug 2026 16:30:05 UTC
The branch stable/15 has been updated by markj:
URL: https://cgit.FreeBSD.org/src/commit/?id=0f9fda8fb7b7f8c0fb7619a076a6c4b0dda0b67b
commit 0f9fda8fb7b7f8c0fb7619a076a6c4b0dda0b67b
Author: Gleb Smirnoff <glebius@FreeBSD.org>
AuthorDate: 2025-11-14 16:01:47 +0000
Commit: Mark Johnston <markj@FreeBSD.org>
CommitDate: 2026-08-24 15:26:22 +0000
unix/stream: fix instant panic w/o INVARIANTS
A stupid microoptimization I made leaving empty STAILQ inconsistent
is a brainfart that is related to much earlier version of this code,
where it was safe to do so.
Pointy hat to: glebius
Fixes: 69f61cee2efb1eec0640ca7de9b2d51599569a5d
(cherry picked from commit 82d8a5029a80a77166dca098b8fedb10d84e4e38)
---
sys/kern/uipc_usrreq.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/sys/kern/uipc_usrreq.c b/sys/kern/uipc_usrreq.c
index a6afb0f1b0f9..6bafb33b5948 100644
--- a/sys/kern/uipc_usrreq.c
+++ b/sys/kern/uipc_usrreq.c
@@ -1501,11 +1501,10 @@ restart:
}
if (!peek) {
- STAILQ_FIRST(&sb->uxst_mbq) = next;
-#ifdef INVARIANTS
if (next == NULL)
STAILQ_INIT(&sb->uxst_mbq);
-#endif
+ else
+ STAILQ_FIRST(&sb->uxst_mbq) = next;
MPASS(sb->sb_acc >= datalen);
sb->sb_acc -= datalen;
sb->sb_ccc -= datalen;