On 2/7/26 22:24, Peter Maydell wrote:

On Sat, 7 Feb 2026 at 10:24, Sergei Heifetz <[email protected]> wrote:
On 2/4/26 17:53, Laurent Vivier wrote:
Le 04/02/2026 à 08:57, Sergei Heifetz a écrit :
Reorder the code so the assertion of block occurs before it is
used in the subsequent lines.

Signed-off-by: Sergei Heifetz <[email protected]>
---
   system/physmem.c | 4 ++--
   1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/system/physmem.c b/system/physmem.c
index b0311f4531..4308e02940 100644
--- a/system/physmem.c
+++ b/system/physmem.c
@@ -2054,11 +2054,11 @@ static int memory_try_enable_merging(void
*addr, size_t len)
    */
   int qemu_ram_resize(RAMBlock *block, ram_addr_t newsize, Error **errp)
   {
+    assert(block);
+
       const ram_addr_t oldsize = block->used_length;
       const ram_addr_t unaligned_size = newsize;
   -    assert(block);
-
According to coding style (docs/devel/style.rst):

Mixed declarations (interleaving statements and declarations within
blocks) are generally not allowed.

       newsize = TARGET_PAGE_ALIGN(newsize);
       newsize = REAL_HOST_PAGE_ALIGN(newsize);
Thanks,
Laurent
Should I remove the assertion altogether, then? I think the const
qualifier on oldsize is more useful than the assertion.
I think personally I would drop the assertion. This falls into a
category I think of as "assertion doesn't buy us anything".
If block is NULL we're going to crash immediately when we
dereference it, so the assert doesn't help to turn a hard-to-debug
bug into an easy-to-debug bug (e.g. by catching incorrect values
long before they're used) or to turn a nasty kind of failure
into a safer one (e.g. by turning an array overrun into
an assertion).

And looking more closely, we call this function in only
two places:
  * migration/ram.c, where we've already dereferenced block
    in the code just before the call
  * system/memory.c, which asserts mr->ram_block before passing it in

So I think the assert in this function isn't buying us anything,
and the simplest thing is to delete it.

thanks
-- PMM
Thanks a lot for your detailed feedback. I completely agree with your points and will resubmit the patch without the assert.

Reply via email to