On 2024/03/12 17:52, Stuart Henderson wrote:
> 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.

Confirmed this fixes it. Same patch file applies to iridium and
ungoogled-chromium with no offset.

Robert has a different diff to use multimedia/aom instead of the bundled
version which is preferable overall but a bigger change.

> 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
> 

Reply via email to