Skip to content

Commit

Permalink
Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/…
Browse files Browse the repository at this point in the history
…mmarek/kbuild

Pull kbuild misc changes from Michal Marek:
 "In the non-critical part of kbuild, I have
   - Some make coccicheck improvements and two new tests
   - Support for a cleaner html output in scripts/kernel-doc, named
     html5 (no, it does not play videos, yet)

  BTW, Randy wants to route further kernel-doc patches through the
  kbuild tree."

* 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
  Update SmPL/Coccinelle section of MAINTAINERS
  coccicheck: Add the rep+ctxt mode
  scripts/coccinelle/tests/odd_ptr_err.cocci: semantic patch for IS_ERR/PTR_ERR inconsistency
  scripts/tags.sh: Add magic for pci access functions
  scripts/coccinelle: ptr_ret: Add ternary operator version
  scripts/kernel-doc: drop maintainer
  scripts/kernel-doc: added support for html5
  • Loading branch information
torvalds committed Oct 12, 2012
2 parents 35e9a27 + 26de9c2 commit cbd8aca
Show file tree
Hide file tree
Showing 6 changed files with 369 additions and 17 deletions.
11 changes: 3 additions & 8 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -1958,10 +1958,10 @@ S: Supported
F: drivers/platform/x86/classmate-laptop.c

COCCINELLE/Semantic Patches (SmPL)
M: Julia Lawall <julia@diku.dk>
M: Julia Lawall <Julia.Lawall@lip6.fr>
M: Gilles Muller <Gilles.Muller@lip6.fr>
M: Nicolas Palix <npalix.work@gmail.com>
L: cocci@diku.dk (moderated for non-subscribers)
M: Nicolas Palix <nicolas.palix@imag.fr>
L: cocci@systeme.lip6.fr (moderated for non-subscribers)
W: http://coccinelle.lip6.fr/
S: Supported
F: scripts/coccinelle/
Expand Down Expand Up @@ -2423,11 +2423,6 @@ S: Maintained
F: Documentation/hwmon/dme1737
F: drivers/hwmon/dme1737.c

DOCBOOK FOR DOCUMENTATION
M: Randy Dunlap <rdunlap@xenotime.net>
S: Maintained
F: scripts/kernel-doc

DOCKING STATION DRIVER
M: Shaohua Li <shaohua.li@intel.com>
L: linux-acpi@vger.kernel.org
Expand Down
3 changes: 3 additions & 0 deletions scripts/coccicheck
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,9 @@ coccinelle () {
$SPATCH -D report $FLAGS -sp_file $COCCI $OPT $OPTIONS -no_show_diff || \
$SPATCH -D context $FLAGS -sp_file $COCCI $OPT $OPTIONS || \
$SPATCH -D org $FLAGS -sp_file $COCCI $OPT $OPTIONS -no_show_diff || exit 1
elif [ "$MODE" = "rep+ctxt" ] ; then
$SPATCH -D report $FLAGS -sp_file $COCCI $OPT $OPTIONS -no_show_diff && \
$SPATCH -D context $FLAGS -sp_file $COCCI $OPT $OPTIONS || exit 1
else
$SPATCH -D $MODE $FLAGS -sp_file $COCCI $OPT $OPTIONS || exit 1
fi
Expand Down
26 changes: 26 additions & 0 deletions scripts/coccinelle/api/ptr_ret.cocci
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,13 @@ expression ptr;
- if (IS_ERR(ptr)) return PTR_ERR(ptr); return 0;
+ return PTR_RET(ptr);

@depends on patch@
expression ptr;
@@

- (IS_ERR(ptr) ? PTR_ERR(ptr) : 0)
+ PTR_RET(ptr)

@r1 depends on !patch@
expression ptr;
position p1;
Expand All @@ -44,6 +51,13 @@ position p2;

* if@p2 (IS_ERR(ptr)) return PTR_ERR(ptr); return 0;

@r3 depends on !patch@
expression ptr;
position p3;
@@

* IS_ERR@p3(ptr) ? PTR_ERR(ptr) : 0

@script:python depends on org@
p << r1.p1;
@@
Expand All @@ -57,6 +71,12 @@ p << r2.p2;
coccilib.org.print_todo(p[0], "WARNING: PTR_RET can be used")
@script:python depends on org@
p << r3.p3;
@@
coccilib.org.print_todo(p[0], "WARNING: PTR_RET can be used")
@script:python depends on report@
p << r1.p1;
@@
Expand All @@ -68,3 +88,9 @@ p << r2.p2;
@@
coccilib.report.print_report(p[0], "WARNING: PTR_RET can be used")
@script:python depends on report@
p << r3.p3;
@@
coccilib.report.print_report(p[0], "WARNING: PTR_RET can be used")
65 changes: 65 additions & 0 deletions scripts/coccinelle/tests/odd_ptr_err.cocci
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
/// PTR_ERR should access the value just tested by IS_ERR
//# There can be false positives in the patch case, where it is the call
//# IS_ERR that is wrong.
///
// Confidence: High
// Copyright: (C) 2012 Julia Lawall, INRIA. GPLv2.
// Copyright: (C) 2012 Gilles Muller, INRIA. GPLv2.
// URL: http://coccinelle.lip6.fr/
// Comments:
// Options: -no_includes -include_headers

virtual patch
virtual context
virtual org
virtual report

@depends on patch@
expression e,e1;
@@

(
if (IS_ERR(e)) { ... PTR_ERR(e) ... }
|
if (IS_ERR(e=e1)) { ... PTR_ERR(e) ... }
|
if (IS_ERR(e))
{ ...
PTR_ERR(
- e1
+ e
)
... }
)

@r depends on !patch@
expression e,e1;
position p1,p2;
@@

(
if (IS_ERR(e)) { ... PTR_ERR(e) ... }
|
if (IS_ERR(e=e1)) { ... PTR_ERR(e) ... }
|
*if (IS_ERR@p1(e))
{ ...
* PTR_ERR@p2(e1)
... }
)

@script:python depends on org@
p1 << r.p1;
p2 << r.p2;
@@
cocci.print_main("inconsistent IS_ERR and PTR_ERR",p1)
cocci.print_secs("PTR_ERR",p2)
@script:python depends on report@
p1 << r.p1;
p2 << r.p2;
@@
msg = "inconsistent IS_ERR and PTR_ERR, PTR_ERR on line %s" % (p2[0].line)
coccilib.report.print_report(p1[0],msg)
Loading

0 comments on commit cbd8aca

Please sign in to comment.