From: Julia Lawall pci_get_class implicitly does a pci_dev_put on its second argument, so pci_dev_put is only needed if there is a break out of the loop. The semantic match detecting this problem is as follows: // @@ expression dev; expression E; @@ * pci_dev_put(dev) ... when != dev = E ( * pci_get_device(...,dev) | * pci_get_device_reverse(...,dev) | * pci_get_subsys(...,dev) | * pci_get_class(...,dev) ) // Signed-off-by: Julia Lawall Cc: Dave Airlie Cc: Dave Jones Signed-off-by: Andrew Morton --- drivers/char/agp/amd-k7-agp.c | 4 ---- 1 file changed, 4 deletions(-) diff -puN drivers/char/agp/amd-k7-agp.c~drivers-char-remove-unnecessary-pci_dev_put drivers/char/agp/amd-k7-agp.c --- a/drivers/char/agp/amd-k7-agp.c~drivers-char-remove-unnecessary-pci_dev_put +++ a/drivers/char/agp/amd-k7-agp.c @@ -436,10 +436,6 @@ static int __devinit agp_amdk7_probe(str return -ENODEV; } cap_ptr = pci_find_capability(gfxcard, PCI_CAP_ID_AGP); - if (!cap_ptr) { - pci_dev_put(gfxcard); - continue; - } } /* With so many variants of NVidia cards, it's simpler just _