• Linus Torvalds's avatar
    Merge tag 'for-linus-20151021' of git://git.infradead.org/intel-iommu · 8a70dd26
    Linus Torvalds authored
    Pull intel-iommu bugfix from David Woodhouse:
     "This contains a single fix, for when the IOMMU API is used to overlay
      an existing mapping comprised of 4KiB pages, with a mapping that can
      use superpages.
    
      For the *first* superpage in the new mapping, we were correctly¹
      freeing the old bottom-level page table page and clearing the link to
      it, before installing the superpage.  For subsequent superpages,
      however, we weren't.  This causes a memory leak, and a warning about
      setting a PTE which is already set.
    
      ¹ Well, not *entirely* correctly.  We just free the page table pages
        right there and then, which is wrong.  In fact they should only be
        freed *after* the IOTLB is flushed so we know the hardware will no
        longer be looking at them....  and in fact I note that the IOTLB
        flush is completely missing from the intel_iommu_map() code path,
        although it needs to be there if it's permitted to overwrite
        existing mappings.
    
        Fixing those is somewhat more intrusive though, and will probably
        need to wait for 4.4 at this point"
    
    * tag 'for-linus-20151021' of git://git.infradead.org/intel-iommu:
      iommu/vt-d: fix range computation when making room for large pages
    8a70dd26
intel-iommu.c 124 KB