summaryrefslogtreecommitdiff
path: root/ANDROID_3.4.5/scripts/coccinelle/locks/mini_lock.cocci
diff options
context:
space:
mode:
Diffstat (limited to 'ANDROID_3.4.5/scripts/coccinelle/locks/mini_lock.cocci')
-rw-r--r--ANDROID_3.4.5/scripts/coccinelle/locks/mini_lock.cocci96
1 files changed, 0 insertions, 96 deletions
diff --git a/ANDROID_3.4.5/scripts/coccinelle/locks/mini_lock.cocci b/ANDROID_3.4.5/scripts/coccinelle/locks/mini_lock.cocci
deleted file mode 100644
index 3267d741..00000000
--- a/ANDROID_3.4.5/scripts/coccinelle/locks/mini_lock.cocci
+++ /dev/null
@@ -1,96 +0,0 @@
-/// Find missing unlocks. This semantic match considers the specific case
-/// where the unlock is missing from an if branch, and there is a lock
-/// before the if and an unlock after the if. False positives are due to
-/// cases where the if branch represents a case where the function is
-/// supposed to exit with the lock held, or where there is some preceding
-/// function call that releases the lock.
-///
-// Confidence: Moderate
-// Copyright: (C) 2010-2012 Nicolas Palix. GPLv2.
-// Copyright: (C) 2010-2012 Julia Lawall, INRIA/LIP6. GPLv2.
-// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2.
-// URL: http://coccinelle.lip6.fr/
-// Comments:
-// Options: -no_includes -include_headers
-
-virtual context
-virtual org
-virtual report
-
-@prelocked@
-position p1,p;
-expression E1;
-@@
-
-(
-mutex_lock@p1
-|
-mutex_trylock@p1
-|
-spin_lock@p1
-|
-spin_trylock@p1
-|
-read_lock@p1
-|
-read_trylock@p1
-|
-write_lock@p1
-|
-write_trylock@p1
-|
-read_lock_irq@p1
-|
-write_lock_irq@p1
-|
-read_lock_irqsave@p1
-|
-write_lock_irqsave@p1
-|
-spin_lock_irq@p1
-|
-spin_lock_irqsave@p1
-) (E1@p,...);
-
-@looped@
-position r;
-@@
-
-for(...;...;...) { <+... return@r ...; ...+> }
-
-@err exists@
-expression E1;
-position prelocked.p;
-position up != prelocked.p1;
-position r!=looped.r;
-identifier lock,unlock;
-@@
-
-*lock(E1@p,...);
-<+... when != E1
-if (...) {
- ... when != E1
-* return@r ...;
-}
-...+>
-*unlock@up(E1,...);
-
-@script:python depends on org@
-p << prelocked.p1;
-lock << err.lock;
-unlock << err.unlock;
-p2 << err.r;
-@@
-
-cocci.print_main(lock,p)
-cocci.print_secs(unlock,p2)
-
-@script:python depends on report@
-p << prelocked.p1;
-lock << err.lock;
-unlock << err.unlock;
-p2 << err.r;
-@@
-
-msg = "preceding lock on line %s" % (p[0].line)
-coccilib.report.print_report(p2[0],msg)