From: Juan Quintela <quintela@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Ashijeet Acharya <ashijeetacharya@gmail.com>,
"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
Amit Shah <amit.shah@redhat.com>,
QEMU Developers <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH] migrate: Introduce a 'dc->vmsd' check to avoid segfault for --only-migratable
Date: Mon, 30 Jan 2017 17:38:28 +0100 [thread overview]
Message-ID: <87a8a8ec57.fsf@emacs.mitica> (raw)
In-Reply-To: <CAFEAcA_tGGVL2aP5Gu5ZyX3KKVTA_gFa4wtSxAhJrjAKQZiOLw@mail.gmail.com> (Peter Maydell's message of "Mon, 30 Jan 2017 15:09:52 +0000")
Peter Maydell <peter.maydell@linaro.org> wrote:
> On 30 January 2017 at 14:41, Ashijeet Acharya <ashijeetacharya@gmail.com> wrote:
>> Commit a3a3d8c7 introduced a segfault bug while checking for
>> 'dc->vmsd->unmigratable' which caused QEMU to crash when trying to add
>> devices which do no set their 'dc->vmsd' yet while initialization.
>> Place a 'dc->vmsd' check prior to it so that we do not segfault for
>> such devices.
>>
>> NOTE: This doesn't compromise the functioning of --only-migratable
>> option as all the unmigratable devices do set their 'dc->vmsd'.
>>
>> Signed-off-by: Ashijeet Acharya <ashijeetacharya@gmail.com>
>> ---
>> qdev-monitor.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/qdev-monitor.c b/qdev-monitor.c
>> index 81d01df..a1106fd 100644
>> --- a/qdev-monitor.c
>> +++ b/qdev-monitor.c
>> @@ -578,7 +578,7 @@ DeviceState *qdev_device_add(QemuOpts *opts, Error **errp)
>> return NULL;
>> }
>>
>> - if (only_migratable) {
>> + if (only_migratable && dc->vmsd) {
>> if (dc->vmsd->unmigratable) {
>> error_setg(errp, "Device %s is not migratable, but "
>> "--only-migratable was specified", driver);
>
> This seems like a good fix for the crash as a short term fix,
> but longer term I think it would be better to make setting
> dc->vmsd mandatory. I think devices which don't set it fall into
> one of these categories:
> * deliberately has no VMState struct as it has no state that
> needs migrating -- we should have some kind of flag for
> such devices to positively assert that they don't need to
> deal with migration
> * accidentally failed to provide a VMState struct -- this is
> a bug and the device should be fixed to at minimum mark
> itself as unmigratable (and ideally fixed to implement
> migration!)
> * didn't provide a VMState struct because they handle
> migration manually using vmstate_register() -- we should
> update these to use VMState, or failing that use the
> flag to say "deliberately not providing VMState"
>
> Then we can make QEMU assert if dc->vmsd is NULL, and
> catch future occurrences of "oops I didn't think about
> migration" bugs in new device models. We also have an
> easy way to grep the codebase for devices that need to
> have migration implemented.
+1
Reviewed-by: Juan Quintela <quintela@redhat.com>
next prev parent reply other threads:[~2017-01-30 16:38 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-30 14:41 [Qemu-devel] [PATCH] migrate: Introduce a 'dc->vmsd' check to avoid segfault for --only-migratable Ashijeet Acharya
2017-01-30 15:09 ` Peter Maydell
2017-01-30 16:38 ` Juan Quintela [this message]
2017-02-04 8:44 ` Ashijeet Acharya
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=87a8a8ec57.fsf@emacs.mitica \
--to=quintela@redhat.com \
--cc=amit.shah@redhat.com \
--cc=ashijeetacharya@gmail.com \
--cc=dgilbert@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
/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.