ELF spec is unclear about whether .bss must me cleared by the loader.
Currently the domain builder does it when loading the guest but because
it is not (or rather may not be) guaranteed we should zero it out
explicitly.

Signed-off-by: Boris Ostrovsky <boris.ostrov...@oracle.com>
---
 arch/x86/xen/xen-head.S | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/arch/x86/xen/xen-head.S b/arch/x86/xen/xen-head.S
index b65f59a..5c63d2d 100644
--- a/arch/x86/xen/xen-head.S
+++ b/arch/x86/xen/xen-head.S
@@ -38,6 +38,15 @@
        __INIT
 ENTRY(startup_xen)
        cld
+
+       /* Clear .bss */
+       xor %eax,%eax
+       mov $__bss_start, %_ASM_DI
+       mov $__bss_stop, %_ASM_CX
+       sub %_ASM_DI, %_ASM_CX
+       shr $__ASM_SEL(2, 3), %_ASM_CX
+       rep __ASM_SIZE(stos)
+
 #ifdef CONFIG_X86_32
        mov %esi,xen_start_info
        mov $init_thread_union+THREAD_SIZE,%esp
-- 
2.1.0

Reply via email to