Re: git: 82d8a5029a80 - main - unix/stream: fix instant panic w/o INVARIANTS

From: Renato Botelho <garga_at_FreeBSD.org>
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