loader: Relax the check in is_kernphys_relocatable()

The check fails in kernels compiled with KASAN because AddressSanitizer
inserts redzones around global variables, so the size of the "kernphys"
symbol is 32 rather than 8.  Thus we fall back to copying even though
it's not necessary.

Simply remove the size check.  I didn't want to extend the symbol size
check since there's no guarantee that AddressSanitizer will always emit
32 bytes for "kernphys".

Reviewed by:	kib
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D35448
This commit is contained in:
Mark Johnston 2022-06-15 10:47:13 -04:00
parent 756bc3adc5
commit 9a964ad561

View File

@ -211,8 +211,7 @@ is_kernphys_relocatable(elf_file_t ef)
{
Elf_Sym sym;
return (__elfN(lookup_symbol)(ef, "kernphys", &sym, STT_OBJECT) == 0 &&
sym.st_size == 8);
return (__elfN(lookup_symbol)(ef, "kernphys", &sym, STT_OBJECT) == 0);
}
#endif