* If prq is to be handled outside iommu driver via receiver of
                 * the fault notifiers, we skip the page response here.
                 */
-               if (!pdev || intel_svm_prq_report(iommu, &pdev->dev, req))
-                       handle_bad_prq_event(iommu, req, QI_RESP_INVALID);
+               if (!pdev)
+                       goto bad_req;
 
-               trace_prq_report(iommu, &pdev->dev, req->qw_0, req->qw_1,
-                                req->priv_data[0], req->priv_data[1],
-                                iommu->prq_seq_number++);
+               if (intel_svm_prq_report(iommu, &pdev->dev, req))
+                       handle_bad_prq_event(iommu, req, QI_RESP_INVALID);
+               else
+                       trace_prq_report(iommu, &pdev->dev, req->qw_0, req->qw_1,
+                                        req->priv_data[0], req->priv_data[1],
+                                        iommu->prq_seq_number++);
+               pci_dev_put(pdev);
 prq_advance:
                head = (head + sizeof(*req)) & PRQ_RING_MASK;
        }