1. 20 8月, 2019 1 次提交
  2. 08 8月, 2019 8 次提交
  3. 26 7月, 2019 8 次提交
  4. 03 7月, 2019 12 次提交
  5. 02 7月, 2019 1 次提交
  6. 28 6月, 2019 1 次提交
    • J
      mm/hmm: Fix error flows in hmm_invalidate_range_start · 5a136b4a
      Jason Gunthorpe 提交于
      If the trylock on the hmm->mirrors_sem fails the function will return
      without decrementing the notifiers that were previously incremented. Since
      the caller will not call invalidate_range_end() on EAGAIN this will result
      in notifiers becoming permanently incremented and deadlock.
      
      If the sync_cpu_device_pagetables() required blocking the function will
      not return EAGAIN even though the device continues to touch the
      pages. This is a violation of the mmu notifier contract.
      
      Switch, and rename, the ranges_lock to a spin lock so we can reliably
      obtain it without blocking during error unwind.
      
      The error unwind is necessary since the notifiers count must be held
      incremented across the call to sync_cpu_device_pagetables() as we cannot
      allow the range to become marked valid by a parallel
      invalidate_start/end() pair while doing sync_cpu_device_pagetables().
      Signed-off-by: NJason Gunthorpe <jgg@mellanox.com>
      Reviewed-by: NRalph Campbell <rcampbell@nvidia.com>
      Reviewed-by: NChristoph Hellwig <hch@lst.de>
      Tested-by: NPhilip Yang <Philip.Yang@amd.com>
      5a136b4a
  7. 25 6月, 2019 3 次提交
  8. 18 6月, 2019 4 次提交
  9. 14 6月, 2019 1 次提交
  10. 10 6月, 2019 1 次提交