diff options
Diffstat (limited to 'scripts/coccinelle')
-rw-r--r-- | scripts/coccinelle/misc/boolconv.cocci | 90 | ||||
-rw-r--r-- | scripts/coccinelle/misc/irqf_oneshot.cocci | 52 |
2 files changed, 126 insertions, 16 deletions
diff --git a/scripts/coccinelle/misc/boolconv.cocci b/scripts/coccinelle/misc/boolconv.cocci new file mode 100644 index 000000000000..33c464d6bc71 --- /dev/null +++ b/scripts/coccinelle/misc/boolconv.cocci @@ -0,0 +1,90 @@ +/// Remove unneeded conversion to bool +/// +//# Relational and logical operators evaluate to bool, +//# explicit conversion is overly verbose and unneeded. +// +// Copyright: (C) 2016 Andrew F. Davis <afd@ti.com> GPLv2. + +virtual patch +virtual context +virtual org +virtual report + +//---------------------------------------------------------- +// For patch mode +//---------------------------------------------------------- + +@depends on patch@ +expression A, B; +symbol true, false; +@@ + +( + A == B +| + A != B +| + A > B +| + A < B +| + A >= B +| + A <= B +| + A && B +| + A || B +) +- ? true : false + +//---------------------------------------------------------- +// For context mode +//---------------------------------------------------------- + +@r depends on !patch@ +expression A, B; +symbol true, false; +position p; +@@ + +( + A == B +| + A != B +| + A > B +| + A < B +| + A >= B +| + A <= B +| + A && B +| + A || B +) +* ? true : false@p + +//---------------------------------------------------------- +// For org mode +//---------------------------------------------------------- + +@script:python depends on r&&org@ +p << r.p; +@@ + +msg = "WARNING: conversion to bool not needed here" +coccilib.org.print_todo(p[0], msg) + +//---------------------------------------------------------- +// For report mode +//---------------------------------------------------------- + +@script:python depends on r&&report@ +p << r.p; +@@ + +msg = "WARNING: conversion to bool not needed here" +coccilib.report.print_report(p[0], msg) diff --git a/scripts/coccinelle/misc/irqf_oneshot.cocci b/scripts/coccinelle/misc/irqf_oneshot.cocci index b421150a2eff..f698d6d0f5d7 100644 --- a/scripts/coccinelle/misc/irqf_oneshot.cocci +++ b/scripts/coccinelle/misc/irqf_oneshot.cocci @@ -5,7 +5,7 @@ /// So pass the IRQF_ONESHOT flag in this case. /// // -// Confidence: Good +// Confidence: Moderate // Comments: // Options: --no-includes @@ -15,16 +15,13 @@ virtual org virtual report @r1@ -expression dev; -expression irq; -expression thread_fn; -expression flags; +expression dev, irq, thread_fn; position p; @@ ( request_threaded_irq@p(irq, NULL, thread_fn, ( -flags | IRQF_ONESHOT +IRQF_ONESHOT | ... | IRQF_ONESHOT ) @@ -32,21 +29,34 @@ IRQF_ONESHOT | devm_request_threaded_irq@p(dev, irq, NULL, thread_fn, ( -flags | IRQF_ONESHOT +IRQF_ONESHOT | ... | IRQF_ONESHOT ) , ...) ) -@depends on patch@ -expression dev; -expression irq; -expression thread_fn; -expression flags; +@r2@ +expression dev, irq, thread_fn, flags, e; position p != r1.p; @@ ( +flags = IRQF_ONESHOT | ... +| +flags |= IRQF_ONESHOT | ... +) +... when != flags = e +( +request_threaded_irq@p(irq, NULL, thread_fn, flags, ...); +| +devm_request_threaded_irq@p(dev, irq, NULL, thread_fn, flags, ...); +) + +@depends on patch@ +expression dev, irq, thread_fn, flags; +position p != {r1.p,r2.p}; +@@ +( request_threaded_irq@p(irq, NULL, thread_fn, ( -0 @@ -69,15 +79,25 @@ devm_request_threaded_irq@p(dev, irq, NULL, thread_fn, ) @depends on context@ -position p != r1.p; +expression dev, irq; +position p != {r1.p,r2.p}; @@ -*request_threaded_irq@p(...) +( +*request_threaded_irq@p(irq, NULL, ...) +| +*devm_request_threaded_irq@p(dev, irq, NULL, ...) +) + @match depends on report || org@ -expression irq; -position p != r1.p; +expression dev, irq; +position p != {r1.p,r2.p}; @@ +( request_threaded_irq@p(irq, NULL, ...) +| +devm_request_threaded_irq@p(dev, irq, NULL, ...) +) @script:python depends on org@ p << match.p; |