• Lu Baolu's avatar
    iommu/vt-d: Fix suspicious RCU usage in probe_acpi_namespace_devices() · d5692d4a
    Lu Baolu authored
    The drhd and device scope list should be iterated with the
    iommu global lock held. Otherwise, a suspicious RCU usage
    message will be displayed.
    
    [    3.695886] =============================
    [    3.695917] WARNING: suspicious RCU usage
    [    3.695950] 5.2.0-rc2+ #2467 Not tainted
    [    3.695981] -----------------------------
    [    3.696014] drivers/iommu/intel-iommu.c:4569 suspicious rcu_dereference_check() usage!
    [    3.696069]
                   other info that might help us debug this:
    
    [    3.696126]
                   rcu_scheduler_active = 2, debug_locks = 1
    [    3.696173] no locks held by swapper/0/1.
    [    3.696204]
                   stack backtrace:
    [    3.696241] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.2.0-rc2+ #2467
    [    3.696370] Call Trace:
    [    3.696404]  dump_stack+0x85/0xcb
    [    3.696441]  intel_iommu_init+0x128c/0x13ce
    [    3.696478]  ? kmem_cache_free+0x16b/0x2c0
    [    3.696516]  ? __fput+0x14b/0x270
    [    3.696550]  ? __call_rcu+0xb7/0x300
    [    3.696583]  ? get_max_files+0x10/0x10
    [    3.696631]  ? set_debug_rodata+0x11/0x11
    [    3.696668]  ? e820__memblock_setup+0x60/0x60
    [    3.696704]  ? pci_iommu_init+0x16/0x3f
    [    3.696737]  ? set_debug_rodata+0x11/0x11
    [    3.696770]  pci_iommu_init+0x16/0x3f
    [    3.696805]  do_one_initcall+0x5d/0x2e4
    [    3.696844]  ? set_debug_rodata+0x11/0x11
    [    3.696880]  ? rcu_read_lock_sched_held+0x6b/0x80
    [    3.696924]  kernel_init_freeable+0x1f0/0x27c
    [    3.696961]  ? rest_init+0x260/0x260
    [    3.696997]  kernel_init+0xa/0x110
    [    3.697028]  ret_from_fork+0x3a/0x50
    
    Fixes: fa212a97 ("iommu/vt-d: Probe DMA-capable ACPI name space devices")
    Signed-off-by: default avatarLu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    d5692d4a
intel-iommu.c 146 KB