[PATCH v3 1/1] accel/kvm: Fix segmentation fault
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
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
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
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
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