[PATCH v3 1/1] accel/kvm: Fix segmentation fault

2024-05-06 Thread Masato Imai
When the KVM acceleration parameter is not set, executing calc_dirty_rate
with the -r or -b option results in a segmentation fault due to accessing
a null kvm_state pointer in the kvm_dirty_ring_enabled function. This
commit adds a null check for kvm_status to prevent segmentation faults.

Signed-off-by: Masato Imai 
---
 accel/kvm/kvm-all.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index c0be9f5eed..544293be8a 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -2329,7 +2329,7 @@ bool kvm_vcpu_id_is_valid(int vcpu_id)
 
 bool kvm_dirty_ring_enabled(void)
 {
-return kvm_state->kvm_dirty_ring_size ? true : false;
+return kvm_state && kvm_state->kvm_dirty_ring_size;
 }
 
 static void query_stats_cb(StatsResultList **result, StatsTarget target,
-- 
2.34.1




[PATCH v3 0/1] accel/kvm: Fix segmentation fault

2024-05-06 Thread Masato Imai
Changes from v2:
- avoid segfault in kvm/accel instead of migration/dirtyrate

v2: 
https://lore.kernel.org/qemu-devel/20240423091306.754432-1-...@sfc.wide.ad.jp

Masato Imai (1):
  accel/kvm: Fix segmentation fault

 accel/kvm/kvm-all.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.34.1




[PATCH v2 0/1] migration/dirtyrate: Fix segmentation fault

2024-04-23 Thread Masato Imai
Changes from v1:
- fix typo in commit message
- added an extra check for dirty bitmap mode

Masato Imai (1):
  migration/dirtyrate: Fix segmentation fault

 migration/dirtyrate.c | 7 +++
 1 file changed, 7 insertions(+)

-- 
2.34.1




[PATCH] migration/dirtyrate: Fix segmentation fault

2024-04-23 Thread Masato Imai
When the KVM acceleration parameter is not set, executing calc_dirty_rate
with the -r option results in a segmentation fault due to accessing a
null kvm_state pointer in the kvm_dirty_rate_enabled function.
This commit adds a check for kvm_enabled to prevent segmentation faults.

Signed-off-by: Masato Imai 
---
 migration/dirtyrate.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/migration/dirtyrate.c b/migration/dirtyrate.c
index 1d2e85746f..4c1579c6e9 100644
--- a/migration/dirtyrate.c
+++ b/migration/dirtyrate.c
@@ -800,6 +800,8 @@ void qmp_calc_dirty_rate(int64_t calc_time,
  * on the contrary, dirty bitmap mode is not.
  */
 if (((mode == DIRTY_RATE_MEASURE_MODE_DIRTY_RING) &&
+!kvm_enabled()) ||
+((mode == DIRTY_RATE_MEASURE_MODE_DIRTY_RING) &&
 !kvm_dirty_ring_enabled()) ||
 ((mode == DIRTY_RATE_MEASURE_MODE_DIRTY_BITMAP) &&
  kvm_dirty_ring_enabled())) {
-- 
2.34.1




[PATCH v2 1/1] migration/dirtyrate: Fix segmentation fault

2024-04-23 Thread Masato Imai
When the KVM acceleration parameter is not set, executing calc_dirty_rate
with the -r or -b option results in a segmentation fault due to accessing
a null kvm_state pointer in the kvm_dirty_ring_enabled function.
This commit adds a check for kvm_enabled to prevent segmentation faults.

Signed-off-by: Masato Imai 
---
 migration/dirtyrate.c | 7 +++
 1 file changed, 7 insertions(+)

diff --git a/migration/dirtyrate.c b/migration/dirtyrate.c
index 1d2e85746f..2a7df52519 100644
--- a/migration/dirtyrate.c
+++ b/migration/dirtyrate.c
@@ -799,6 +799,13 @@ void qmp_calc_dirty_rate(int64_t calc_time,
  * dirty ring mode only works when kvm dirty ring is enabled.
  * on the contrary, dirty bitmap mode is not.
  */
+if (!kvm_enabled() &&
+(mode == DIRTY_RATE_MEASURE_MODE_DIRTY_RING ||
+ mode == DIRTY_RATE_MEASURE_MODE_DIRTY_BITMAP)) {
+error_setg(errp, "mode %s requires kvm to be enabled.",
+ DirtyRateMeasureMode_str(mode));
+return;
+}
 if (((mode == DIRTY_RATE_MEASURE_MODE_DIRTY_RING) &&
 !kvm_dirty_ring_enabled()) ||
 ((mode == DIRTY_RATE_MEASURE_MODE_DIRTY_BITMAP) &&
-- 
2.34.1