target/loongarch/kvm: pass device attr by reference to kvm_vcpu_ioctl
kvm_vcpu_ioctl() is variadic and reads its argument as a pointer, but kvm_get_stealtime(), kvm_set_stealtime() and kvm_set_pv_features() pass the local struct kvm_device_attr by value. It currently works because of how the calling convention passes large structs; pass &attr so the argument is passed as intended. Reviewed-by: Bibo Mao <maobibo@loongson.cn> Signed-off-by: Tao Cui <cuitao@kylinos.cn> Message-ID: <20260626052742.810726-3-cui.tao@linux.dev> Signed-off-by: Song Gao <gaosong@loongson.cn>
Tao Cui committed
Jun 26, 2026 at 13:27 UTC
f029c634ee99e70f7523a8662fe83d92c1999852
1 file changed
+6
-6
target/loongarch/kvm/kvm.c
+6
-6
@@ -46,12 +46,12 @@ static int kvm_get_stealtime(CPUState *cs)
46
.addr = (uint64_t)&env->stealtime.guest_addr,
47
};
48
49
- err = kvm_vcpu_ioctl(cs, KVM_HAS_DEVICE_ATTR, attr);
49
+ err = kvm_vcpu_ioctl(cs, KVM_HAS_DEVICE_ATTR, &attr);
50
if (err) {
51
return 0;
52
}
53
54
- err = kvm_vcpu_ioctl(cs, KVM_GET_DEVICE_ATTR, attr);
54
+ err = kvm_vcpu_ioctl(cs, KVM_GET_DEVICE_ATTR, &attr);
55
if (err) {
56
error_report("PVTIME: KVM_GET_DEVICE_ATTR: %s", strerror(errno));
57
return err;
@@ -70,12 +70,12 @@ static int kvm_set_stealtime(CPUState *cs)
70
.addr = (uint64_t)&env->stealtime.guest_addr,
71
};
72
73
- err = kvm_vcpu_ioctl(cs, KVM_HAS_DEVICE_ATTR, attr);
73
+ err = kvm_vcpu_ioctl(cs, KVM_HAS_DEVICE_ATTR, &attr);
74
if (err) {
75
return 0;
76
}
77
78
- err = kvm_vcpu_ioctl(cs, KVM_SET_DEVICE_ATTR, attr);
78
+ err = kvm_vcpu_ioctl(cs, KVM_SET_DEVICE_ATTR, &attr);
79
if (err) {
80
error_report("PVTIME: KVM_SET_DEVICE_ATTR %s with gpa "TARGET_FMT_lx,
81
strerror(errno), env->stealtime.guest_addr);
@@ -96,13 +96,13 @@ static int kvm_set_pv_features(CPUState *cs)
96
.addr = (uint64_t)&val,
97
};
98
99
- err = kvm_vcpu_ioctl(cs, KVM_HAS_DEVICE_ATTR, attr);
99
+ err = kvm_vcpu_ioctl(cs, KVM_HAS_DEVICE_ATTR, &attr);
100
if (err) {
101
return 0;
102
}
103
104
val = env->pv_features;
105
- err = kvm_vcpu_ioctl(cs, KVM_SET_DEVICE_ATTR, attr);
105
+ err = kvm_vcpu_ioctl(cs, KVM_SET_DEVICE_ATTR, &attr);
106
if (err) {
107
error_report("Fail to set pv feature "TARGET_FMT_lx " with error %s",
108
val, strerror(errno));