RISC-V: KVM: Fix riscv_vcpu_get_isa_ext_single() for missing extensions
authorAnup Patel <apatel@ventanamicro.com>
Mon, 18 Sep 2023 06:28:29 +0000 (11:58 +0530)
committerAnup Patel <anup@brainfault.org>
Thu, 21 Sep 2023 09:34:01 +0000 (15:04 +0530)
The riscv_vcpu_get_isa_ext_single() should fail with -ENOENT error
when corresponding ISA extension is not available on the host.

Fixes: e98b1085be79 ("RISC-V: KVM: Factor-out ONE_REG related code to its own source file")
Signed-off-by: Anup Patel <apatel@ventanamicro.com>
Reviewed-by: Atish Patra <atishp@rivosinc.com>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Signed-off-by: Anup Patel <anup@brainfault.org>
arch/riscv/kvm/vcpu_onereg.c

index e7e833c..b7e0e03 100644 (file)
@@ -460,8 +460,11 @@ static int riscv_vcpu_get_isa_ext_single(struct kvm_vcpu *vcpu,
            reg_num >= ARRAY_SIZE(kvm_isa_ext_arr))
                return -ENOENT;
 
-       *reg_val = 0;
        host_isa_ext = kvm_isa_ext_arr[reg_num];
+       if (!__riscv_isa_extension_available(NULL, host_isa_ext))
+               return -ENOENT;
+
+       *reg_val = 0;
        if (__riscv_isa_extension_available(vcpu->arch.isa, host_isa_ext))
                *reg_val = 1; /* Mark the given extension as available */