iommu/amd: Fix small race between invalidate_range_end/start
authorJoerg Roedel <jroedel@suse.de>
Fri, 20 Jun 2014 14:14:22 +0000 (16:14 +0200)
committerJoerg Roedel <jroedel@suse.de>
Fri, 20 Jun 2014 14:14:22 +0000 (16:14 +0200)
commitd73a6d722a675dbba8f6b52c964a7076a24a12c1
tree89a5454af127be81efff8f55821a07d31e6f4ca3
parent27e249501ca06a3010519c306206cc402b61b5ab
iommu/amd: Fix small race between invalidate_range_end/start

Commit e79df31 introduced mmu_notifer_count to protect
against parallel mmu_notifier_invalidate_range_start/end
calls. The patch left a small race condition when
invalidate_range_end() races with a new
invalidate_range_start() the empty page-table may be
reverted leading to stale TLB entries in the IOMMU and the
device. Use a spin_lock instead of just an atomic variable
to eliminate the race.

Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/amd_iommu_v2.c