qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] hw/virtio: Have virtio_bus_get_vdev_bad_features() return 64


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH] hw/virtio: Have virtio_bus_get_vdev_bad_features() return 64-bit value
Date: Mon, 24 May 2021 20:21:48 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1

On 5/23/21 10:07 AM, Michael S. Tsirkin wrote:
> On Thu, May 20, 2021 at 12:28:22PM +0200, Philippe Mathieu-Daudé wrote:
>> In commit 019a3edbb25 ("virtio: make features 64bit wide") we
>> increased the 'features' field to 64-bit, but forgot to update
>> the virtio_bus_get_vdev_bad_features() helper. The 'bad features'
>> are truncated to 32-bit. The virtio_net_bad_features() handler
>> from the virtio-net devices is potentially affected.
> 
> I'm fine with increasing it for consistency, but bad features
> are all legacy things aren't they? So there isn't a functional
> issue ... or did I miss anything?

Are you saying all bad legacy features are < 32-bit and there is no
potential problem?

> 
>>
>> Have the virtio_bus_get_vdev_bad_features() helper return the
>> full 64-bit value.
>>
>> Cc: qemu-stable@nongnu.org
>> Fixes: 019a3edbb25 ("virtio: make features 64bit wide")
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>> ---
>>  include/hw/virtio/virtio-bus.h | 2 +-
>>  hw/virtio/virtio-bus.c         | 2 +-
>>  2 files changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/include/hw/virtio/virtio-bus.h b/include/hw/virtio/virtio-bus.h
>> index ef8abe49c5a..f9955ff577a 100644
>> --- a/include/hw/virtio/virtio-bus.h
>> +++ b/include/hw/virtio/virtio-bus.h
>> @@ -122,7 +122,7 @@ uint16_t virtio_bus_get_vdev_id(VirtioBusState *bus);
>>  /* Get the config_len field of the plugged device. */
>>  size_t virtio_bus_get_vdev_config_len(VirtioBusState *bus);
>>  /* Get bad features of the plugged device. */
>> -uint32_t virtio_bus_get_vdev_bad_features(VirtioBusState *bus);
>> +uint64_t virtio_bus_get_vdev_bad_features(VirtioBusState *bus);
>>  /* Get config of the plugged device. */
>>  void virtio_bus_get_vdev_config(VirtioBusState *bus, uint8_t *config);
>>  /* Set config of the plugged device. */
>> diff --git a/hw/virtio/virtio-bus.c b/hw/virtio/virtio-bus.c
>> index 859978d2487..25a2b68a234 100644
>> --- a/hw/virtio/virtio-bus.c
>> +++ b/hw/virtio/virtio-bus.c
>> @@ -134,7 +134,7 @@ size_t virtio_bus_get_vdev_config_len(VirtioBusState 
>> *bus)
>>  }
>>  
>>  /* Get bad features of the plugged device. */
>> -uint32_t virtio_bus_get_vdev_bad_features(VirtioBusState *bus)
>> +uint64_t virtio_bus_get_vdev_bad_features(VirtioBusState *bus)
>>  {
>>      VirtIODevice *vdev = virtio_bus_get_device(bus);
>>      VirtioDeviceClass *k;
>> -- 
>> 2.26.3
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]