Commit 75058a30 authored by Joerg Roedel's avatar Joerg Roedel

iommu/amd: Fix device_state reference counting

The references to the device state are not dropped
everywhere. This might cause a dead-lock in
amd_iommu_free_device(). Fix it.
Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
Tested-by: default avatarOded Gabbay <oded.gabbay@amd.com>
parent 8301da53
......@@ -368,6 +368,9 @@ static void free_pasid_states(struct device_state *dev_state)
put_pasid_state_wait(pasid_state); /* Reference taken in
amd_iommu_pasid_bind */
/* Drop reference taken in amd_iommu_bind_pasid */
put_device_state(dev_state);
}
if (dev_state->pasid_levels == 2)
......@@ -748,6 +751,10 @@ void amd_iommu_unbind_pasid(struct pci_dev *pdev, int pasid)
put_pasid_state_wait(pasid_state); /* Reference taken in
amd_iommu_pasid_bind */
out:
/* Drop reference taken in this function */
put_device_state(dev_state);
/* Drop reference taken in amd_iommu_bind_pasid */
put_device_state(dev_state);
}
EXPORT_SYMBOL(amd_iommu_unbind_pasid);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment