Skip to content

Commit c6f4ebd

Browse files
Qian Caijoergroedel
authored andcommitted
iommu/vt-d: Silence RCU-list debugging warning in dmar_find_atsr()
dmar_find_atsr() calls list_for_each_entry_rcu() outside of an RCU read side critical section but with dmar_global_lock held. Silence this false positive. drivers/iommu/intel-iommu.c:4504 RCU-list traversed in non-reader section!! 1 lock held by swapper/0/1: #0: ffffffff9755bee8 (dmar_global_lock){+.+.}, at: intel_iommu_init+0x1a6/0xe19 Call Trace: dump_stack+0xa4/0xfe lockdep_rcu_suspicious+0xeb/0xf5 dmar_find_atsr+0x1ab/0x1c0 dmar_parse_one_atsr+0x64/0x220 dmar_walk_remapping_entries+0x130/0x380 dmar_table_init+0x166/0x243 intel_iommu_init+0x1ab/0xe19 pci_iommu_init+0x1a/0x44 do_one_initcall+0xae/0x4d0 kernel_init_freeable+0x412/0x4c5 kernel_init+0x19/0x193 Signed-off-by: Qian Cai <[email protected]> Acked-by: Lu Baolu <[email protected]> Signed-off-by: Joerg Roedel <[email protected]>
1 parent 52355fb commit c6f4ebd

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

drivers/iommu/intel-iommu.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4501,7 +4501,8 @@ static struct dmar_atsr_unit *dmar_find_atsr(struct acpi_dmar_atsr *atsr)
45014501
struct dmar_atsr_unit *atsru;
45024502
struct acpi_dmar_atsr *tmp;
45034503

4504-
list_for_each_entry_rcu(atsru, &dmar_atsr_units, list) {
4504+
list_for_each_entry_rcu(atsru, &dmar_atsr_units, list,
4505+
dmar_rcu_check()) {
45054506
tmp = (struct acpi_dmar_atsr *)atsru->hdr;
45064507
if (atsr->segment != tmp->segment)
45074508
continue;

0 commit comments

Comments
 (0)