vfio/nvlink: Remove exec permission to avoid SELinux AVCs
commit9c7c0407028355ca83349b8a60fddfad46f2ebd8
authorLeonardo Bras <leobras.c@gmail.com>
Fri, 1 May 2020 05:54:49 +0000 (1 02:54 -0300)
committerDavid Gibson <david@gibson.dropbear.id.au>
Wed, 27 May 2020 05:29:36 +0000 (27 15:29 +1000)
tree72fa2cd3c70fcfceef2bbccb6972a38b9b079d72
parent47e112c4dd8ca0bd4d7872f8bf1a97183915069f
vfio/nvlink: Remove exec permission to avoid SELinux AVCs

If SELinux is setup without 'execmem' permission for qemu, all mmap
with (PROT_WRITE | PROT_EXEC) will fail and print a warning in
SELinux log.

If "nvlink2-mr" memory allocation fails (fist diff), it will cause
guest NUMA nodes to not be correctly configured (V100 memory will
not be visible for guest, nor its NUMA nodes).

Not having 'execmem' permission is intesting for virtual machines to
avoid buffer-overflow based attacks, and it's adopted in distros
like RHEL.

So, removing the PROT_EXEC flag seems the right thing to do.

Browsing some other code that mmaps memory for usage with
memory_region_init_ram_device_ptr, I could notice it's usual to
not have PROT_EXEC (only PROT_READ | PROT_WRITE), so it should be
no problem around this.

Signed-off-by: Leonardo Bras <leobras.c@gmail.com>
Message-Id: <20200501055448.286518-1-leobras.c@gmail.com>
Acked-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
hw/vfio/pci-quirks.c