diff options
| author | Osama Abdelkader <osama.abdelkader@gmail.com> | 2026-03-12 02:18:32 +0300 |
|---|---|---|
| committer | Anup Patel <anup@brainfault.org> | 2026-03-27 16:02:37 +0300 |
| commit | aa35bcf2e76234fef7bbca9bf364039692a27661 (patch) | |
| tree | 75701a5aa58ee2ebf5ac2370b95e896260914731 | |
| parent | 7c61e7433b49ca948dc8cc2b70a20b3dbc36363d (diff) | |
| download | linux-aa35bcf2e76234fef7bbca9bf364039692a27661.tar.xz | |
RISC-V: KVM: fix PMU snapshot_set_shmem on 32-bit hosts
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>
Reviewed-by: Andrew Jones <andrew.jones@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260311231833.13189-1-osama.abdelkader@gmail.com
Signed-off-by: Anup Patel <anup@brainfault.org>
| -rw-r--r-- | arch/riscv/kvm/vcpu_pmu.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/arch/riscv/kvm/vcpu_pmu.c b/arch/riscv/kvm/vcpu_pmu.c index e873430e596b..f3bf985dcf43 100644 --- a/arch/riscv/kvm/vcpu_pmu.c +++ b/arch/riscv/kvm/vcpu_pmu.c @@ -427,11 +427,12 @@ int kvm_riscv_vcpu_pmu_snapshot_set_shmem(struct kvm_vcpu *vcpu, unsigned long s saddr = saddr_low; if (saddr_high != 0) { - if (IS_ENABLED(CONFIG_32BIT)) + 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); |
