bc93b9ae01
A down_read on memory_lock is held when performing read/write accesses
to MMIO BAR space, including across the copy_to/from_user() callouts
which may fault. If the user buffer for these copies resides in an
mmap of device MMIO space, the mmap fault handler will acquire a
recursive read-lock on memory_lock. Avoid this by reducing the lock
granularity. Sequential accesses requiring multiple ioread/iowrite
cycles are expected to be rare, therefore typical accesses should not
see additional overhead.
VGA MMIO accesses are expected to be non-fatal regardless of the PCI
memory enable bit to allow legacy probing, this behavior remains with
a comment added. ioeventfds are now included in memory access testing,
with writes dropped while memory space is disabled.
Fixes:
|
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
trace.h | ||
vfio_pci.c | ||
vfio_pci_config.c | ||
vfio_pci_igd.c | ||
vfio_pci_intrs.c | ||
vfio_pci_nvlink2.c | ||
vfio_pci_private.h | ||
vfio_pci_rdwr.c |