summaryrefslogtreecommitdiff
path: root/drivers/iommu
diff options
context:
space:
mode:
authorJulia Lawall <Julia.Lawall@lip6.fr>2012-07-24 16:18:14 +0200
committerJoerg Roedel <joerg.roedel@amd.com>2012-08-03 16:04:15 +0200
commitd2900bd63f65bf1f40bf17f3c51457ae29fae6a8 (patch)
tree2d22a593d7e94102c5d3cc461ca561f567b88071 /drivers/iommu
parent9579a974d1018c7f1d42455c29aa3f0d512c99fe (diff)
downloadlinux-3.10-d2900bd63f65bf1f40bf17f3c51457ae29fae6a8.tar.gz
linux-3.10-d2900bd63f65bf1f40bf17f3c51457ae29fae6a8.tar.bz2
linux-3.10-d2900bd63f65bf1f40bf17f3c51457ae29fae6a8.zip
iommu/intel: add missing free_domain_mem
Add missing free_domain_mem on failure path after alloc_domain. A simplified version of the semantic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @km exists@ local idexpression e; expression e1,e2,e3; type T,T1; identifier f; @@ * e = alloc_domain(...) ... when any when != e = e1 when != e1 = (T)e when != e1(...,(T)e,...) when != &e->f if(...) { ... when != e2(...,(T1)e,...) when != e3 = e when forall ( return <+...e...+>; | * return ...; ) } // </smpl> Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Diffstat (limited to 'drivers/iommu')
-rw-r--r--drivers/iommu/intel-iommu.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
index 7469b534664..0204b62480b 100644
--- a/drivers/iommu/intel-iommu.c
+++ b/drivers/iommu/intel-iommu.c
@@ -2008,6 +2008,7 @@ static struct dmar_domain *get_domain_for_dev(struct pci_dev *pdev, int gaw)
if (!drhd) {
printk(KERN_ERR "IOMMU: can't find DMAR for device %s\n",
pci_name(pdev));
+ free_domain_mem(domain);
return NULL;
}
iommu = drhd->iommu;