iommu: Don't call .probe_finalize() under group->mutex
authorJoerg Roedel <jroedel@suse.de>
Tue, 19 May 2020 13:28:24 +0000 (15:28 +0200)
committerJoerg Roedel <jroedel@suse.de>
Mon, 25 May 2020 11:48:55 +0000 (13:48 +0200)
commit70b8170e55d3ca9503a53211967faee6b5f18b19
tree045619867f44ce07462f4ec84a8f865fae2f978a
parent2bc61fbcc192f0b2e10e51e38f4f485ba5b293ca
iommu: Don't call .probe_finalize() under group->mutex

The .probe_finalize() call-back of some IOMMU drivers calls into
arm_iommu_attach_device(). This function will call back into the
IOMMU core code, where it tries to take group->mutex again, resulting
in a deadlock.

As there is no reason why .probe_finalize() needs to be called under
that mutex, move it after the lock has been released to fix the
deadlock.

Fixes: deac0b3bed26 ("iommu: Split off default domain allocation from group assignment")
Reported-by: Yong Wu <yong.wu@mediatek.com>
Tested-by: Yong Wu <yong.wu@mediatek.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Cc: Yong Wu <yong.wu@mediatek.com>
Link: https://lore.kernel.org/r/20200519132824.15163-1-joro@8bytes.org
drivers/iommu/iommu.c