Re: [PATCH] scripts: Coccinelle script for pci_free_consistent()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I would love to, but to be honest Im a bit confused about the mailing lists - which one is the main Linux kernel mailing list? http://vger.kernel.org/vger-lists.html lists a lot of linux related ones and I also cant find any email for Michal Marek (only the mmarek@xxxxxxx version). The Coccinelle list is probably cocci(at)systeme.lip6.fr, so at least that I did find.
Would appreciate any further info.

With regards, Petr
Quoting Nicolas Palix <nicolas.palix@xxxxxxx>:

Hi,

Could you add the Coccinelle mailing list, the main Linux kernel mailing list
and Michal Marek in copy of your resubmission? So Julia will only have
to Ack your
patch.

BTW thanks for your welcome contribution.

Regards,

On Thu, May 2, 2013 at 2:57 AM, Julia Lawall <julia.lawall@xxxxxxx> wrote:
On Thu, 2 May 2013, strnape1@xxxxxxxxxxx wrote:

Created coccinelle script for reporting missing pci_free_consistent() calls.

Signed-off-by: Petr Strnad <strnape1@xxxxxxxxxxx>
---
diff --git a/scripts/coccinelle/free/pci_free_consistent.cocci
b/scripts/coccinelle/free/pci_free_consistent.cocci
new file mode 100644
index 0000000..9d9a56f
--- /dev/null
+++ b/scripts/coccinelle/free/pci_free_consistent.cocci
@@ -0,0 +1,44 @@
+/// Find missing pci_free_consistent for every pci_alloc_consistent.
+///
+// Confidence: Moderate
+// Copyright: (C) 2013 Petr Strnad.  GPLv2.
+// URL: http://coccinelle.lip6.fr/
+// Keywords: pci_free_consistent, pci_alloc_consistent
+// Options: --no-includes --include-headers
+
+virtual report
+
+@search@
+local idexpression id;
+expression x,y,z;
+position p1,p2;
+@@
+
+id = pci_alloc_consistent@p1(x,y,&z)
+... when != pci_free_consistent(x,y,id,z)
+    when forall
+(
+if (id == NULL) { ... return ...; }
+|
+if (id == NULL || (unsigned long)id & 0xFF) { ... return ...; }

The above two lines can be combined into if (id == NULL || ....) { ...
return ...; }

+|
+if (id == NULL) return ...;

This case shouldn't be necessary.  It should automatically consider { ...
return ...; } as also matching return ...; (isomorphism).

+|
+if (id) { ... return 0; }
+|
+if (id) { ... } else { ... } return 0;

Here, I would put S1 and S2, declared as statement metavariables, rather
than { ... }

julia

+|
+return 0;
+|
+return id;
+|
+*return@p2 ...;
+)
+
+@script:python depends on report@
+p1 << search.p1;
+p2 << search.p2;
+@@
+
+msg = "ERROR: missing pci_free_consistent; pci_alloc_consistent on line %s
and return without freeing on line %s" % (p1[0].line,p2[0].line)
+coccilib.report.print_report(p2[0],msg)

--
To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



--
Nicolas Palix



--
To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Kernel Development]     [Kernel Announce]     [Kernel Newbies]     [Linux Networking Development]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Device Mapper]

  Powered by Linux