aboutsummaryrefslogtreecommitdiff
path: root/softmmu
diff options
context:
space:
mode:
authorStefan Hajnoczi <stefanha@redhat.com>2023-08-30 09:20:06 -0400
committerStefan Hajnoczi <stefanha@redhat.com>2023-08-30 09:20:06 -0400
commitee89152d4145ed017cc3cd820aa5e6d62bda9355 (patch)
tree7f5660f9cf8588aff0f0f0e1e9ac19e3976e54e4 /softmmu
parentef9d20c63b64989ce4941dc48531c50728ddcc21 (diff)
parent3eb82637fbf8c0471990b59e6733fd4beb1f9939 (diff)
Merge tag 'dirtylimit-dirtyrate-pull-request' of https://github.com/newfriday/qemu into staging
Dirtylimit and dirtyrate 20230829 patches PULL request Correct memory leaks in dirtylimit and accuracy losses in dirtyrate, respectively; make minor corrections to overshoot and memory deallocation. This is v3 with a signed tag. Please apply. Thanks, Yong. # -----BEGIN PGP SIGNATURE----- # Version: GnuPG v2.0.22 (GNU/Linux) # # iQIcBAABAgAGBQJk7VtOAAoJEN/yI9az/suchasP/j/7DQTggrrB/2lWhB79BTrT # L+Tgljh9zynrJeL/OjvE7VD3sxDcHQmHprGT7FkdgIdd3fHl8GHnFz8L1CMLg63E # i/4SY3RFIvmMqMrmBNx77+D6nSfezKrkwmoln7VGjK6rC0s86PRok+Dxf4SaoP1i # cCeFOq2O0U/im1fQQl0uETqxYAX+StVRhnpWTqpPFBBaVCmCGQx3WWXGXXFOl5PB # JNLgDX3lxSpSIfRK9vCb61gFe8gMp+5hUDZgfUln9fmXrO6NsVgHEjvsMqm9UZO1 # tNGSh1GNmO2du6m2iCzVChB8bfe9P3g/XAubfRIkqZtWZK8lhz1mVQEg4wJ4VgX1 # uMAi8gzpMV5Rdiy9MWYZW9sCuoiZepksBuGtrFMBXXyCpP76N+uWshfj+/Mp2mt0 # 475ZiC4silwCeRDWH4UkTyNQtc7+WVRjZP0ToXuUOSyWFdyRPCQdAIDlUacxk/9p # BSymBM2P760oa4IMCwhey5/WaFdfFFcMD4e2UwfTpafwY5uwVOTxN23k7+iCivQs # 3RbP8ghvakgNPTO+1HcdoRW/LrjnGn1mZ5qvLj1+f7slP5NEsBDZVEylQJIHjXh4 # oE8OwB/rRexlUGRUuIgMpVeEk8/LcEMy73I+dj/zSkfQEw8KuCp6EUB5HFiciS0/ # IG5X0TdcvAdicG8qmDGx # =NKkN # -----END PGP SIGNATURE----- # gpg: Signature made Mon 28 Aug 2023 22:43:26 EDT # gpg: using RSA key DFF223D6B3FECB9C # gpg: Can't check signature: No public key * tag 'dirtylimit-dirtyrate-pull-request' of https://github.com/newfriday/qemu: migration/dirtyrate: Fix precision losses and g_usleep overshoot softmmu/dirtylimit: Convert free to g_free softmmu: Fix dirtylimit memory leak Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'softmmu')
-rw-r--r--softmmu/dirtylimit.c26
1 files changed, 12 insertions, 14 deletions
diff --git a/softmmu/dirtylimit.c b/softmmu/dirtylimit.c
index 3c275ee55b..fa959d7743 100644
--- a/softmmu/dirtylimit.c
+++ b/softmmu/dirtylimit.c
@@ -100,7 +100,7 @@ static void vcpu_dirty_rate_stat_collect(void)
stat.rates[i].dirty_rate;
}
- free(stat.rates);
+ g_free(stat.rates);
}
static void *vcpu_dirty_rate_stat_thread(void *opaque)
@@ -171,10 +171,10 @@ void vcpu_dirty_rate_stat_initialize(void)
void vcpu_dirty_rate_stat_finalize(void)
{
- free(vcpu_dirty_rate_stat->stat.rates);
+ g_free(vcpu_dirty_rate_stat->stat.rates);
vcpu_dirty_rate_stat->stat.rates = NULL;
- free(vcpu_dirty_rate_stat);
+ g_free(vcpu_dirty_rate_stat);
vcpu_dirty_rate_stat = NULL;
}
@@ -220,10 +220,10 @@ void dirtylimit_state_initialize(void)
void dirtylimit_state_finalize(void)
{
- free(dirtylimit_state->states);
+ g_free(dirtylimit_state->states);
dirtylimit_state->states = NULL;
- free(dirtylimit_state);
+ g_free(dirtylimit_state);
dirtylimit_state = NULL;
trace_dirtylimit_state_finalize();
@@ -653,7 +653,8 @@ struct DirtyLimitInfoList *qmp_query_vcpu_dirty_limit(Error **errp)
void hmp_info_vcpu_dirty_limit(Monitor *mon, const QDict *qdict)
{
- DirtyLimitInfoList *limit, *head, *info = NULL;
+ DirtyLimitInfoList *info;
+ g_autoptr(DirtyLimitInfoList) head = NULL;
Error *err = NULL;
if (!dirtylimit_in_service()) {
@@ -661,20 +662,17 @@ void hmp_info_vcpu_dirty_limit(Monitor *mon, const QDict *qdict)
return;
}
- info = qmp_query_vcpu_dirty_limit(&err);
+ head = qmp_query_vcpu_dirty_limit(&err);
if (err) {
hmp_handle_error(mon, err);
return;
}
- head = info;
- for (limit = head; limit != NULL; limit = limit->next) {
+ for (info = head; info != NULL; info = info->next) {
monitor_printf(mon, "vcpu[%"PRIi64"], limit rate %"PRIi64 " (MB/s),"
" current rate %"PRIi64 " (MB/s)\n",
- limit->value->cpu_index,
- limit->value->limit_rate,
- limit->value->current_rate);
+ info->value->cpu_index,
+ info->value->limit_rate,
+ info->value->current_rate);
}
-
- g_free(info);
}