lib: Initialize out value in SBI calls
authorAtish Patra <atish.patra@wdc.com>
Wed, 12 Feb 2020 01:39:45 +0000 (17:39 -0800)
committerAnup Patel <anup@brainfault.org>
Thu, 13 Feb 2020 04:27:22 +0000 (09:57 +0530)
As per the SBI specification, the return value in sbiret is undefined
if not explicitly described in the function. However, supervisor may
check this value by mistake and get a garbage value.

Initialize it to zero to avoid nasty supervisor bugs.

Signed-off-by: Atish Patra <atish.patra@wdc.com>
Reviewed-by: Anup Patel <anup.patel@wdc.com>
lib/sbi/sbi_ecall.c

index e52a654..82397c4 100644 (file)
@@ -79,7 +79,7 @@ int sbi_ecall_handler(u32 hartid, ulong mcause, struct sbi_trap_regs *regs,
        unsigned long extension_id = regs->a7;
        unsigned long func_id = regs->a6;
        struct sbi_trap_info trap = {0};
-       unsigned long out_val;
+       unsigned long out_val = 0;
        bool is_0_1_spec = 0;
        unsigned long args[6];