Re: [PATCH v4 0/7] x86: Rid .head.text of all abs references
From: Ard Biesheuvel
Date: Tue Dec 31 2024 - 14:29:38 EST
(cc Nathan)
On Tue, 31 Dec 2024 at 11:35, Borislav Petkov <bp@xxxxxxxxx> wrote:
>
> On Tue, Dec 31, 2024 at 11:12:55AM +0100, Ard Biesheuvel wrote:
> > I'll look into this asap, i.e., in a couple of days.
>
> :-P
>
> Thanks!
>
I had a quick look, and managed to reproduce it with Clang 14 but not
with Clang 18.
It looks like UBSAN is emitting some instrumentation here, in spite of
the __no_sanitize_undefined annotation (via __head) on
pvalidate_4k_page():
arch/x86/coco/sev/core.o:
0000000000000a00 <pvalidate_4k_page>:
...
b72: 40 88 de mov %bl,%sil
b75: 48 c7 c7 00 00 00 00 mov $0x0,%rdi
b78: R_X86_64_32S .data+0xb0
b7c: e8 00 00 00 00 callq b81 <pvalidate_4k_page+0x181>
b7d: R_X86_64_PLT32 __ubsan_handle_load_invalid_value-0x4
So as far as this series is concerned, things are working correctly,
and an absolute reference to .data is being flagged in code that may
execute before the absolute address in question is even mapped.