Message ID | 3fe4502f-020e-46de-976a-b32a76de478a@p183 (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [1/3] xen, pvh: fix unbootable VMs (PVH + KASAN) | expand |
On Fri, Aug 02 2024 at 11:53, Alexey Dobriyan wrote: > If this memset() is not inlined than PVH early boot code can call > into KASAN-instrumented memset() which results in unbootable VMs. > > Ubuntu's 22.04.4 LTS gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04) > doesn't inline this memset but inlines __builtin_memset. memset() ......
diff --git a/arch/x86/platform/pvh/enlighten.c b/arch/x86/platform/pvh/enlighten.c index 8c2d4b8de25d..c2f6e202217c 100644 --- a/arch/x86/platform/pvh/enlighten.c +++ b/arch/x86/platform/pvh/enlighten.c @@ -133,7 +133,8 @@ void __init xen_prepare_pvh(void) BUG(); } - memset(&pvh_bootparams, 0, sizeof(pvh_bootparams)); + /* This can compile to "call memset" and memset() can be instrumented. */ + __builtin_memset(&pvh_bootparams, 0, sizeof(pvh_bootparams)); hypervisor_specific_init(xen_guest);
If this memset() is not inlined than PVH early boot code can call into KASAN-instrumented memset() which results in unbootable VMs. Ubuntu's 22.04.4 LTS gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04) doesn't inline this memset but inlines __builtin_memset. Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> --- arch/x86/platform/pvh/enlighten.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)