On Thu, 2015-10-15 at 21:25 +0300, Dan Carpenter wrote: > > The patch 0b9252a34858: "iommu/vt-d: Implement page request handling" > from Oct 8, 2015, leads to the following Smatch complaint: > > drivers/iommu/intel-svm.c:452 prq_event_thread() > error: we previously assumed 'svm' could be null (see line 412)
Thanks. I'm going to fix it thus: diff --git a/drivers/iommu/intel-svm.c b/drivers/iommu/intel-svm.c index 817be76..b7e923a 100644 --- a/drivers/iommu/intel-svm.c +++ b/drivers/iommu/intel-svm.c @@ -510,7 +510,7 @@ static irqreturn_t prq_event_thread(int irq, void *d) pr_err("%s: Page request for invalid PASID %d: %08llx %08llx\n", iommu->name, req->pasid, ((unsigned long long *)req)[0], ((unsigned long long *)req)[1]); - goto bad_req; + goto no_pasid; } } @@ -552,7 +552,11 @@ static irqreturn_t prq_event_thread(int irq, void *d) (req->wr_req << 1) | (req->exe_req); sdev->ops->fault_cb(sdev->dev, req->pasid, req->addr, req->private, rwxp, result); } - + /* We get here in the error case where the PASID lookup failed, + and these can be NULL. Do not use them below this point! */ + sdev = NULL; + svm = NULL; + no_pasid: if (req->lpig) { /* Page Group Response */ resp.low = QI_PGRP_PASID(req->pasid) | @@ -562,7 +566,7 @@ static irqreturn_t prq_event_thread(int irq, void *d) resp.high = QI_PGRP_IDX(req->prg_index) | QI_PGRP_PRIV(req->private) | QI_PGRP_RESP_CODE(result); - qi_submit_sync(&resp, svm->iommu); + qi_submit_sync(&resp, iommu); } else if (req->srr) { /* Page Stream Response */ resp.low = QI_PSTRM_IDX(req->prg_index) | @@ -571,7 +575,7 @@ static irqreturn_t prq_event_thread(int irq, void *d) resp.high = QI_PSTRM_ADDR(address) | QI_PSTRM_DEVFN(req->devfn) | QI_PSTRM_RESP_CODE(result); - qi_submit_sync(&resp, svm->iommu); + qi_submit_sync(&resp, iommu); } head = (head + sizeof(*req)) & PRQ_RING_MASK; -- David Woodhouse Open Source Technology Centre david.woodho...@intel.com Intel Corporation
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu