From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756722AbcJMQTg (ORCPT ); Thu, 13 Oct 2016 12:19:36 -0400 Received: from mail2-relais-roc.national.inria.fr ([192.134.164.83]:30635 "EHLO mail2-relais-roc.national.inria.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751518AbcJMQT3 (ORCPT ); Thu, 13 Oct 2016 12:19:29 -0400 X-IronPort-AV: E=Sophos;i="5.31,340,1473112800"; d="scan'208";a="240682365" Date: Thu, 13 Oct 2016 18:15:01 +0200 (CEST) From: Julia Lawall X-X-Sender: jll@hadrien To: Vaishali Thakkar cc: mmarek@suse.com, Gilles Muller , nicolas.palix@imag.fr, cocci@systeme.lip6.fr, linux-kernel@vger.kernel.org Subject: Re: [PATCH] Coccinelle: misc: Improve the script for more accurate results In-Reply-To: <1476354490-25635-1-git-send-email-vaishali.thakkar@oracle.com> Message-ID: References: <1476354490-25635-1-git-send-email-vaishali.thakkar@oracle.com> User-Agent: Alpine 2.10 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 13 Oct 2016, Vaishali Thakkar wrote: > Currently because of the left associativity of the operators, > pattern IRQF_ONESHOT | flags does not match with the pattern > when we have more than one flag after the disjunction. This > eventually results in giving false positives by the script. > The patch eliminates these FPs by improving the rule. > > Also, add a new rule to eliminate the false positives given by > the new line issue. > > Misc: > > 1. Add support for the context, org and report mode in the case > of devm_request_threaded_irq > 2. To be consistent with other scripts, change the confidence > level to 'Moderate' I'm getting a lot more reports for context mode than for patch mode, eg for sound/pcmcia/vx/vxpocket.c. Is this normal? thanks, julia > > Signed-off-by: Vaishali Thakkar > --- > scripts/coccinelle/misc/irqf_oneshot.cocci | 41 +++++++++++++++++++++++++----- > 1 file changed, 34 insertions(+), 7 deletions(-) > > diff --git a/scripts/coccinelle/misc/irqf_oneshot.cocci b/scripts/coccinelle/misc/irqf_oneshot.cocci > index b421150..76fd0a2 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 > > @@ -18,13 +18,12 @@ virtual report > expression dev; > expression irq; > expression thread_fn; > -expression flags; > position p; > @@ > ( > request_threaded_irq@p(irq, NULL, thread_fn, > ( > -flags | IRQF_ONESHOT > +IRQF_ONESHOT | ... > | > IRQF_ONESHOT > ) > @@ -32,20 +31,40 @@ IRQF_ONESHOT > | > devm_request_threaded_irq@p(dev, irq, NULL, thread_fn, > ( > -flags | IRQF_ONESHOT > +IRQF_ONESHOT | ... > | > IRQF_ONESHOT > ) > , ...) > ) > > -@depends on patch@ > +@r2@ > expression dev; > expression irq; > expression thread_fn; > expression flags; > +expression ret; > position p != r1.p; > @@ > +flags = IRQF_ONESHOT | ...; > +( > +ret = request_threaded_irq@p(irq, NULL, thread_fn, flags, ...); > +| > +ret = devm_request_threaded_irq@p(dev, irq, NULL, thread_fn, flags, ...); > +| > +return request_threaded_irq@p(irq, NULL, thread_fn, flags, ...); > +| > +return devm_request_threaded_irq@p(dev, irq, NULL, thread_fn, flags, ...); > +) > + > +@depends on patch@ > +expression dev; > +expression irq; > +expression thread_fn; > +expression flags; > +position p != {r1.p,r2.p}; > +@@ > + > ( > request_threaded_irq@p(irq, NULL, thread_fn, > ( > @@ -69,15 +88,23 @@ devm_request_threaded_irq@p(dev, irq, NULL, thread_fn, > ) > > @depends on context@ > -position p != r1.p; > +position p != {r1.p,r2.p}; > @@ > +( > *request_threaded_irq@p(...) > +| > +*devm_request_threaded_irq@p(...) > +) > > @match depends on report || org@ > expression irq; > -position p != r1.p; > +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; > -- > 2.1.4 > >