On 14/11/25 13:04, Gleb Smirnoff wrote:
The branch main has been updated by glebius:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=82d8a5029a80a77166dca098b8fedb10d84e4e38

commit 82d8a5029a80a77166dca098b8fedb10d84e4e38
Author:     Gleb Smirnoff <[email protected]>
AuthorDate: 2025-11-14 16:01:47 +0000
Commit:     Gleb Smirnoff <[email protected]>
CommitDate: 2025-11-14 16:01:47 +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
---
  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 b1cb6de98b5b..6996f3d447bd 100644
--- a/sys/kern/uipc_usrreq.c
+++ b/sys/kern/uipc_usrreq.c
@@ -1492,11 +1492,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;
It fixed the crash I reported earlier.

Thanks!
--
Renato Botelho


Reply via email to