-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/…
…mmarek/kbuild Pull non-critical part of kbuild from Michal Marek: - New semantic patches, make coccicheck M= fix - make gtags speedup - make tags/TAGS always removes struct forward declarations - make deb-pkg fixes (some patches are still pending, I know) - scripts/patch-kernel fix from the last user of this script ;) * 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild: scripts/patch-kernel: digest kernel.org hosted .xz patches scripts/coccinelle/api/ptr_ret.cocci: semantic patch for ptr_err scripts: refactor remove structure forward declarations kbuild: incremental tags update for GNU Global coccinelle: semantic patch for bool issues coccinelle: semantic patch to check for PTR_ERR after reassignment coccinelle: semantic patch converting 0 test to null test coccinelle: semantic patch for missing iounmap coccinelle: semantic patch for missing clk_put kbuild: Fix out-of-tree build for 'make deb-pkg' kbuild: Only build linux-image package for UML kbuild: Fix link to headers in 'make deb-pkg' coccicheck: change handling of C={1,2} when M= is set
- Loading branch information
Showing
9 changed files
with
687 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
/// | ||
/// Use PTR_RET rather than if(IS_ERR(...)) + PTR_ERR | ||
/// | ||
// Confidence: High | ||
// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6. GPLv2. | ||
// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2. | ||
// URL: http://coccinelle.lip6.fr/ | ||
// Options: -no_includes -include_headers | ||
// | ||
// Keywords: ERR_PTR, PTR_ERR, PTR_RET | ||
// Version min: 2.6.39 | ||
// | ||
|
||
virtual context | ||
virtual patch | ||
virtual org | ||
virtual report | ||
|
||
@depends on patch@ | ||
expression ptr; | ||
@@ | ||
|
||
- if (IS_ERR(ptr)) return PTR_ERR(ptr); else return 0; | ||
+ return PTR_RET(ptr); | ||
|
||
@depends on patch@ | ||
expression ptr; | ||
@@ | ||
|
||
- if (IS_ERR(ptr)) return PTR_ERR(ptr); return 0; | ||
+ return PTR_RET(ptr); | ||
|
||
@r1 depends on !patch@ | ||
expression ptr; | ||
position p1; | ||
@@ | ||
|
||
* if@p1 (IS_ERR(ptr)) return PTR_ERR(ptr); else return 0; | ||
|
||
@r2 depends on !patch@ | ||
expression ptr; | ||
position p2; | ||
@@ | ||
|
||
* if@p2 (IS_ERR(ptr)) return PTR_ERR(ptr); return 0; | ||
|
||
@script:python depends on org@ | ||
p << r1.p1; | ||
@@ | ||
coccilib.org.print_todo(p[0], "WARNING: PTR_RET can be used") | ||
@script:python depends on org@ | ||
p << r2.p2; | ||
@@ | ||
coccilib.org.print_todo(p[0], "WARNING: PTR_RET can be used") | ||
@script:python depends on report@ | ||
p << r1.p1; | ||
@@ | ||
coccilib.report.print_report(p[0], "WARNING: PTR_RET can be used") | ||
@script:python depends on report@ | ||
p << r2.p2; | ||
@@ | ||
coccilib.report.print_report(p[0], "WARNING: PTR_RET can be used") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
/// Find missing clk_puts. | ||
/// | ||
//# This only signals a missing clk_put when there is a clk_put later | ||
//# in the same function. | ||
//# False positives can be due to loops. | ||
// | ||
// Confidence: Moderate | ||
// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6. GPLv2. | ||
// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2. | ||
// URL: http://coccinelle.lip6.fr/ | ||
// Comments: | ||
// Options: | ||
|
||
virtual context | ||
virtual org | ||
virtual report | ||
|
||
@clk@ | ||
expression e; | ||
statement S,S1; | ||
int ret; | ||
position p1,p2,p3; | ||
@@ | ||
|
||
e = clk_get@p1(...) | ||
... when != clk_put(e) | ||
if (<+...e...+>) S | ||
... when any | ||
when != clk_put(e) | ||
when != if (...) { ... clk_put(e); ... } | ||
( | ||
if (ret == 0) S1 | ||
| | ||
if (...) | ||
{ ... | ||
return 0; } | ||
| | ||
if (...) | ||
{ ... | ||
return <+...e...+>; } | ||
| | ||
*if@p2 (...) | ||
{ ... when != clk_put(e) | ||
when forall | ||
return@p3 ...; } | ||
) | ||
... when any | ||
clk_put(e); | ||
|
||
@script:python depends on org@ | ||
p1 << clk.p1; | ||
p2 << clk.p2; | ||
p3 << clk.p3; | ||
@@ | ||
cocci.print_main("clk_get",p1) | ||
cocci.print_secs("if",p2) | ||
cocci.print_secs("needed clk_put",p3) | ||
@script:python depends on report@ | ||
p1 << clk.p1; | ||
p2 << clk.p2; | ||
p3 << clk.p3; | ||
@@ | ||
msg = "ERROR: missing clk_put; clk_get on line %s and execution via conditional on line %s" % (p1[0].line,p2[0].line) | ||
coccilib.report.print_report(p3[0],msg) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
/// Find missing iounmaps. | ||
/// | ||
//# This only signals a missing iounmap when there is an iounmap later | ||
//# in the same function. | ||
//# False positives can be due to loops. | ||
// | ||
// Confidence: Moderate | ||
// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6. GPLv2. | ||
// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2. | ||
// URL: http://coccinelle.lip6.fr/ | ||
// Comments: | ||
// Options: | ||
|
||
virtual context | ||
virtual org | ||
virtual report | ||
|
||
@iom@ | ||
expression e; | ||
statement S,S1; | ||
int ret; | ||
position p1,p2,p3; | ||
@@ | ||
|
||
e = \(ioremap@p1\|ioremap_nocache@p1\)(...) | ||
... when != iounmap(e) | ||
if (<+...e...+>) S | ||
... when any | ||
when != iounmap(e) | ||
when != if (...) { ... iounmap(e); ... } | ||
( | ||
if (ret == 0) S1 | ||
| | ||
if (...) | ||
{ ... | ||
return 0; } | ||
| | ||
if (...) | ||
{ ... | ||
return <+...e...+>; } | ||
| | ||
*if@p2 (...) | ||
{ ... when != iounmap(e) | ||
when forall | ||
return@p3 ...; } | ||
) | ||
... when any | ||
iounmap(e); | ||
|
||
@script:python depends on org@ | ||
p1 << iom.p1; | ||
p2 << iom.p2; | ||
p3 << iom.p3; | ||
@@ | ||
cocci.print_main("ioremap",p1) | ||
cocci.print_secs("if",p2) | ||
cocci.print_secs("needed iounmap",p3) | ||
@script:python depends on report@ | ||
p1 << iom.p1; | ||
p2 << iom.p2; | ||
p3 << iom.p3; | ||
@@ | ||
msg = "ERROR: missing iounmap; ioremap on line %s and execution via conditional on line %s" % (p1[0].line,p2[0].line) | ||
coccilib.report.print_report(p3[0],msg) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,178 @@ | ||
/// Bool initializations should use true and false. Bool tests don't need | ||
/// comparisons. Based on contributions from Joe Perches, Rusty Russell | ||
/// and Bruce W Allan. | ||
/// | ||
// Confidence: High | ||
// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6. GPLv2. | ||
// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2. | ||
// URL: http://coccinelle.lip6.fr/ | ||
// Options: -include_headers | ||
|
||
virtual patch | ||
virtual context | ||
virtual org | ||
virtual report | ||
|
||
@depends on patch@ | ||
bool t; | ||
symbol true; | ||
symbol false; | ||
@@ | ||
|
||
( | ||
- t == true | ||
+ t | ||
| | ||
- true == t | ||
+ t | ||
| | ||
- t != true | ||
+ !t | ||
| | ||
- true != t | ||
+ !t | ||
| | ||
- t == false | ||
+ !t | ||
| | ||
- false == t | ||
+ !t | ||
| | ||
- t != false | ||
+ t | ||
| | ||
- false != t | ||
+ t | ||
) | ||
|
||
@depends on patch disable is_zero, isnt_zero@ | ||
bool t; | ||
@@ | ||
|
||
( | ||
- t == 1 | ||
+ t | ||
| | ||
- t != 1 | ||
+ !t | ||
| | ||
- t == 0 | ||
+ !t | ||
| | ||
- t != 0 | ||
+ t | ||
) | ||
|
||
@depends on patch@ | ||
bool b; | ||
@@ | ||
( | ||
b = | ||
- 0 | ||
+ false | ||
| | ||
b = | ||
- 1 | ||
+ true | ||
) | ||
|
||
// --------------------------------------------------------------------- | ||
|
||
@r1 depends on !patch@ | ||
bool t; | ||
position p; | ||
@@ | ||
|
||
( | ||
* t@p == true | ||
| | ||
* true == t@p | ||
| | ||
* t@p != true | ||
| | ||
* true != t@p | ||
| | ||
* t@p == false | ||
| | ||
* false == t@p | ||
| | ||
* t@p != false | ||
| | ||
* false != t@p | ||
) | ||
|
||
@r2 depends on !patch disable is_zero, isnt_zero@ | ||
bool t; | ||
position p; | ||
@@ | ||
|
||
( | ||
* t@p == 1 | ||
| | ||
* t@p != 1 | ||
| | ||
* t@p == 0 | ||
| | ||
* t@p != 0 | ||
) | ||
|
||
@r3 depends on !patch@ | ||
bool b; | ||
position p1,p2; | ||
constant c; | ||
@@ | ||
( | ||
*b@p1 = 0 | ||
| | ||
*b@p1 = 1 | ||
| | ||
*b@p2 = c | ||
) | ||
|
||
@script:python depends on org@ | ||
p << r1.p; | ||
@@ | ||
cocci.print_main("WARNING: Comparison to bool",p) | ||
@script:python depends on org@ | ||
p << r2.p; | ||
@@ | ||
cocci.print_main("WARNING: Comparison of bool to 0/1",p) | ||
@script:python depends on org@ | ||
p1 << r3.p1; | ||
@@ | ||
cocci.print_main("WARNING: Assignment of bool to 0/1",p1) | ||
@script:python depends on org@ | ||
p2 << r3.p2; | ||
@@ | ||
cocci.print_main("ERROR: Assignment of bool to non-0/1 constant",p2) | ||
@script:python depends on report@ | ||
p << r1.p; | ||
@@ | ||
coccilib.report.print_report(p[0],"WARNING: Comparison to bool") | ||
@script:python depends on report@ | ||
p << r2.p; | ||
@@ | ||
coccilib.report.print_report(p[0],"WARNING: Comparison of bool to 0/1") | ||
@script:python depends on report@ | ||
p1 << r3.p1; | ||
@@ | ||
coccilib.report.print_report(p1[0],"WARNING: Assignment of bool to 0/1") | ||
@script:python depends on report@ | ||
p2 << r3.p2; | ||
@@ | ||
coccilib.report.print_report(p2[0],"ERROR: Assignment of bool to non-0/1 constant") |
Oops, something went wrong.