qemu/pci: clarify pci config load routine

PCI load routine has to be called with size equal to 256 (otherwise it
will crash in weird ways).  So assert this, making code clearer.
Also avoid dynamically sized array on stack - good for portability.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Cc: Juan Quintela <quintela@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
Michael S. Tsirkin 2009-10-05 22:46:11 +02:00 committed by Anthony Liguori
parent dc1c9fe8b7
commit 05fcfada5e
1 changed files with 5 additions and 4 deletions

View File

@ -193,14 +193,15 @@ int pci_bus_num(PCIBus *s)
static int get_pci_config_device(QEMUFile *f, void *pv, size_t size)
{
PCIDevice *s = container_of(pv, PCIDevice, config);
uint8_t config[size];
uint8_t config[PCI_CONFIG_SPACE_SIZE];
int i;
qemu_get_buffer(f, config, size);
for (i = 0; i < size; ++i)
assert(size == sizeof config);
qemu_get_buffer(f, config, sizeof config);
for (i = 0; i < sizeof config; ++i)
if ((config[i] ^ s->config[i]) & s->cmask[i] & ~s->wmask[i])
return -EINVAL;
memcpy(s->config, config, size);
memcpy(s->config, config, sizeof config);
pci_update_mappings(s);