Messages in this thread | | | From | Jason Wang <> | Subject | [PATCH V2 00/12] More virtio hardening | Date | Tue, 12 Oct 2021 14:52:15 +0800 |
| |
Hi All:
This series treis to do more hardening for virito.
patch 1 validates the num_queues for virio-blk device. patch 2-4 validates max_nr_ports for virito-console device. patch 5-7 harden virtio-pci interrupts to make sure no exepcted interrupt handler is tiggered. If this makes sense we can do similar things in other transport drivers. patch 8-9 validate used ring length. patch 9-11 let the driver to validate the used length instead of the virtio core
Smoking test on blk/net with packed=on/off and iommu_platform=on/off.
Please review.
Changes since V1: - fix and document the memory ordering around the intx_soft_enabled when enabling and disabling INTX interrupt - for the driver that can validate the used length, virtio core won't even try to allocate auxilary arrays and validate the used length - tweak the commit log - fix typos
Jason Wang (12): virtio-blk: validate num_queues during probe virtio: add doc for validate() method virtio-console: switch to use .validate() virtio_console: validate max_nr_ports before trying to use it virtio_config: introduce a new ready method virtio_pci: harden MSI-X interrupts virtio-pci: harden INTX interrupts virtio_ring: fix typos in vring_desc_extra virtio_ring: validate used buffer length virtio-net: don't let virtio core to validate used length virtio-blk: don't let virtio core to validate used length virtio-scsi: don't let virtio core to validate used buffer length
drivers/block/virtio_blk.c | 4 +- drivers/char/virtio_console.c | 51 +++++++++++++++++-------- drivers/net/virtio_net.c | 1 + drivers/scsi/virtio_scsi.c | 1 + drivers/virtio/virtio_pci_common.c | 49 ++++++++++++++++++++---- drivers/virtio/virtio_pci_common.h | 7 +++- drivers/virtio/virtio_pci_legacy.c | 5 ++- drivers/virtio/virtio_pci_modern.c | 6 ++- drivers/virtio/virtio_ring.c | 60 +++++++++++++++++++++++++++++- include/linux/virtio.h | 3 ++ include/linux/virtio_config.h | 6 +++ 11 files changed, 162 insertions(+), 31 deletions(-)
-- 2.25.1
| |