From: Ayan Kumar Halder Date: Mon, 28 Oct 2024 12:45:42 +0000 (+0000) Subject: xen/arm: Skip initializing the BSS section when it is empty X-Git-Tag: 4.20.0-rc1~243 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=b75dee16b33a00a90700c703d3d6a93641d5dadf;p=xen.git xen/arm: Skip initializing the BSS section when it is empty If the BSS section is empty, then the function should return. If one does not check whether the BSS section is empty or not, then there is a risk of writing 0s outside of BSS section (which may contain critical data). Fixes: dac84b66cc9a ("xen: arm64: initial build + config changes, start of day code") Signed-off-by: Ayan Kumar Halder Reviewed-by: Julien Grall Reviewed-by: Luca Fancellu --- diff --git a/xen/arch/arm/arm32/head.S b/xen/arch/arm/arm32/head.S index a96d5d3503..4ff5c220bc 100644 --- a/xen/arch/arm/arm32/head.S +++ b/xen/arch/arm/arm32/head.S @@ -185,12 +185,15 @@ zero_bss: PRINT("- Zero BSS -\r\n") mov_w r0, __bss_start /* r0 := vaddr(__bss_start) */ mov_w r1, __bss_end /* r1 := vaddr(__bss_end) */ + cmp r1, r0 + beq skip_bss mov r2, #0 1: str r2, [r0], #4 cmp r0, r1 blo 1b +skip_bss: mov pc, lr ENDPROC(zero_bss) diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S index 14c3720d80..72c7b24498 100644 --- a/xen/arch/arm/arm64/head.S +++ b/xen/arch/arm/arm64/head.S @@ -346,6 +346,8 @@ FUNC_LOCAL(zero_bss) PRINT("- Zero BSS -\r\n") ldr x0, =__bss_start /* x0 := vaddr(__bss_start) */ ldr x1, =__bss_end /* x1 := vaddr(__bss_end) */ + cmp x1, x0 + beq skip_bss 1: str xzr, [x0], #8 cmp x0, x1