mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
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: dac84b66cc ("xen: arm64: initial build + config changes, start of day code")
Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Reviewed-by: Julien Grall <jgrall@amazon.com>
Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>
This commit is contained in:
1 parent
a6d71d59ca
commit
b75dee16b3
2 files changed
+5
No files matched your search
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||