lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sun, 17 May 2020 22:50:16 -0400 From: Yan Zhao <yan.y.zhao@...el.com> To: kvm@...r.kernel.org, linux-kernel@...r.kernel.org Cc: alex.williamson@...hat.com, cohuck@...hat.com, zhenyuw@...ux.intel.com, zhi.a.wang@...el.com, kevin.tian@...el.com, shaopeng.he@...el.com, yi.l.liu@...el.com, xin.zeng@...el.com, hang.yuan@...el.com, Yan Zhao <yan.y.zhao@...el.com> Subject: [RFC PATCH v4 05/10] vfio/pci: export vfio_pci_get_barmap This allows vendor driver to read/write to bars directly which is useful in security checking condition. Cc: Kevin Tian <kevin.tian@...el.com> Signed-off-by: Yan Zhao <yan.y.zhao@...el.com> --- drivers/vfio/pci/vfio_pci_rdwr.c | 10 ++++++++++ include/linux/vfio.h | 1 + 2 files changed, 11 insertions(+) diff --git a/drivers/vfio/pci/vfio_pci_rdwr.c b/drivers/vfio/pci/vfio_pci_rdwr.c index a87992892a9f..e4085311ab28 100644 --- a/drivers/vfio/pci/vfio_pci_rdwr.c +++ b/drivers/vfio/pci/vfio_pci_rdwr.c @@ -153,6 +153,16 @@ static int vfio_pci_setup_barmap(struct vfio_pci_device *vdev, int bar) return 0; } +void __iomem *vfio_pci_get_barmap(void *device_data, int bar) +{ + int ret; + struct vfio_pci_device *vdev = device_data; + + ret = vfio_pci_setup_barmap(vdev, bar); + return ret ? ERR_PTR(ret) : vdev->barmap[bar]; +} +EXPORT_SYMBOL_GPL(vfio_pci_get_barmap); + ssize_t vfio_pci_bar_rw(struct vfio_pci_device *vdev, char __user *buf, size_t count, loff_t *ppos, bool iswrite) { diff --git a/include/linux/vfio.h b/include/linux/vfio.h index 6310c53f9d36..0c786fec4602 100644 --- a/include/linux/vfio.h +++ b/include/linux/vfio.h @@ -234,6 +234,7 @@ extern void *vfio_pci_vendor_data(void *device_data); extern int vfio_pci_set_vendor_regions(void *device_data, int num_vendor_regions); extern int vfio_pci_set_vendor_irqs(void *device_data, int num_vendor_irqs); +extern void __iomem *vfio_pci_get_barmap(void *device_data, int bar); struct vfio_pci_vendor_driver_ops { char *name; -- 2.17.1
Powered by blists - more mailing lists