diff options
author | Joerg Roedel <jroedel@suse.de> | 2019-09-25 15:22:59 +0200 |
---|---|---|
committer | Joerg Roedel <jroedel@suse.de> | 2019-09-28 14:44:04 +0200 |
commit | ab7b2577f0d119052b98b8d913bad369ac2760eb (patch) | |
tree | fb3c380fff0299866ebdc89fd52010d1bc4782f8 /drivers/iommu/amd_iommu_types.h | |
parent | iommu/amd: Check for busy devices earlier in attach_device() (diff) | |
download | linux-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.h | 3 |
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 */ |