From: Julia Lawall <julia@xxxxxxx> The destination of goto error also does a kfree(g_iommus), so it is not correct to do one here. This was found using the following semantic match. (http://www.emn.fr/x-info/coccinelle/) // <smpl> @r1@ expression E; position p1,p2; @@ kfree@p1(E); ... kfree@p2(E); @subexps@ expression E1; position r1.p1,p; @@ kfree@p1(<+... E1@p ...+>); @recollect@ position subexps.p; expression E1; @@ E1@p @doublekfree@ position r1.p1,r1.p2; expression recollect.E1,E2,E; position p; statement S; @@ kfree@p1(E); <+... E1@p=E2 ...+> // the actual semantic match contains other assignments kfree@p2(E); @notdoublekfree@ position r1.p1,r1.p2; position any doublekfree.p; expression E,E1,E2; @@ * kfree@p1(E); ... when != E1@p when != E1@p = E2 // needed to match a variable decl * kfree@p2(E); // </smpl> Signed-off-by: Julia Lawall <julia@xxxxxxx> --- diff -u -p a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c --- a/drivers/pci/intel-iommu.c 2008-05-15 18:11:35.000000000 +0200 +++ b/drivers/pci/intel-iommu.c 2008-05-24 21:20:24.000000000 +0200 @@ -1725,7 +1725,6 @@ int __init init_dmars(void) deferred_flush = kzalloc(g_num_of_iommus * sizeof(struct deferred_flush_tables), GFP_KERNEL); if (!deferred_flush) { - kfree(g_iommus); ret = -ENOMEM; goto error; } -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html