Hi Timo
On Wed, 2021-08-25 at 11:47 +0300, Timo Lindfors wrote:
> Hi,
>
> txt-acminfo 5th_gen_i5_i7_SINIT_79.BIN
>
> segfaults on my system:
>
> Program received signal SIGSEGV, Segmentation fault.
> does_acmod_match_platform (hdr=hdr@entry=0x7ffff7fc3000) at ../tboot/txt/acmod.c:590
> 590 txt_heap_t *txt_heap = get_txt_heap();
> (gdb) bt
> #0 does_acmod_match_platform (hdr=hdr@entry=0x7ffff7fc3000) at ../tboot/txt/acmod.c:590
> #1 0x00005555555552de in match_platform (hdr=0x7ffff7fc3000) at txt-acminfo.c:207
> #2 main (argc=<optimized out>, argv=<optimized out>) at txt-acminfo.c:244
> (gdb) x/4i $rip
> => 0x555555556612 <does_acmod_match_platform+50>: movabs 0xfed30300,%rax
> 0x55555555661c <does_acmod_match_platform+60>: cmpb $0x4,0x11(%rbp)
> 0x555555556620 <does_acmod_match_platform+64>: jbe 0x555555556660 <does_acmod_match_platform+128>
> 0x555555556622 <does_acmod_match_platform+66>: cmpl $0x5,0x8(%rax)
>
> It seems heap.h defines get_txt_heap() that refers to the real
> read_pub_config_reg() before it is #define'd later. After I fixed this I
> noticed that does_acmod_match_platform() then segfaults when it tries to
> dereference the pointer returned by get_txt_heap().
>
> I guess txt-acminfo should mmap() TXT heap? Should we then modify
> get_txt_heap() to behave differently depending on the context or perhaps
> modify does_acmod_match_platform() to take a pointer to the TXT heap as an
> argument to avoid this?
>
It looks like that this issue was introduced in:
o changeset: 627:d8a8e17f6d41
| user: Lukasz Hawrylko <luk...@in...>
| date: Thu May 13 16:04:27 2021 +0200
| summary: Check for client/server match when selecting SINIT
To solve that txt-acminfo should map TXT heap and then pass pointer to
does_acmod_match_platform() function. I think that this will be the best
solution.
May I ask you to prepare the patch?
Thanks,
Lukasz
|