]> rtime.felk.cvut.cz Git - jailhouse.git/commitdiff
core: Enforce DWORD-alignment of MMCONFIG accesses
authorJan Kiszka <jan.kiszka@siemens.com>
Sat, 16 Aug 2014 09:01:46 +0000 (11:01 +0200)
committerJan Kiszka <jan.kiszka@siemens.com>
Fri, 22 Aug 2014 12:19:44 +0000 (14:19 +0200)
We only support DWORDs, thus the access address has to be DWORD-aligned
to fulfill the PCI standard - and to match our handling logic.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
hypervisor/pci.c

index 68bfea5e5d85f5f42f5ccb686a58701c5a8e381e..69fbdf60ab683796dd6417ae57fb5b4f0c97434f 100644 (file)
@@ -281,6 +281,10 @@ int pci_mmio_access_handler(const struct cell *cell, bool is_write,
 
        mmcfg_offset = addr - mmcfg_start;
        reg_addr = mmcfg_offset & 0xfff;
+       /* access must be DWORD-aligned */
+       if (reg_addr & 0x3)
+               goto invalid_access;
+
        device = pci_get_assigned_device(cell, mmcfg_offset >> 12);
 
        if (is_write) {