• Qian Cai's avatar
    iommu/vt-d: Fix RCU-list bugs in intel_iommu_init() · 2d48ea0e
    Qian Cai authored
    There are several places traverse RCU-list without holding any lock in
    intel_iommu_init(). Fix them by acquiring dmar_global_lock.
    
     WARNING: suspicious RCU usage
     -----------------------------
     drivers/iommu/intel-iommu.c:5216 RCU-list traversed in non-reader section!!
    
     other info that might help us debug this:
    
     rcu_scheduler_active = 2, debug_locks = 1
     no locks held by swapper/0/1.
    
     Call Trace:
      dump_stack+0xa0/0xea
      lockdep_rcu_suspicious+0x102/0x10b
      intel_iommu_init+0x947/0xb13
      pci_iommu_init+0x26/0x62
      do_one_initcall+0xfe/0x500
      kernel_init_freeable+0x45a/0x4f8
      kernel_init+0x11/0x139
      ret_from_fork+0x3a/0x50
     DMAR: Intel(R) Virtualization Technology for Directed I/O
    
    Fixes: d8190dc6 ("iommu/vt-d: Enable DMA remapping after rmrr mapped")
    Signed-off-by: default avatarQian Cai <cai@lca.pw>
    Acked-by: default avatarLu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    2d48ea0e
intel-iommu.c 160 KB