Skip to content
  • Alex Williamson's avatar
    vfio/type1: Limit DMA mappings per container · 49285593
    Alex Williamson authored
    
    
    Memory backed DMA mappings are accounted against a user's locked
    memory limit, including multiple mappings of the same memory.  This
    accounting bounds the number of such mappings that a user can create.
    However, DMA mappings that are not backed by memory, such as DMA
    mappings of device MMIO via mmaps, do not make use of page pinning
    and therefore do not count against the user's locked memory limit.
    These mappings still consume memory, but the memory is not well
    associated to the process for the purpose of oom killing a task.
    
    To add bounding on this use case, we introduce a limit to the total
    number of concurrent DMA mappings that a user is allowed to create.
    This limit is exposed as a tunable module option where the default
    value of 64K is expected to be well in excess of any reasonable use
    case (a large virtual machine configuration would typically only make
    use of tens of concurrent mappings).
    
    This fixes CVE-2019-3882.
    
    Reviewed-by: default avatarEric Auger <eric.auger@redhat.com>
    Tested-by: default avatarEric Auger <eric.auger@redhat.com>
    Reviewed-by: default avatarPeter Xu <peterx@redhat.com>
    Reviewed-by: default avatarCornelia Huck <cohuck@redhat.com>
    Signed-off-by: default avatarAlex Williamson <alex.williamson@redhat.com>
    49285593