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@p(cmp)
@d@
expression E,c.cmp;
identifier f;
position c.p,p1;
@@
init_completion@p(cmp)
...
(
E = cmp
|
E = &cmp
|
f(..., cmp,...)
|
f(..., &cmp,...)
)
...
- init_completion@p1(cmp)
+ reinit_completion1(cmp)
2nd working case:
=================
@c@
expression cmp;
position p;
@@
init_completion@p(cmp)
@d@
expression E,c.cmp;
identifier f;
position c.p,p1;
@@
init_completion@p(cmp)
... when != E = cmp
when != E = &cmp
when != f(..., cmp,...)
when != f(..., &cmp,...)
- init_completion@p1(cmp);
the not-working case:
=====================
@e@
expression cmp;
identifier f;
position p;
@@
f(...) {
...
- DECLARE_COMPLETION@p(cmp);
+ DECLARE_COMPLETION_ONSTACK(cmp);
...
}
_______________________________________________
Cocci mailing list
[email protected]
https://systeme.lip6.fr/mailman/listinfo/cocci