diff options
Diffstat (limited to 'ANDROID_3.4.5/scripts/coccinelle/locks')
4 files changed, 0 insertions, 373 deletions
diff --git a/ANDROID_3.4.5/scripts/coccinelle/locks/call_kern.cocci b/ANDROID_3.4.5/scripts/coccinelle/locks/call_kern.cocci deleted file mode 100644 index 8f10b496..00000000 --- a/ANDROID_3.4.5/scripts/coccinelle/locks/call_kern.cocci +++ /dev/null @@ -1,105 +0,0 @@ -/// Find functions that refer to GFP_KERNEL but are called with locks held. -//# The proposed change of converting the GFP_KERNEL is not necessarily the -//# correct one. It may be desired to unlock the lock, or to not call the -//# function under the lock in the first place. -/// -// Confidence: Moderate -// Copyright: (C) 2012 Nicolas Palix. GPLv2. -// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6. GPLv2. -// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2. -// URL: http://coccinelle.lip6.fr/ -// Comments: -// Options: -no_includes -include_headers - -virtual patch -virtual context -virtual org -virtual report - -@gfp exists@ -identifier fn; -position p; -@@ - -fn(...) { - ... when != read_unlock_irq(...) - when != write_unlock_irq(...) - when != read_unlock_irqrestore(...) - when != write_unlock_irqrestore(...) - when != spin_unlock(...) - when != spin_unlock_irq(...) - when != spin_unlock_irqrestore(...) - when != local_irq_enable(...) - when any - GFP_KERNEL@p - ... when any -} - -@locked exists@ -identifier gfp.fn; -position p1,p2; -@@ - -( -read_lock_irq@p1 -| -write_lock_irq@p1 -| -read_lock_irqsave@p1 -| -write_lock_irqsave@p1 -| -spin_lock@p1 -| -spin_trylock@p1 -| -spin_lock_irq@p1 -| -spin_lock_irqsave@p1 -| -local_irq_disable@p1 -) - (...) -... when != read_unlock_irq(...) - when != write_unlock_irq(...) - when != read_unlock_irqrestore(...) - when != write_unlock_irqrestore(...) - when != spin_unlock(...) - when != spin_unlock_irq(...) - when != spin_unlock_irqrestore(...) - when != local_irq_enable(...) -fn@p2(...) - -@depends on locked && patch@ -position gfp.p; -@@ - -- GFP_KERNEL@p -+ GFP_ATOMIC - -@depends on locked && !patch@ -position gfp.p; -@@ - -* GFP_KERNEL@p - -@script:python depends on !patch && org@ -p << gfp.p; -fn << gfp.fn; -p1 << locked.p1; -p2 << locked.p2; -@@ - -cocci.print_main("lock",p1) -cocci.print_secs("call",p2) -cocci.print_secs("GFP_KERNEL",p) - -@script:python depends on !patch && report@ -p << gfp.p; -fn << gfp.fn; -p1 << locked.p1; -p2 << locked.p2; -@@ - -msg = "ERROR: function %s called on line %s inside lock on line %s but uses GFP_KERNEL" % (fn,p2[0].line,p1[0].line) -coccilib.report.print_report(p[0], msg) diff --git a/ANDROID_3.4.5/scripts/coccinelle/locks/double_lock.cocci b/ANDROID_3.4.5/scripts/coccinelle/locks/double_lock.cocci deleted file mode 100644 index 63b24e68..00000000 --- a/ANDROID_3.4.5/scripts/coccinelle/locks/double_lock.cocci +++ /dev/null @@ -1,92 +0,0 @@ -/// Find double locks. False positives may occur when some paths cannot -/// occur at execution, due to the values of variables, and when there is -/// an intervening function call that releases the lock. -/// -// Confidence: Moderate -// Copyright: (C) 2010 Nicolas Palix, DIKU. GPLv2. -// Copyright: (C) 2010 Julia Lawall, DIKU. GPLv2. -// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2. -// URL: http://coccinelle.lip6.fr/ -// Comments: -// Options: -no_includes -include_headers - -virtual org -virtual report - -@locked@ -position p1; -expression E1; -position p; -@@ - -( -mutex_lock@p1 -| -mutex_trylock@p1 -| -spin_lock@p1 -| -spin_trylock@p1 -| -read_lock@p1 -| -read_trylock@p1 -| -write_lock@p1 -| -write_trylock@p1 -) (E1@p,...); - -@balanced@ -position p1 != locked.p1; -position locked.p; -identifier lock,unlock; -expression x <= locked.E1; -expression E,locked.E1; -expression E2; -@@ - -if (E) { - <+... when != E1 - lock(E1@p,...) - ...+> -} -... when != E1 - when != \(x = E2\|&x\) - when forall -if (E) { - <+... when != E1 - unlock@p1(E1,...) - ...+> -} - -@r depends on !balanced exists@ -expression x <= locked.E1; -expression locked.E1; -expression E2; -identifier lock; -position locked.p,p1,p2; -@@ - -lock@p1 (E1@p,...); -... when != E1 - when != \(x = E2\|&x\) -lock@p2 (E1,...); - -@script:python depends on org@ -p1 << r.p1; -p2 << r.p2; -lock << r.lock; -@@ - -cocci.print_main(lock,p1) -cocci.print_secs("second lock",p2) - -@script:python depends on report@ -p1 << r.p1; -p2 << r.p2; -lock << r.lock; -@@ - -msg = "second lock on line %s" % (p2[0].line) -coccilib.report.print_report(p1[0],msg) diff --git a/ANDROID_3.4.5/scripts/coccinelle/locks/flags.cocci b/ANDROID_3.4.5/scripts/coccinelle/locks/flags.cocci deleted file mode 100644 index 1c4ffe6f..00000000 --- a/ANDROID_3.4.5/scripts/coccinelle/locks/flags.cocci +++ /dev/null @@ -1,80 +0,0 @@ -/// Find nested lock+irqsave functions that use the same flags variables -/// -// Confidence: High -// 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 - -@r exists@ -expression lock1,lock2,flags; -position p1,p2; -@@ - -( -spin_lock_irqsave@p1(lock1,flags) -| -read_lock_irqsave@p1(lock1,flags) -| -write_lock_irqsave@p1(lock1,flags) -) -... when != flags -( -spin_lock_irqsave(lock1,flags) -| -read_lock_irqsave(lock1,flags) -| -write_lock_irqsave(lock1,flags) -| -spin_lock_irqsave@p2(lock2,flags) -| -read_lock_irqsave@p2(lock2,flags) -| -write_lock_irqsave@p2(lock2,flags) -) - -@d exists@ -expression f <= r.flags; -expression lock1,lock2,flags; -position r.p1, r.p2; -@@ - -( -*spin_lock_irqsave@p1(lock1,flags) -| -*read_lock_irqsave@p1(lock1,flags) -| -*write_lock_irqsave@p1(lock1,flags) -) -... when != f -( -*spin_lock_irqsave@p2(lock2,flags) -| -*read_lock_irqsave@p2(lock2,flags) -| -*write_lock_irqsave@p2(lock2,flags) -) - -// ---------------------------------------------------------------------- - -@script:python depends on d && org@ -p1 << r.p1; -p2 << r.p2; -@@ - -cocci.print_main("original lock",p1) -cocci.print_secs("nested lock+irqsave that reuses flags",p2) - -@script:python depends on d && report@ -p1 << r.p1; -p2 << r.p2; -@@ - -msg="ERROR: nested lock+irqsave that reuses flags from line %s." % (p1[0].line) -coccilib.report.print_report(p2[0], msg) 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) |