Re: [RFC PATCH] riscv: kvm: return SBI_ERR_FAILURE for PMU shmem OOM
Anup Patel <[email protected]>
| Newsgroups | org.infradead.lists.kvm-riscv,org.infradead.lists.linux-riscv,org.kernel.vger.kvm,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <CAAhSdy3LpnWtc9iTnND2ez4WK8WJUF_edYaDfD9Nd8_F3dPJFg@mail.gmail.com> |
On Thu, Apr 16, 2026 at 3:40 AM Osama Abdelkader <[email protected]> wrote: > > kvm_riscv_vcpu_pmu_snapshot_set_shmem() and kvm_riscv_vcpu_pmu_event_info() > returned -ENOMEM from the SBI extension handler, which caused > kvm_riscv_vcpu_sbi_ecall() to abort KVM_RUN and surface the error to > userspace instead of completing the ECALL with a negative SBI error in a0. > Use SBI_ERR_FAILURE and the normal retdata path, matching other PMU > handlers and kvm_sbi_ext_pmu_handler comment. > > Signed-off-by: Osama Abdelkader <[email protected]> Split this into two patches where: 1) One patch fixing kvm_riscv_vcpu_pmu_snapshot_set_shmem() 2) Second patch fixing kvm_riscv_vcpu_pmu_event_info() Make sure to add Fixes tag in both patches. Regards, Anup > --- > arch/riscv/kvm/vcpu_pmu.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/arch/riscv/kvm/vcpu_pmu.c b/arch/riscv/kvm/vcpu_pmu.c > index e873430e596b..f36b099f447c 100644 > --- a/arch/riscv/kvm/vcpu_pmu.c > +++ b/arch/riscv/kvm/vcpu_pmu.c > @@ -435,8 +435,10 @@ int kvm_riscv_vcpu_pmu_snapshot_set_shmem(struct kvm_vcpu *vcpu, unsigned long s > } > > kvpmu->sdata = kzalloc(snapshot_area_size, GFP_ATOMIC); > - if (!kvpmu->sdata) > - return -ENOMEM; > + if (!kvpmu->sdata) { > + sbiret = SBI_ERR_FAILURE; > + goto out; > + } > > /* No need to check writable slot explicitly as kvm_vcpu_write_guest does it internally */ > if (kvm_vcpu_write_guest(vcpu, saddr, kvpmu->sdata, snapshot_area_size)) { > @@ -480,8 +482,10 @@ int kvm_riscv_vcpu_pmu_event_info(struct kvm_vcpu *vcpu, unsigned long saddr_low > } > > einfo = kzalloc(shmem_size, GFP_KERNEL); > - if (!einfo) > - return -ENOMEM; > + if (!einfo) { > + ret = SBI_ERR_FAILURE; > + goto out; > + } > > ret = kvm_vcpu_read_guest(vcpu, shmem, einfo, shmem_size); > if (ret) { > -- > 2.43.0 > -- kvm-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/kvm-riscv