pci: mark ROMs read-only
authorMichael S. Tsirkin <mst@redhat.com>
Thu, 19 Jan 2017 19:34:28 +0000 (21:34 +0200)
committerMichael S. Tsirkin <mst@redhat.com>
Wed, 1 Feb 2017 01:37:17 +0000 (03:37 +0200)
Looks like we didn't mark PCI ROMs as RO allowing
mischief such as guests writing there.
Further, e.g. vhost gets confused trying to allocate
enough space to log writes there. Fix it up.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>
Tested-by: Laurent Vivier <lvivier@redhat.com>
hw/pci/pci.c

index 47ca3af69aaed80805c2a3e96c249fe4e9186b2c..a563555e7da71e8e3c16d7e711fb163393ad6fb8 100644 (file)
@@ -2195,7 +2195,7 @@ static void pci_add_option_rom(PCIDevice *pdev, bool is_default_rom,
         snprintf(name, sizeof(name), "%s.rom", object_get_typename(OBJECT(pdev)));
     }
     pdev->has_rom = true;
-    memory_region_init_ram(&pdev->rom, OBJECT(pdev), name, size, &error_fatal);
+    memory_region_init_rom(&pdev->rom, OBJECT(pdev), name, size, &error_fatal);
     vmstate_register_ram(&pdev->rom, &pdev->qdev);
     ptr = memory_region_get_ram_ptr(&pdev->rom);
     load_image(path, ptr);