]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
RISC-V: KVM: fix PMU snapshot_set_shmem on 32-bit hosts
authorOsama Abdelkader <osama.abdelkader@gmail.com>
Wed, 11 Mar 2026 23:18:32 +0000 (00:18 +0100)
committerAnup Patel <anup@brainfault.org>
Fri, 27 Mar 2026 13:02:37 +0000 (18:32 +0530)
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>
arch/riscv/kvm/vcpu_pmu.c

index e873430e596b235cf949c010219f4c7d24f42607..f3bf985dcf432056555cbab230239962a4b77d92 100644 (file)
@@ -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);