[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v1] softmmu/physmem: fix memory leak in dirty_memory_extend()
From: |
Peter Xu |
Subject: |
Re: [PATCH v1] softmmu/physmem: fix memory leak in dirty_memory_extend() |
Date: |
Tue, 27 Aug 2024 13:57:04 -0400 |
On Tue, Aug 27, 2024 at 10:37:15AM +0200, David Hildenbrand wrote:
> /* Called with ram_list.mutex held */
> -static void dirty_memory_extend(ram_addr_t old_ram_size,
> - ram_addr_t new_ram_size)
> +static void dirty_memory_extend(ram_addr_t new_ram_size)
> {
> - ram_addr_t old_num_blocks = DIV_ROUND_UP(old_ram_size,
> - DIRTY_MEMORY_BLOCK_SIZE);
> ram_addr_t new_num_blocks = DIV_ROUND_UP(new_ram_size,
> DIRTY_MEMORY_BLOCK_SIZE);
> int i;
>
> - /* Only need to extend if block count increased */
> - if (new_num_blocks <= old_num_blocks) {
> - return;
> - }
One nitpick here: IMHO we could move the n_blocks cache in ram_list
instead, then we keep the check here and avoid caching it three times with
the same value.
> -
> for (i = 0; i < DIRTY_MEMORY_NUM; i++) {
> DirtyMemoryBlocks *old_blocks;
> DirtyMemoryBlocks *new_blocks;
> + ram_addr_t old_num_blocks = 0;
> int j;
>
> old_blocks = qatomic_rcu_read(&ram_list.dirty_memory[i]);
> + if (old_blocks) {
> + old_num_blocks = old_blocks->num_blocks;
> +
> + /* Only need to extend if block count increased */
> + if (new_num_blocks <= old_num_blocks) {
> + return;
> + }
> + }
--
Peter Xu
Re: [PATCH v1] softmmu/physmem: fix memory leak in dirty_memory_extend(),
Peter Xu <=