On 11/4/22 11:47, jianchunfu wrote:
Using macro g_new() to handling potential memory allocation failures
in dirtyrate.

Signed-off-by: jianchunfu <jianchu...@cmss.chinamobile.com>
---
  migration/dirtyrate.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/migration/dirtyrate.c b/migration/dirtyrate.c
index aace12a787..0e59aacbb0 100644
--- a/migration/dirtyrate.c
+++ b/migration/dirtyrate.c
@@ -522,10 +522,10 @@ static void calculate_dirtyrate_dirty_ring(struct 
DirtyRateConfig config)
          nvcpu++;
      }
- dirty_pages = malloc(sizeof(*dirty_pages) * nvcpu);
+    dirty_pages = g_new(DirtyPageRecord, nvcpu);
DirtyStat.dirty_ring.nvcpu = nvcpu;
-    DirtyStat.dirty_ring.rates = malloc(sizeof(DirtyRateVcpu) * nvcpu);
+    DirtyStat.dirty_ring.rates = g_new(DirtyRateVcpu, nvcpu);
dirtyrate_global_dirty_log_start();

While malloc() resources are released with free(), g_malloc/g_new()
ones with g_free().

So to match the API, this hunk is missing:

-- >8 --
diff --git a/migration/dirtyrate.c b/migration/dirtyrate.c
index aace12a787..e49db7ca4c 100644
--- a/migration/dirtyrate.c
+++ b/migration/dirtyrate.c
@@ -159,3 +159,3 @@ static void cleanup_dirtyrate_stat(struct DirtyRateConfig config)
     if (dirtyrate_mode == DIRTY_RATE_MEASURE_MODE_DIRTY_RING) {
-        free(DirtyStat.dirty_ring.rates);
+        g_free(DirtyStat.dirty_ring.rates);
         DirtyStat.dirty_ring.rates = NULL;
@@ -558,3 +558,3 @@ static void calculate_dirtyrate_dirty_ring(struct DirtyRateConfig config)
     DirtyStat.dirty_rate = dirtyrate_sum;
-    free(dirty_pages);
+    g_free(dirty_pages);
 }
---

Reply via email to