From: Fabiano Rosas <farosas@suse.de>
To: qemu-devel@nongnu.org
Cc: Peter Xu <peterx@redhat.com>,
Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
Alexandr Moshkov <dtalexundeer@yandex-team.ru>,
"Michael S . Tsirkin" <mst@redhat.com>
Subject: [PATCH v2 6/8] migration: Check more vmstate flags
Date: Tue, 18 Aug 2026 15:24:39 -0300 [thread overview]
Message-ID: <20260818182441.404790-7-farosas@suse.de> (raw)
In-Reply-To: <20260818182441.404790-1-farosas@suse.de>
Add more checks for vmstate flags constraints.
Signed-off-by: Fabiano Rosas <farosas@suse.de>
---
migration/savevm.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/migration/savevm.c b/migration/savevm.c
index 3e5cce6520d..c44df365cc8 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -893,6 +893,25 @@ static void vmstate_check(const VMStateDescription *vmsd)
assert(field->flags & VMS_ARRAY_OF_POINTER);
}
+ /*
+ * The VMS*ARRAY flags and VMS_VBUFFER affect allocation,
+ * they must have the proper fields set and no other
+ * vmstate types can set those fields, otherwise it won't
+ * be picked-up due to the missing flag.
+ */
+
+ if (field->flags & (VMS_ARRAY | VMS_VARRAY)) {
+ assert(field->num > 0 || field->num_indirect.size != 0);
+ } else {
+ assert(field->num == 0 && field->num_indirect.size == 0);
+ }
+
+ if (field->flags & VMS_VBUFFER) {
+ assert(field->size_indirect.size != 0);
+ } else {
+ assert(field->size_indirect.size == 0);
+ }
+
if (field->flags & (VMS_STRUCT | VMS_VSTRUCT)) {
/* Recurse to sub structures */
vmstate_check(field->vmsd);
--
2.53.0
next prev parent reply other threads:[~2026-08-18 18:26 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-18 18:24 [PATCH v2 0/8] migration: Remove extra type-checking from vmstate macros Fabiano Rosas
2026-08-18 18:24 ` [PATCH v2 1/8] migration: Remove unused " Fabiano Rosas
2026-08-18 18:24 ` [PATCH v2 2/8] migration: Introduce VMStateStructMember Fabiano Rosas
2026-08-18 19:12 ` Peter Xu
2026-08-18 18:24 ` [PATCH v2 3/8] migration: Remove redundant flags Fabiano Rosas
2026-08-18 18:24 ` [PATCH v2 4/8] migration: Remove duplicate vmstate macros Fabiano Rosas
2026-08-18 18:24 ` [PATCH v2 5/8] migration: Add VMS_NO_STATE flag Fabiano Rosas
2026-08-18 18:24 ` Fabiano Rosas [this message]
2026-08-18 18:24 ` [PATCH v2 7/8] migration: Harden vmstate_handle_alloc Fabiano Rosas
2026-08-18 18:24 ` [PATCH v2 8/8] migration: Harden vmstate_size Fabiano Rosas
2026-08-18 19:12 ` [PATCH v2 0/8] migration: Remove extra type-checking from vmstate macros Peter Xu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260818182441.404790-7-farosas@suse.de \
--to=farosas@suse.de \
--cc=dtalexundeer@yandex-team.ru \
--cc=mst@redhat.com \
--cc=peterx@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=vsementsov@yandex-team.ru \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.