[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RESEND PATCH] vmstate: fix varrays with uint32_t index
From: |
Juan Quintela |
Subject: |
Re: [Qemu-devel] [RESEND PATCH] vmstate: fix varrays with uint32_t indexes |
Date: |
Tue, 13 Mar 2012 18:46:55 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.93 (gnu/linux) |
Andreas Färber <address@hidden> wrote:
> Am 13.03.2012 07:05, schrieb Amos Kong:
>> VMSTATE_VARRAY_UINT32() is used in hw/ds1225y.c, and we checked
>> VMS_VARRAY_UINT32 bit of field->flags in vmstate_load_state(),
>> but we don't check this bit in vmstate_save_state().
>
> So what were the symptoms? Does this need to be backported to stable?
You don't initialize n_elems correctly when saving.
It is only used (currently) with ds1225y.c, that is used on mips_jazz,
and mips_jazz don't support migration. So it is up to you if it is
needed for stable or not (it is not urgent, though).
Later, Juan.
> Andreas
>
>>
>> Signed-off-by: Amos Kong <address@hidden>
>> ---
>> savevm.c | 2 ++
>> 1 files changed, 2 insertions(+), 0 deletions(-)
>>
>> diff --git a/savevm.c b/savevm.c
>> index 80be1ff..694eaa4 100644
>> --- a/savevm.c
>> +++ b/savevm.c
>> @@ -1486,6 +1486,8 @@ void vmstate_save_state(QEMUFile *f, const
>> VMStateDescription *vmsd,
>> n_elems = field->num;
>> } else if (field->flags & VMS_VARRAY_INT32) {
>> n_elems = *(int32_t *)(opaque+field->num_offset);
>> + } else if (field->flags & VMS_VARRAY_UINT32) {
>> + n_elems = *(uint32_t *)(opaque+field->num_offset);
>> } else if (field->flags & VMS_VARRAY_UINT16) {
>> n_elems = *(uint16_t *)(opaque+field->num_offset);
>> } else if (field->flags & VMS_VARRAY_UINT8) {