Re: git: f6ee1d20d368 - main - kern_thread: Fix i386 p_emuldata KBI assertion
Date: Sun, 01 Nov 2026 16:26:34 UTC
On 2026-11-01 10:29, Harry Schmalzbauer wrote:
> On 2026-07-13 05:03, Jessica Clarke wrote:
>> The branch main has been updated by jrtc27:
>>
>> URL:
>> https://cgit.FreeBSD.org/src/commit/?id=f6ee1d20d36813e9906916f48cf06f44a2fd668d
>>
>> commit f6ee1d20d36813e9906916f48cf06f44a2fd668d
>> Author: Jessica Clarke <jrtc27@FreeBSD.org>
>> AuthorDate: 2026-07-13 03:03:03 +0000
>> Commit: Jessica Clarke <jrtc27@FreeBSD.org>
>> CommitDate: 2026-07-13 03:03:03 +0000
>>
>> kern_thread: Fix i386 p_emuldata KBI assertion
>> On amd64 there was 4 bytes of padding between the 20-byte
>> p_comm and
>> (for LP64) 8-byte p_sysent, so the addition of p_execblock just
>> caused
>> that padding to be eaten up. However, on i386, there was no such
>> padding, and so the addition of p_execblock rippled through to
>> p_emuldata.
>> Fixes: e1a84b7708c2 ("execve_block(): a mechanism for
>> mutual exclusion with execve() on the process")
>
>
> Hello,
>
> I think this is a quiet important fix missing in stable/15 (15.2) -
> despite i386 isn't tier0 anymore.
Test-build failed with this e1a84b7708c2-fix.
I couldn't identify the change which made this fix superfluous, but
reverting local-MFC of f6ee1d20d368 lets me build i386 kernel.
With this applied:
i386 kernel build fails with f6ee1d20d368 MFCd on 15.2-PRERELEASE:
sys/kern/kern_thread.c:125:16: error: static assertion failed due to
requirement
'__builtin_offsetof(struct proc, p_emuldata) == 796': struct proc
KBI p_emuldata
125 | _Static_assert(offsetof(struct proc, p_emuldata) == 0x31c,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sys/sys/stddef.h:41:31:
note: expanded from macro 'offsetof'
41 | #define offsetof(type, field) __offsetof(type, field)
| ^
sys/sys/cdefs.h:368:34:
note: expanded from macro '__offsetof'
368 | #define __offsetof(type, field) __builtin_offsetof(type, field)
| ^
sys/kern/kern_thread.c:125:50:
note: expression evaluates to '792 == 796'
125 | _Static_assert(offsetof(struct proc, p_emuldata) == 0x31c,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
1 error generated.
This reverts commit 75d28f36da6658c032613d7a1e4eabf70ec6cd27 (local
MFC).
note: expression evaluates to '792 == 796'
0x318 == 0x31c
Sorry for the noise, please ignore.