| Message ID | 20260307234355.69831-1-osama.abdelkader@gmail.com |
|---|---|
| State | Superseded |
| Headers | show |
| Series | RISC-V: KVM: fix PMU snapshot_set_shmem on 32-bit hosts | expand |
On Sun, Mar 08, 2026 at 12:43:54AM +0100, Osama Abdelkader wrote: > When saddr_high != 0 on RV32, the goto out was unconditional, causing > valid 64-bit addresses to be rejected. Only goto out when the address > is invalid (64-bit host with saddr_high != 0). > > Fixes: c2f41ddbcdd7 ("RISC-V: KVM: Implement SBI PMU Snapshot feature") > Signed-off-by: Osama Abdelkader <osama.abdelkader@gmail.com> > --- > arch/riscv/kvm/vcpu_pmu.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/arch/riscv/kvm/vcpu_pmu.c b/arch/riscv/kvm/vcpu_pmu.c > index 4d8d5e9aa53d..045099ca904b 100644 > --- a/arch/riscv/kvm/vcpu_pmu.c > +++ b/arch/riscv/kvm/vcpu_pmu.c > @@ -425,9 +425,10 @@ int kvm_riscv_vcpu_pmu_snapshot_set_shmem(struct kvm_vcpu *vcpu, unsigned long s > if (saddr_high != 0) { > if (IS_ENABLED(CONFIG_32BIT)) > saddr |= ((gpa_t)saddr_high << 32); > - else > + else { > sbiret = SBI_ERR_INVALID_ADDRESS; > - goto out; > + goto out; > + } nit: Could add the {} to the if-arm too in order to keep things balanced. Otherwise, Reviewed-by: Andrew Jones <andrew.jones@oss.qualcomm.com> Thanks, drew > } > > kvpmu->sdata = kzalloc(snapshot_area_size, GFP_ATOMIC); > -- > 2.43.0 > > > -- > kvm-riscv mailing list > kvm-riscv@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/kvm-riscv
On Mon, Mar 09, 2026 at 04:12:43PM -0500, Andrew Jones wrote: > On Sun, Mar 08, 2026 at 12:43:54AM +0100, Osama Abdelkader wrote: > > When saddr_high != 0 on RV32, the goto out was unconditional, causing > > valid 64-bit addresses to be rejected. Only goto out when the address > > is invalid (64-bit host with saddr_high != 0). > > > > Fixes: c2f41ddbcdd7 ("RISC-V: KVM: Implement SBI PMU Snapshot feature") > > Signed-off-by: Osama Abdelkader <osama.abdelkader@gmail.com> > > --- > > arch/riscv/kvm/vcpu_pmu.c | 5 +++-- > > 1 file changed, 3 insertions(+), 2 deletions(-) > > > > diff --git a/arch/riscv/kvm/vcpu_pmu.c b/arch/riscv/kvm/vcpu_pmu.c > > index 4d8d5e9aa53d..045099ca904b 100644 > > --- a/arch/riscv/kvm/vcpu_pmu.c > > +++ b/arch/riscv/kvm/vcpu_pmu.c > > @@ -425,9 +425,10 @@ int kvm_riscv_vcpu_pmu_snapshot_set_shmem(struct kvm_vcpu *vcpu, unsigned long s > > if (saddr_high != 0) { > > if (IS_ENABLED(CONFIG_32BIT)) > > saddr |= ((gpa_t)saddr_high << 32); > > - else > > + else { > > sbiret = SBI_ERR_INVALID_ADDRESS; > > - goto out; > > + goto out; > > + } > > nit: Could add the {} to the if-arm too in order to keep things balanced. > Otherwise, > > Reviewed-by: Andrew Jones <andrew.jones@oss.qualcomm.com> > > Thanks, > drew > Hi Andrew, I'm going to do that in v2, thanks. Thanks, Osama > > } > > > > kvpmu->sdata = kzalloc(snapshot_area_size, GFP_ATOMIC); > > -- > > 2.43.0 > > > > > > -- > > kvm-riscv mailing list > > kvm-riscv@lists.infradead.org > > http://lists.infradead.org/mailman/listinfo/kvm-riscv
diff --git a/arch/riscv/kvm/vcpu_pmu.c b/arch/riscv/kvm/vcpu_pmu.c index 4d8d5e9aa53d..045099ca904b 100644 --- a/arch/riscv/kvm/vcpu_pmu.c +++ b/arch/riscv/kvm/vcpu_pmu.c @@ -425,9 +425,10 @@ int kvm_riscv_vcpu_pmu_snapshot_set_shmem(struct kvm_vcpu *vcpu, unsigned long s if (saddr_high != 0) { if (IS_ENABLED(CONFIG_32BIT)) saddr |= ((gpa_t)saddr_high << 32); - else + else { sbiret = SBI_ERR_INVALID_ADDRESS; - goto out; + goto out; + } } kvpmu->sdata = kzalloc(snapshot_area_size, GFP_ATOMIC);
When saddr_high != 0 on RV32, the goto out was unconditional, causing valid 64-bit addresses to be rejected. Only goto out when the address is invalid (64-bit host with saddr_high != 0). Fixes: c2f41ddbcdd7 ("RISC-V: KVM: Implement SBI PMU Snapshot feature") Signed-off-by: Osama Abdelkader <osama.abdelkader@gmail.com> --- arch/riscv/kvm/vcpu_pmu.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)