Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

RISC-V: KVM: Fix error code returned for Smstateen ONE_REG

Return -ENOENT for Smstateen ONE_REG when:
1) Smstateen is not enabled for a VCPU
2) ONE_REG id is out of range

This will make Smstateen ONE_REG error codes consistent
with other ONE_REG interfaces of KVM RISC-V.

Fixes: c04913f2b54e ("RISCV: KVM: Add sstateen0 to ONE_REG")
Signed-off-by: Anup Patel <anup.patel@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260120080013.2153519-2-anup.patel@oss.qualcomm.com
Signed-off-by: Anup Patel <anup@brainfault.org>

authored by

Anup Patel and committed by
Anup Patel
45700a74 2dda6a9e

+8 -10
+8 -10
arch/riscv/kvm/vcpu_onereg.c
··· 565 565 unsigned long regs_max = sizeof(struct kvm_riscv_smstateen_csr) / 566 566 sizeof(unsigned long); 567 567 568 + if (!riscv_isa_extension_available(vcpu->arch.isa, SMSTATEEN)) 569 + return -ENOENT; 568 570 if (reg_num >= regs_max) 569 - return -EINVAL; 571 + return -ENOENT; 570 572 571 573 reg_num = array_index_nospec(reg_num, regs_max); 572 574 ··· 584 582 unsigned long regs_max = sizeof(struct kvm_riscv_smstateen_csr) / 585 583 sizeof(unsigned long); 586 584 585 + if (!riscv_isa_extension_available(vcpu->arch.isa, SMSTATEEN)) 586 + return -ENOENT; 587 587 if (reg_num >= regs_max) 588 - return -EINVAL; 588 + return -ENOENT; 589 589 590 590 reg_num = array_index_nospec(reg_num, regs_max); 591 591 ··· 619 615 rc = kvm_riscv_vcpu_aia_get_csr(vcpu, reg_num, &reg_val); 620 616 break; 621 617 case KVM_REG_RISCV_CSR_SMSTATEEN: 622 - rc = -EINVAL; 623 - if (riscv_has_extension_unlikely(RISCV_ISA_EXT_SMSTATEEN)) 624 - rc = kvm_riscv_vcpu_smstateen_get_csr(vcpu, reg_num, 625 - &reg_val); 618 + rc = kvm_riscv_vcpu_smstateen_get_csr(vcpu, reg_num, &reg_val); 626 619 break; 627 620 default: 628 621 rc = -ENOENT; ··· 661 660 rc = kvm_riscv_vcpu_aia_set_csr(vcpu, reg_num, reg_val); 662 661 break; 663 662 case KVM_REG_RISCV_CSR_SMSTATEEN: 664 - rc = -EINVAL; 665 - if (riscv_has_extension_unlikely(RISCV_ISA_EXT_SMSTATEEN)) 666 - rc = kvm_riscv_vcpu_smstateen_set_csr(vcpu, reg_num, 667 - reg_val); 663 + rc = kvm_riscv_vcpu_smstateen_set_csr(vcpu, reg_num, reg_val); 668 664 break; 669 665 default: 670 666 rc = -ENOENT;