Re: git: 82d8a5029a80 - main - unix/stream: fix instant panic w/o INVARIANTS
- In reply to: Gleb Smirnoff : "git: 82d8a5029a80 - main - unix/stream: fix instant panic w/o INVARIANTS"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 14 Nov 2025 16:51:05 UTC
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 <glebius@FreeBSD.org>
> AuthorDate: 2025-11-14 16:01:47 +0000
> Commit: Gleb Smirnoff <glebius@FreeBSD.org>
> 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