lib: fix is_region_valid()
authorHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Thu, 8 Dec 2022 01:14:19 +0000 (02:14 +0100)
committerAnup Patel <anup@brainfault.org>
Fri, 9 Dec 2022 05:55:27 +0000 (11:25 +0530)
For 'reg->order == __riscv_xlen' the term 'BIT(reg->order)' is undefined.

Addresses-Coverity-ID: 1529706 ("Bad bit shift operation")
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Xiang W <wxjstz@126.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
lib/sbi/sbi_domain.c

index 3302213c1d62c923a2bed1620f789aca1e54d958..32055958d5d8856eb6ce85de204853755441fa21 100644 (file)
@@ -149,7 +149,7 @@ static bool is_region_valid(const struct sbi_domain_memregion *reg)
        if (reg->order == __riscv_xlen && reg->base != 0)
                return FALSE;
 
-       if (reg->base & (BIT(reg->order) - 1))
+       if (reg->order < __riscv_xlen && (reg->base & (BIT(reg->order) - 1)))
                return FALSE;
 
        return TRUE;