On 2024/03/12 17:20, Stuart Henderson wrote: > On 2024/03/11 17:32, Laurence Tratt wrote: > > On Mon, Mar 11, 2024 at 11:14:44AM -0600, Theo de Raadt wrote: > > > > Hello Theo, > > > > > With a bit of effort, the address you see: > > > > > > addr=0x67cb1d220 > > > > > > can be compared in the ktrace to earlier mmap() operations (done by the > > > shared library linker ld.so); those mmap are mappings against a file > > > descriptor, > > > and you can see what library file ld.so opened just previously... then we > > > know > > > what library still has a BTI issue. > > > > I will admit to being absolute clueless with kdump output. I'm happy to try > > if someone can give me some hints, but equally if someone wants to look at > > the dump, I'm happy to send them on for analysis. > > I've had a look at this, but there's nothing relevant in kdump output > matching close to that address. > > $ kdump|grep -E '0x67[0-9a-f]{7}' > 69377 chrome CALL unveil(0x674f4c86b,0x674ee7079) > 69377 chrome CALL pledge(0x674e59cbb,0) > 69377 chrome PSIG SIGILL SIG_DFL code=ILL_BTCFI addr=0x67cb1d220 trapno=21 > > Educated guess: chromium uses its own bundled copy of aom (AV1 codec; > AFAIK it uses dav1d to _de_code AV1 but that's a decoder only, so > there's a good chance it uses aom to _en_code) which doesn't have > patches for IBT. So I think there's a good chance it's that.
I've managed to get this working with an external webcam - video(4) seems broken with the internal cams on T14G3. chromium build uses nasm not yasm so we can go with the simple version of the definition. I've just started a build with the diff, hopefully will be able to test runtime tomorrow. Index: Makefile =================================================================== RCS file: /cvs/ports/www/chromium/Makefile,v diff -u -p -r1.772 Makefile --- Makefile 6 Mar 2024 12:30:17 -0000 1.772 +++ Makefile 12 Mar 2024 17:46:27 -0000 @@ -10,6 +10,7 @@ DPB_PROPERTIES+= lonesome COMMENT= Chromium browser V= 122.0.6261.111 +REVISION= 0 DISTNAME= chromium-${V} Index: patches/patch-third_party_libaom_source_libaom_third_party_x86inc_x86inc_asm =================================================================== RCS file: patches/patch-third_party_libaom_source_libaom_third_party_x86inc_x86inc_asm diff -N patches/patch-third_party_libaom_source_libaom_third_party_x86inc_x86inc_asm --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-third_party_libaom_source_libaom_third_party_x86inc_x86inc_asm 12 Mar 2024 17:46:27 -0000 @@ -0,0 +1,24 @@ +Index: third_party/libaom/source/libaom/third_party/x86inc/x86inc.asm +--- third_party/libaom/source/libaom/third_party/x86inc/x86inc.asm.orig ++++ third_party/libaom/source/libaom/third_party/x86inc/x86inc.asm +@@ -66,6 +66,12 @@ + %endif + %endif + ++%if AOM_ARCH_X86_64 ++ %define _CET_ENDBR endbr64 ++%else ++ %define _CET_ENDBR ++%endif ++ + %define FORMAT_ELF 0 + %define FORMAT_MACHO 0 + %ifidn __OUTPUT_FORMAT__,elf +@@ -860,6 +866,7 @@ BRANCH_INSTR jz, je, jnz, jne, jl, jle, jnl, jnle, jg, + %endif + align function_align + %2: ++ _CET_ENDBR + RESET_MM_PERMUTATION ; needed for x86-64, also makes disassembly somewhat nicer + %xdefine rstk rsp ; copy of the original stack pointer, used when greater alignment than the known stack alignment is required + %assign stack_offset 0 ; stack pointer offset relative to the return address