aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/iommu/amd_iommu_types.h
diff options
context:
space:
mode:
authorJoerg Roedel <jroedel@suse.de>2019-09-25 15:22:59 +0200
committerJoerg Roedel <jroedel@suse.de>2019-09-28 14:44:04 +0200
commitab7b2577f0d119052b98b8d913bad369ac2760eb (patch)
treefb3c380fff0299866ebdc89fd52010d1bc4782f8 /drivers/iommu/amd_iommu_types.h
parentiommu/amd: Check for busy devices earlier in attach_device() (diff)
downloadlinux-dev-ab7b2577f0d119052b98b8d913bad369ac2760eb.tar.xz
linux-dev-ab7b2577f0d119052b98b8d913bad369ac2760eb.zip
iommu/amd: Lock dev_data in attach/detach code paths
Make sure that attaching a detaching a device can't race against each other and protect the iommu_dev_data with a spin_lock in these code paths. Fixes: 92d420ec028d ("iommu/amd: Relax locking in dma_ops path") Reviewed-by: Filippo Sironi <sironi@amazon.de> Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com> Signed-off-by: Joerg Roedel <jroedel@suse.de>
Diffstat (limited to 'drivers/iommu/amd_iommu_types.h')
-rw-r--r--drivers/iommu/amd_iommu_types.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/iommu/amd_iommu_types.h b/drivers/iommu/amd_iommu_types.h
index 0186501ab971..c9c1612d52e0 100644
--- a/drivers/iommu/amd_iommu_types.h
+++ b/drivers/iommu/amd_iommu_types.h
@@ -633,6 +633,9 @@ struct devid_map {
* This struct contains device specific data for the IOMMU
*/
struct iommu_dev_data {
+ /*Protect against attach/detach races */
+ spinlock_t lock;
+
struct list_head list; /* For domain->dev_list */
struct llist_node dev_data_list; /* For global dev_data_list */
struct protection_domain *domain; /* Domain the device is bound to */