[PATCH] x86_64: Fix a race in the free_iommu path
authorMike Waychison <mikew@google.com>
Sat, 22 Apr 2006 09:36:06 +0000 (02:36 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Sat, 22 Apr 2006 16:19:52 +0000 (09:19 -0700)
commit5b20192727ef2c047343a043ee4fbda67e2beef4
tree7b0e7e5c1945685ad911add33e0baeb301b9729d
parentddbe3eec596fc2c6a513717168217bd19c901880
[PATCH] x86_64: Fix a race in the free_iommu path

We do this by removing a micro-optimization that tries to avoid grabbing
the iommu_bitmap_lock spinlock and using a bus-locked operation.

This still races with other simultaneous alloc_iommu or free_iommu(size >
1) which both use bus-unlocked operations.

The end result of this race is eventually ending up with an
iommu_gart_bitmap that has bits errornously set all over, making large
contiguous iommu space allocations fail with 'PCI-DMA: Out of IOMMU space'.

Signed-off-by: Mike Waychison <mikew@google.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/x86_64/kernel/pci-gart.c