From: Peng Fan <[email protected]>
With gcc 5.15, met the following error
hypervisor/arch/arm64/control.c:33:9:
error: ‘memset’ offset [0, 255] is out of the bounds [0, 0]
[-Werror=array-bounds]
33 | memset(&this_cpu_data()->guest_regs, 0, sizeof(union
registers));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
Fix this by use a volatile pointer to keep GCC from determining its value
Signed-off-by: Peng Fan <[email protected]>
---
hypervisor/arch/arm/control.c | 3 ++-
hypervisor/arch/arm64/control.c | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/hypervisor/arch/arm/control.c b/hypervisor/arch/arm/control.c
index 46125e1a..c9c93982 100644
--- a/hypervisor/arch/arm/control.c
+++ b/hypervisor/arch/arm/control.c
@@ -23,9 +23,10 @@
void arm_cpu_reset(unsigned long pc, bool aarch32)
{
u32 sctlr;
+ union registers * volatile guest_regs = &this_cpu_data()->guest_regs;
/* Wipe all banked and usr regs */
- memset(&this_cpu_data()->guest_regs, 0, sizeof(union registers));
+ memset(guest_regs, 0, sizeof(union registers));
arm_write_banked_reg(SP_usr, 0);
arm_write_banked_reg(SP_svc, 0);
diff --git a/hypervisor/arch/arm64/control.c b/hypervisor/arch/arm64/control.c
index 5b41b393..2c33c5f7 100644
--- a/hypervisor/arch/arm64/control.c
+++ b/hypervisor/arch/arm64/control.c
@@ -22,6 +22,7 @@ void arm_cpu_reset(unsigned long pc, bool aarch32)
{
u64 hcr_el2;
u64 fpexc32_el2;
+ union registers * volatile guest_regs = &this_cpu_data()->guest_regs;
/* put the cpu in a reset state */
/* AARCH64_TODO: handle big endian support */
@@ -30,7 +31,7 @@ void arm_cpu_reset(unsigned long pc, bool aarch32)
arm_write_sysreg(PMCR_EL0, 0);
/* wipe any other state to avoid leaking information accross cells */
- memset(&this_cpu_data()->guest_regs, 0, sizeof(union registers));
+ memset(guest_regs, 0, sizeof(union registers));
/* AARCH64_TODO: wipe floating point registers */
--
2.30.0
--
You received this message because you are subscribed to the Google Groups
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jailhouse-dev/20220112065619.19432-1-peng.fan%40oss.nxp.com.