]> git.baikalelectronics.ru Git - kernel.git/commit
iommu/dart: Fix apple_dart_device_group for PCI groups
authorSven Peter <sven@svenpeter.dev>
Sat, 28 Jan 2023 11:35:32 +0000 (12:35 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 10 Mar 2023 08:33:36 +0000 (09:33 +0100)
commit9d075a968f1abe9d137b8ce49cb142d823235ca1
tree70d38add3cdb3a67e424ecbd72bc0613ac30ed90
parent7978c28d21b89b1b1fbce50763e5fa3fe675619c
iommu/dart: Fix apple_dart_device_group for PCI groups

[ Upstream commit fd020c6741d516fc20e74919306321d8d4730a89 ]

pci_device_group() can return an already existing IOMMU group if the PCI
device's pagetables have to be shared with another one due to bus
toplogy, isolation features and/or DMA alias quirks.
apple_dart_device_group() however assumes that the group has just been
created and overwrites its iommudata which will eventually lead to
apple_dart_release_group leaving stale entries in sid2group.
Fix that by merging the iommudata if the returned group already exists.

Fixes: af264fcce65f ("iommu/dart: Clear sid2group entry when a group is freed")
Signed-off-by: Sven Peter <sven@svenpeter.dev>
Reviewed-by: Eric Curtin <ecurtin@redhat.com>
Link: https://lore.kernel.org/r/20230128113532.94651-1-sven@svenpeter.dev
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/iommu/apple-dart.c