All of lore.kernel.org
 help / color / mirror / Atom feed
From: d.granat@samsung.com (Daniel Granat)
To: cocci@systeme.lip6.fr
Subject: [Cocci] [PATCH] Add coccinelle script that makes sure that tables are NULL terminated
Date: Fri, 27 Mar 2015 11:32:16 +0100	[thread overview]
Message-ID: <551531B0.4090108@samsung.com> (raw)
In-Reply-To: <1425043313-15844-1-git-send-email-d.granat@samsung.com>

Hi,

Could you please review my patch I sent last month? It checks if tables 
in kernel are NULL terminated. Script matches only names specified in 
source code by postfix='*_device_id$' and by list of prefixes which is 
now prefix_list = ['platform', 'of', 'i2c']. I think it could by useful 
in kernel sources.

On 02/27/2015 02:21 PM, Daniel Granat wrote:
> <pre wrap>
 > Signed-off-by: Daniel Granat &lt;d.granat at samsung.com&gt;
 > ---
 > scripts/coccinelle/misc/device_id_tables.cocci | 95 
++++++++++++++++++++++++++
 > 1 file changed, 95 insertions(+)
 > create mode 100644 scripts/coccinelle/misc/device_id_tables.cocci
 >
 > diff --git a/scripts/coccinelle/misc/device_id_tables.cocci 
b/scripts/coccinelle/misc/device_id_tables.cocci
 > new file mode 100644
 > index 0000000..5968984
 > --- /dev/null
 > +++ b/scripts/coccinelle/misc/device_id_tables.cocci
 > @@ -0,0 +1,95 @@
 > +/// Make sure '*_device_id$' tables are NULL terminated
 > +//
 > +// Keywords: device_id
 > +// Confidence: Medium
 > +// Options: --include-headers
 > +
 > +virtual org
 > +virtual report
 > +virtual patch
 > +
 > + at initialize:python@
 > +@@
 > +import re
 > +
 > +postfix = '_device_id$'
 > +prefix_list = ['platform', 'of', 'i2c']
 > +
 > + at r1 depends on patch || org || report@
 > +position p1;
 > +identifier var, arr;
 > +identifier struct_name;
 > +expression E;
 > +@@
 > +
 > +(
 > +struct struct_name arr[] = {
 > + ...,
 > + {
 > + .var = E,
 > + }
 > + @p1
 > +};
 > +|
 > +struct struct_name arr[] = {
 > + ...,
 > + { ..., var, ... },
 > + @p1
 > +};
 > +)
 > +
 > + at script:python depends on report@
 > +struct_name &lt;&lt; r1.struct_name;
 > +p1 &lt;&lt; r1.p1;
 > +arr &lt;&lt; r1.arr;
 > +pattern;
 > +@@
 > +
 > +for i in prefix_list:
 > + pattern = str(i)+postfix
 > + if re.match(pattern, struct_name) != None:
 > + print "\nCOCCI: \"%s\" matchs required pattern \"%s\"" % 
(struct_name, pattern)
 > + msg = "\"%s\" is not NULL terminated at line %s" % (arr, p1[0].line)
 > + coccilib.report.print_report(p1[0],msg)
 > + break
 > +
 > + at script:python match depends on patch@
 > +struct_name &lt;&lt; r1.struct_name;
 > +matched_name;
 > +pattern;
 > +@@
 > +
 > +coccinelle.matched_name = ''
 > +
 > +for i in prefix_list:
 > + pattern = str(i)+postfix
 > + if re.match(pattern, struct_name) != None:
 > + coccinelle.matched_name = struct_name
 > + break
 > +
 > + at r2 depends on patch@
 > +position r1.p1;
 > +identifier var, arr;
 > +identifier match.matched_name;
 > +expression E;
 > +@@
 > +
 > +(
 > +struct matched_name arr[] = {
 > + ...,
 > + {
 > + .var = E,
 > +- }
 > + @p1
 > ++ },
 > ++ {},
 > +};
 > +|
 > +struct matched_name arr[] = {
 > + ...,
 > + { ..., var, ... },
 > + @p1
 > ++ {},
 > +};
 > +)
 > +
 > </pre></body>
 > </html>
 > </html>

WARNING: multiple messages have this Message-ID (diff)
From: Daniel Granat <d.granat@samsung.com>
To: Julia.Lawall@lip6.fr, cocci@systeme.lip6.fr,
	linux-kernel@vger.kernel.org
Cc: Gilles.Muller@lip6.fr, nicolas.palix@imag.fr,
	Karol Wrona <k.wrona@samsung.com>
Subject: Re: [PATCH] Add coccinelle script that makes sure that tables are NULL terminated
Date: Fri, 27 Mar 2015 11:32:16 +0100	[thread overview]
Message-ID: <551531B0.4090108@samsung.com> (raw)
In-Reply-To: <1425043313-15844-1-git-send-email-d.granat@samsung.com>

Hi,

Could you please review my patch I sent last month? It checks if tables 
in kernel are NULL terminated. Script matches only names specified in 
source code by postfix='*_device_id$' and by list of prefixes which is 
now prefix_list = ['platform', 'of', 'i2c']. I think it could by useful 
in kernel sources.

On 02/27/2015 02:21 PM, Daniel Granat wrote:
> <pre wrap>
 > Signed-off-by: Daniel Granat &lt;d.granat@samsung.com&gt;
 > ---
 > scripts/coccinelle/misc/device_id_tables.cocci | 95 
++++++++++++++++++++++++++
 > 1 file changed, 95 insertions(+)
 > create mode 100644 scripts/coccinelle/misc/device_id_tables.cocci
 >
 > diff --git a/scripts/coccinelle/misc/device_id_tables.cocci 
b/scripts/coccinelle/misc/device_id_tables.cocci
 > new file mode 100644
 > index 0000000..5968984
 > --- /dev/null
 > +++ b/scripts/coccinelle/misc/device_id_tables.cocci
 > @@ -0,0 +1,95 @@
 > +/// Make sure '*_device_id$' tables are NULL terminated
 > +//
 > +// Keywords: device_id
 > +// Confidence: Medium
 > +// Options: --include-headers
 > +
 > +virtual org
 > +virtual report
 > +virtual patch
 > +
 > +@initialize:python@
 > +@@
 > +import re
 > +
 > +postfix = '_device_id$'
 > +prefix_list = ['platform', 'of', 'i2c']
 > +
 > +@r1 depends on patch || org || report@
 > +position p1;
 > +identifier var, arr;
 > +identifier struct_name;
 > +expression E;
 > +@@
 > +
 > +(
 > +struct struct_name arr[] = {
 > + ...,
 > + {
 > + .var = E,
 > + }
 > + @p1
 > +};
 > +|
 > +struct struct_name arr[] = {
 > + ...,
 > + { ..., var, ... },
 > + @p1
 > +};
 > +)
 > +
 > +@script:python depends on report@
 > +struct_name &lt;&lt; r1.struct_name;
 > +p1 &lt;&lt; r1.p1;
 > +arr &lt;&lt; r1.arr;
 > +pattern;
 > +@@
 > +
 > +for i in prefix_list:
 > + pattern = str(i)+postfix
 > + if re.match(pattern, struct_name) != None:
 > + print "\nCOCCI: \"%s\" matchs required pattern \"%s\"" % 
(struct_name, pattern)
 > + msg = "\"%s\" is not NULL terminated at line %s" % (arr, p1[0].line)
 > + coccilib.report.print_report(p1[0],msg)
 > + break
 > +
 > +@script:python match depends on patch@
 > +struct_name &lt;&lt; r1.struct_name;
 > +matched_name;
 > +pattern;
 > +@@
 > +
 > +coccinelle.matched_name = ''
 > +
 > +for i in prefix_list:
 > + pattern = str(i)+postfix
 > + if re.match(pattern, struct_name) != None:
 > + coccinelle.matched_name = struct_name
 > + break
 > +
 > +@r2 depends on patch@
 > +position r1.p1;
 > +identifier var, arr;
 > +identifier match.matched_name;
 > +expression E;
 > +@@
 > +
 > +(
 > +struct matched_name arr[] = {
 > + ...,
 > + {
 > + .var = E,
 > +- }
 > + @p1
 > ++ },
 > ++ {},
 > +};
 > +|
 > +struct matched_name arr[] = {
 > + ...,
 > + { ..., var, ... },
 > + @p1
 > ++ {},
 > +};
 > +)
 > +
 > </pre></body>
 > </html>
 > </html>



  reply	other threads:[~2015-03-27 10:32 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-27 13:21 [Cocci] [PATCH] Add coccinelle script that makes sure that tables are NULL terminated Daniel Granat
2015-02-27 13:21 ` Daniel Granat
2015-03-27 10:32 ` Daniel Granat [this message]
2015-03-27 10:32   ` Daniel Granat
2015-04-22 11:08 ` [Cocci] " Krzysztof Kozlowski
2015-04-22 11:08   ` Krzysztof Kozlowski
2015-04-22 11:16   ` [Cocci] " Daniel Granat
2015-04-22 11:16     ` Daniel Granat
2015-05-18 11:29 ` [Cocci] [PATCH v2] " Daniel Granat
2015-05-18 11:29   ` Daniel Granat
2015-05-19  8:57   ` [Cocci] " Julia Lawall
2015-05-19  8:57     ` Julia Lawall
2015-05-19 11:58 ` [Cocci] [PATCH v3] Added tables i2c_device_id and platform_device_id for checking. Extend checking on tables containing structures which are initialized without specifying member name Daniel Granat
2015-05-19 11:58   ` Daniel Granat
2015-05-25 20:19   ` [Cocci] " Julia Lawall
2015-05-25 20:19     ` Julia Lawall
2015-06-02 16:10   ` [Cocci] [PATCH v4] Added tables i2c_device_id and platform_device_id for Daniel Granat
2015-06-02 16:10     ` Daniel Granat
2015-06-02 16:10     ` [Cocci] [PATCH v4] Added tables i2c_device_id and platform_device_id for checking. Extend checking on tables containing structures which are initialized without specifying member name Daniel Granat
2015-06-02 16:10       ` Daniel Granat
2015-06-03  9:42       ` [Cocci] " Julia Lawall
2015-06-03  9:42         ` Julia Lawall
2015-06-23 11:02         ` [Cocci] [PATCH v5] Added tables (i2c/platform)_device_id " Daniel Granat
2015-06-23 11:02           ` Daniel Granat
2015-06-23 11:50           ` [Cocci] " Krzysztof Kozlowski
2015-06-23 11:50             ` Krzysztof Kozlowski
2015-06-23 12:25           ` [Cocci] " Julia Lawall
2015-06-23 12:25             ` Julia Lawall
2015-06-26 14:39             ` [Cocci] [PATCH v6] coccinelle: Improve checking for missing NULL terminators Daniel Granat
2015-06-26 14:39               ` Daniel Granat
2015-10-23 15:31 ` [Cocci] " Daniel Granat
2015-10-23 15:31   ` Daniel Granat
2015-10-23 19:35   ` [Cocci] " Julia Lawall
2015-10-23 19:35     ` Julia Lawall
2015-10-26 21:46     ` [Cocci] " Michal Marek
2015-10-26 21:46       ` Michal Marek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=551531B0.4090108@samsung.com \
    --to=d.granat@samsung.com \
    --cc=cocci@systeme.lip6.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.