aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/iommu/amd_iommu_v2.c9
1 files changed, 1 insertions, 8 deletions
diff --git a/drivers/iommu/amd_iommu_v2.c b/drivers/iommu/amd_iommu_v2.c
index b6398d7285f7..5cc140969b43 100644
--- a/drivers/iommu/amd_iommu_v2.c
+++ b/drivers/iommu/amd_iommu_v2.c
@@ -266,14 +266,7 @@ static void put_pasid_state(struct pasid_state *pasid_state)
266 266
267static void put_pasid_state_wait(struct pasid_state *pasid_state) 267static void put_pasid_state_wait(struct pasid_state *pasid_state)
268{ 268{
269 DEFINE_WAIT(wait); 269 wait_event(pasid_state->wq, !atomic_read(&pasid_state->count));
270
271 prepare_to_wait(&pasid_state->wq, &wait, TASK_UNINTERRUPTIBLE);
272
273 if (!atomic_dec_and_test(&pasid_state->count))
274 schedule();
275
276 finish_wait(&pasid_state->wq, &wait);
277 free_pasid_state(pasid_state); 270 free_pasid_state(pasid_state);
278} 271}
279 272