Coccinelle release 1.0.0-rc4
[bpt/coccinelle.git] / tests / send_pci2
CommitLineData
34e49164
C
1Send to: thomas@winischhofer.net, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org
2
3Subject: [PATCH 2/2]: drivers/video: remove unnecessary pci_dev_put
4
5---------------------------------------
6
7From: Julia Lawall <julia@diku.dk>
8
9pci_get_class implicitly does a pci_dev_put on its second argument, so
10pci_dev_put is only needed if there is a break out of the loop.
11
12The semantic match detecting this problem is as follows:
13
14// <smpl>
15@@
16expression dev;
17expression E;
18@@
19
20* pci_dev_put(dev)
21 ... when != dev = E
22(
23* pci_get_device(...,dev)
24|
25* pci_get_device_reverse(...,dev)
26|
27* pci_get_subsys(...,dev)
28|
29* pci_get_class(...,dev)
30)
31// </smpl>
32
33Signed-off-by: Julia Lawall <julia@diku.dk>
34---
35
36diff -up a/drivers/video/sis/sis_main.c b/drivers/video/sis/sis_main.c
37--- a/drivers/video/sis/sis_main.c 2007-11-15 07:33:31.000000000 +0100
38+++ b/drivers/video/sis/sis_main.c 2007-11-15 07:38:48.000000000 +0100
39@@ -4620,9 +4620,9 @@ sisfb_find_host_bridge(struct sis_video_
40
41 while((pdev = pci_get_class(PCI_CLASS_BRIDGE_HOST, pdev))) {
42 temp = pdev->vendor;
43- pci_dev_put(pdev);
44 if(temp == pcivendor) {
45 ret = 1;
46+ pci_dev_put(pdev);
47 break;
48 }
49 }