From: der.herr@hofr.at (Nicholas Mc Guire)
To: cocci@systeme.lip6.fr
Subject: [Cocci] RFC - simple scanners and matching macros
Date: Tue, 23 Dec 2014 16:20:45 +0100 [thread overview]
Message-ID: <20141223152045.GA6138@opentech.at> (raw)
Hi !
writing some cocci file to detect some completion related
issues - for the function cases it works fine. If its correct
I'm not sure. What the first one should be doing is
find any siutation where a completion is reinitialized
with init_completion rather than reinit_completion.
so find the first init_completion() and take the position
(rule c) then check if the completion object was
used or passed to a function before the next init_completion
Q: do I need to handle more than those 4 cases to catch all ?
The second one should find sequential init_completion() of the
same struct completion without that they are used in between
so basically the inverse case of the first - I'm not sure if
its worth the trouble though - in 3.18.0 there are 2 cases
found and both were correct findings
The third scanner was to search for DECLARE_COMPLETION used
in functions for declearing struct completion on automatic variables
and transform them to DECLARE_COMPLETION_ONSTACK. Simple problem
it is not working... - obviously Im overlooking something - it
will just run through and report nothin.
Any hint would be appreciated.
One more procedural question - the patch-set generated should be
posted here+lkml for a first review or should it go out to all
the subsystem lists whose code is affected in CC as well ?
thx!
hofrat
first working case:
===================
@c@
expression cmp;
position p;
@@
init_completion at p(cmp)
@d@
expression E,c.cmp;
identifier f;
position c.p,p1;
@@
init_completion at p(cmp)
...
(
E = cmp
|
E = &cmp
|
f(..., cmp,...)
|
f(..., &cmp,...)
)
...
- init_completion at p1(cmp)
+ reinit_completion1(cmp)
2nd working case:
=================
@c@
expression cmp;
position p;
@@
init_completion at p(cmp)
@d@
expression E,c.cmp;
identifier f;
position c.p,p1;
@@
init_completion at p(cmp)
... when != E = cmp
when != E = &cmp
when != f(..., cmp,...)
when != f(..., &cmp,...)
- init_completion at p1(cmp);
the not-working case:
=====================
@e@
expression cmp;
identifier f;
position p;
@@
f(...) {
...
- DECLARE_COMPLETION at p(cmp);
+ DECLARE_COMPLETION_ONSTACK(cmp);
...
}
next reply other threads:[~2014-12-23 15:20 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-23 15:20 Nicholas Mc Guire [this message]
2014-12-23 15:59 ` [Cocci] RFC - simple scanners and matching macros Julia Lawall
2014-12-23 16:29 ` Nicholas Mc Guire
2014-12-23 16:48 ` Julia Lawall
2014-12-23 17:02 ` Nicholas Mc Guire
2014-12-23 17:12 ` Julia Lawall
2014-12-23 17:33 ` Nicholas Mc Guire
2014-12-23 18:08 ` Julia Lawall
2014-12-23 19:28 ` Nicholas Mc Guire
2014-12-23 20:53 ` Julia Lawall
2014-12-24 8:57 ` Nicholas Mc Guire
2014-12-24 9:27 ` Julia Lawall
2014-12-24 9:39 ` Nicholas Mc Guire
2014-12-24 9:42 ` Julia Lawall
2014-12-24 9:50 ` Nicholas Mc Guire
2014-12-24 9:56 ` Julia Lawall
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=20141223152045.GA6138@opentech.at \
--to=der.herr@hofr.at \
--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.