From 5d710bae6194067b312542b83084881e0a5e8b1e Mon Sep 17 00:00:00 2001 From: Damien Zammit Date: Sun, 19 May 2019 20:33:21 +1000 Subject: x86: Use MAP_SHARED for memory/rom region mmap && fix mode --- src/x86_pci.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/x86_pci.c b/src/x86_pci.c index 786ee3c..e61f6f5 100644 --- a/src/x86_pci.c +++ b/src/x86_pci.c @@ -445,7 +445,7 @@ pci_device_x86_read_rom(struct pci_device *dev, void *buffer) if (memfd == -1) return errno; - bios = mmap(NULL, dev->rom_size, PROT_READ, 0, memfd, d->rom_base); + bios = mmap(NULL, dev->rom_size, PROT_READ, MAP_SHARED, memfd, d->rom_base); if (bios == MAP_FAILED) { close(memfd); return errno; @@ -594,12 +594,12 @@ pci_device_x86_region_probe (struct pci_device *dev, int reg_num) } /* Map the region in our space */ - memfd = open ("/dev/mem", O_RDONLY | O_CLOEXEC); + memfd = open ("/dev/mem", O_RDWR | O_CLOEXEC); if (memfd == -1) return errno; dev->regions[reg_num].memory = - mmap (NULL, dev->regions[reg_num].size, PROT_READ | PROT_WRITE, 0, + mmap (NULL, dev->regions[reg_num].size, PROT_READ | PROT_WRITE, MAP_SHARED, memfd, dev->regions[reg_num].base_addr); if (dev->regions[reg_num].memory == MAP_FAILED) { @@ -607,8 +607,6 @@ pci_device_x86_region_probe (struct pci_device *dev, int reg_num) close (memfd); return errno; } - - close (memfd); } return 0; @@ -857,10 +855,10 @@ pci_device_x86_map_range(struct pci_device *dev, prot |= PROT_WRITE; map->memory = mmap(NULL, map->size, prot, MAP_SHARED, memfd, map->base); - close(memfd); - if (map->memory == MAP_FAILED) + if (map->memory == MAP_FAILED) { + close(memfd); return errno; - + } return 0; } -- cgit v1.2.3