On 13/02/14 16:15, Richard Henderson wrote:
> On 02/13/2014 01:17 AM, Christian Borntraeger wrote:
>> The current code does not initialize next_idx as the qemu
>> elf loader does not zero the bss section.
>> Make the initialization explicit.
>>
>> Signed-off-by: Christian Borntraeger <borntrae...@de.ibm.com>
>> ---
>>  pc-bios/s390-ccw/virtio.c | 1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/pc-bios/s390-ccw/virtio.c b/pc-bios/s390-ccw/virtio.c
>> index 4d6e48f..a46914d 100644
>> --- a/pc-bios/s390-ccw/virtio.c
>> +++ b/pc-bios/s390-ccw/virtio.c
>> @@ -124,6 +124,7 @@ static void vring_init(struct vring *vr, unsigned int 
>> num, void *p,
>>      vr->used->flags = VRING_USED_F_NO_NOTIFY;
>>      vr->used->idx = 0;
>>      vr->used_idx = 0;
>> +    vr->next_idx = 0;
>>  
>>      debug_print_addr("init vr", vr);
>>  }
>>
> 
> FWIW, I believe that rom_reset needs to do this re-zeroing of the bss.
> That seems to be the only place we don't take care for datasize != romsize.
> 

Indeed, initializing the data as in my patches isnt wrong (and allows to move
that structures around e.g. from a global variable to stack), so it still makes
sense to apply both patches,  but the main problem was that the bss section is 
not cleared on reset.

So we need to memset from rom->data+rom->datasize  to rom->data+rom->romsize
to avoid more of these kind of problems in an add-on patch.

Christian


Reply via email to