lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:	Fri, 03 Dec 2010 12:32:59 +0100
From:	Michal Marek <mmarek@...e.cz>
To:	Julia Lawall <julia@...u.dk>
Cc:	npalix.work@...il.com, lkml <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH v3] scripts/coccinelle: update for compatability with
 Coccinelle 0.2.4

On 24.11.2010 15:54, Julia Lawall wrote:
> From: Julia Lawall <julia@...u.dk>
> 
> For doubleinit.cocci, Coccinelle 0.2.4 requires a comma after ... in a
> field list.  Coccinelle also now behaves gracefully when a definition is
> provided for a virtual that doesn't exist, so there is no need for the
> semantic patch code to check for this case.
> 
> Updated the documentation to reflect the fact that the best results will
> now be obtained with Coccinelle version 0.2.4 or later.
> 
> Signed-off-by: Julia Lawall <julia@...u.dk>

Applied to kbuild-2.6.git#misc, thanks. BTW, please always CC lkml when
sending patches.

Michal
> 
> ---
>  Documentation/coccinelle.txt             |    4 +++
>  scripts/coccinelle/misc/doubleinit.cocci |    6 ++--
>  scripts/coccinelle/null/deref_null.cocci |   39 +++++++++++--------------------
>  3 files changed, 21 insertions(+), 28 deletions(-)
> 
> diff --git a/Documentation/coccinelle.txt b/Documentation/coccinelle.txt
> index 4a276ea..96b6903 100644
> --- a/Documentation/coccinelle.txt
> +++ b/Documentation/coccinelle.txt
> @@ -36,6 +36,10 @@ as a regular user, and install it with
>  
>          sudo make install
>  
> +The semantic patches in the kernel will work best with Coccinelle version
> +0.2.4 or later.  Using earlier versions may incur some parse errors in the
> +semantic patch code, but any results that are obtained should still be
> +correct.
>  
>   Using Coccinelle on the Linux kernel
>  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> diff --git a/scripts/coccinelle/misc/doubleinit.cocci b/scripts/coccinelle/misc/doubleinit.cocci
> index 55d7dc1..156b20a 100644
> --- a/scripts/coccinelle/misc/doubleinit.cocci
> +++ b/scripts/coccinelle/misc/doubleinit.cocci
> @@ -7,7 +7,7 @@
>  // Copyright: (C) 2010 Julia Lawall, DIKU.  GPLv2.
>  // Copyright: (C) 2010 Gilles Muller, INRIA/LiP6.  GPLv2.
>  // URL: http://coccinelle.lip6.fr/
> -// Comments:
> +// Comments: requires at least Coccinelle 0.2.4, lex or parse error otherwise
>  // Options: -no_includes -include_headers
>  
>  virtual org
> @@ -19,7 +19,7 @@ position p0,p;
>  expression E;
>  @@
>  
> -struct I s =@p0 { ... .fld@p = E, ...};
> +struct I s =@p0 { ..., .fld@p = E, ...};
>  
>  @s@
>  identifier I, s, r.fld;
> @@ -27,7 +27,7 @@ position r.p0,p;
>  expression E;
>  @@
>  
> -struct I s =@p0 { ... .fld@p = E, ...};
> +struct I s =@p0 { ..., .fld@p = E, ...};
>  
>  @script:python depends on org@
>  p0 << r.p0;
> diff --git a/scripts/coccinelle/null/deref_null.cocci b/scripts/coccinelle/null/deref_null.cocci
> index 9969d76..cdac6cf 100644
> --- a/scripts/coccinelle/null/deref_null.cocci
> +++ b/scripts/coccinelle/null/deref_null.cocci
> @@ -11,21 +11,10 @@
>  // Options:
>  
>  virtual context
> -virtual patch
>  virtual org
>  virtual report
>  
> -@...tialize:python depends on !context && patch && !org && !report@
> -
> -import sys
> -print >> sys.stderr, "This semantic patch does not support the 'patch' mode."
> -
> -@...ends on patch@
> -@@
> -
> -this_rule_should_never_matches();
> -
> -@ifm depends on !patch@
> +@ifm@
>  expression *E;
>  statement S1,S2;
>  position p1;
> @@ -35,7 +24,7 @@ if@p1 ((E == NULL && ...) || ...) S1 else S2
>  
>  // The following two rules are separate, because both can match a single
>  // expression in different ways
> -@pr1 depends on !patch expression@
> +@pr1 expression@
>  expression *ifm.E;
>  identifier f;
>  position p1;
> @@ -43,7 +32,7 @@ position p1;
>  
>   (E != NULL && ...) ? <+...E->f@.....+> : ...
>  
> -@pr2 depends on !patch expression@
> +@pr2 expression@
>  expression *ifm.E;
>  identifier f;
>  position p2;
> @@ -59,7 +48,7 @@ position p2;
>  
>  // For org and report modes
>  
> -@r depends on !context && !patch && (org || report) exists@
> +@r depends on !context && (org || report) exists@
>  expression subE <= ifm.E;
>  expression *ifm.E;
>  expression E1,E2;
> @@ -99,7 +88,7 @@ if@p1 ((E == NULL && ...) || ...)
>  }
>  else S3
>  
> -@...ipt:python depends on !context && !patch && !org && report@
> +@...ipt:python depends on !context && !org && report@
>  p << r.p;
>  p1 << ifm.p1;
>  x << ifm.E;
> @@ -109,7 +98,7 @@ msg="ERROR: %s is NULL but dereferenced." % (x)
>  coccilib.report.print_report(p[0], msg)
>  cocci.include_match(False)
>  
> -@...ipt:python depends on !context && !patch && org && !report@
> +@...ipt:python depends on !context && org && !report@
>  p << r.p;
>  p1 << ifm.p1;
>  x << ifm.E;
> @@ -120,7 +109,7 @@ msg_safe=msg.replace("[","@(").replace("]",")")
>  cocci.print_main(msg_safe,p)
>  cocci.include_match(False)
>  
> -@s depends on !context && !patch && (org || report) exists@
> +@s depends on !context && (org || report) exists@
>  expression subE <= ifm.E;
>  expression *ifm.E;
>  expression E1,E2;
> @@ -159,7 +148,7 @@ if@p1 ((E == NULL && ...) || ...)
>  }
>  else S3
>  
> -@...ipt:python depends on !context && !patch && !org && report@
> +@...ipt:python depends on !context && !org && report@
>  p << s.p;
>  p1 << ifm.p1;
>  x << ifm.E;
> @@ -168,7 +157,7 @@ x << ifm.E;
>  msg="ERROR: %s is NULL but dereferenced." % (x)
>  coccilib.report.print_report(p[0], msg)
>  
> -@...ipt:python depends on !context && !patch && org && !report@
> +@...ipt:python depends on !context && org && !report@
>  p << s.p;
>  p1 << ifm.p1;
>  x << ifm.E;
> @@ -180,7 +169,7 @@ cocci.print_main(msg_safe,p)
>  
>  // For context mode
>  
> -@...ends on context && !patch && !org && !report exists@
> +@...ends on context && !org && !report exists@
>  expression subE <= ifm.E;
>  expression *ifm.E;
>  expression E1,E2;
> @@ -223,7 +212,7 @@ else S3
>  // The following three rules are duplicates of ifm, pr1 and pr2 respectively.
>  // It is need because the previous rule as already made a "change".
>  
> -@...1 depends on !patch@
> +@...1@
>  expression *E;
>  statement S1,S2;
>  position p1;
> @@ -231,7 +220,7 @@ position p1;
>  
>  if@p1 ((E == NULL && ...) || ...) S1 else S2
>  
> -@...1 depends on !patch expression@
> +@...1 expression@
>  expression *ifm1.E;
>  identifier f;
>  position p1;
> @@ -239,7 +228,7 @@ position p1;
>  
>   (E != NULL && ...) ? <+...E->f@.....+> : ...
>  
> -@...2 depends on !patch expression@
> +@...2 expression@
>  expression *ifm1.E;
>  identifier f;
>  position p2;
> @@ -253,7 +242,7 @@ position p2;
>   sizeof(<+...E->f@.....+>)
>  )
>  
> -@...ends on context && !patch && !org && !report exists@
> +@...ends on context && !org && !report exists@
>  expression subE <= ifm1.E;
>  expression *ifm1.E;
>  expression E1,E2;

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ