iommu/amd: Put list_add/del(dev_data) back under the domain->lock
authorJason Gunthorpe <jgg@nvidia.com>
Fri, 6 Dec 2024 00:13:41 +0000 (20:13 -0400)
committerJoerg Roedel <jroedel@suse.de>
Tue, 10 Dec 2024 09:12:05 +0000 (10:12 +0100)
commit4a552f7890f0870f6d9fd4fbc6c05cea7bfd4503
tree3ed54b9d4af1e61f82ed5e421cd8c6ad1b87e9a7
parentfac04efc5c793dccbd07e2d59af9f90b7fc0dca4
iommu/amd: Put list_add/del(dev_data) back under the domain->lock

The list domain->dev_list is protected by the domain->lock spinlock.
Any iteration, addition or removal must be under the lock.

Move the list_del() up into the critical section. pdom_is_sva_capable(),
and destroy_gcr3_table() do not interact with the list element.

Wrap the list_add() in a lock, it would make more sense if this was under
the same critical section as adjusting the refcounts earlier, but that
requires more complications.

Fixes: d6b47dec3684 ("iommu/amd: Reduce domain lock scope in attach device path")
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Vasant Hegde <vasant.hegde@amd.com>
Link: https://lore.kernel.org/r/1-v1-3b9edcf8067d+3975-amd_dev_list_locking_jgg@nvidia.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/amd/iommu.c