History

Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild

Pull coccinelle updates from Michal Marek: "The misc branch is reserved for Coccinelle this time: - 'report' is the default mode - MAINTAINERS update for Coccinelle - documentation udate - use new option format for spatch(1) - J=<n> variable to mimic make -j for coccicheck - check for missing pci_free_consistent() calls There are some patches for rpm-pkg and deb-pkg waiting for the 3.12-rc1 merge window" * 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild: Coccinelle: Update information about the minimal version required Coccinelle: Update the options used to the new option scheme scripts: Coccinelle script for pci_free_consistent() Coccinelle: Update the documentation Coccinelle: Update section of MAINTAINERS coccicheck: span checks across CPUs scripts/coccinelle: check for field address argument to kfree Coccinelle: Update the Coccinelle section of MAINTAINERS Coccinelle: Make 'report' the default mode

Linus Torvalds committed 13 years ago

Commit ae924942 parents b202c0d ec9794637 files · +215 −75Browse files

Unified · Split

37 files
  1. Documentation/coccinelle.txt +39 −24
  2. MAINTAINERS +3 −0
  3. scripts/coccicheck +57 −19
  4. scripts/coccinelle/api/alloc/drop_kmalloc_cast.cocci +1 −1
  5. scripts/coccinelle/api/alloc/kzalloc-simple.cocci +1 −1
  6. scripts/coccinelle/api/d_find_alias.cocci +1 −1
  7. scripts/coccinelle/api/devm_request_and_ioremap.cocci +1 −1
  8. scripts/coccinelle/api/kstrdup.cocci +1 −1
  9. scripts/coccinelle/api/memdup.cocci +1 −1
  10. scripts/coccinelle/api/memdup_user.cocci +1 −1
  11. scripts/coccinelle/api/ptr_ret.cocci +1 −1
  12. scripts/coccinelle/api/simple_open.cocci +1 −1
  13. scripts/coccinelle/free/devm_free.cocci +1 −1
  14. scripts/coccinelle/free/kfree.cocci +1 −1
  15. scripts/coccinelle/free/kfreeaddr.cocci +32 −0
  16. scripts/coccinelle/free/pci_free_consistent.cocci +52 −0
  17. scripts/coccinelle/iterators/fen.cocci +1 −1
  18. scripts/coccinelle/iterators/itnull.cocci +1 −1
  19. scripts/coccinelle/iterators/list_entry_update.cocci +1 −1
  20. scripts/coccinelle/iterators/use_after_iter.cocci +1 −1
  21. scripts/coccinelle/locks/call_kern.cocci +1 −1
  22. scripts/coccinelle/locks/double_lock.cocci +1 −1
  23. scripts/coccinelle/locks/flags.cocci +1 −1
  24. scripts/coccinelle/locks/mini_lock.cocci +1 −1
  25. scripts/coccinelle/misc/boolinit.cocci +1 −1
  26. scripts/coccinelle/misc/cstptr.cocci +1 −1
  27. scripts/coccinelle/misc/doubleinit.cocci +1 −1
  28. scripts/coccinelle/misc/ifaddr.cocci +1 −1
  29. scripts/coccinelle/misc/ifcol.cocci +1 −1
  30. scripts/coccinelle/misc/noderef.cocci +1 −1
  31. scripts/coccinelle/misc/orplus.cocci +1 −1
  32. scripts/coccinelle/misc/warn.cocci +1 −1
  33. scripts/coccinelle/null/eno.cocci +1 −1
  34. scripts/coccinelle/null/kmerr.cocci +1 −1
  35. scripts/coccinelle/tests/doublebitand.cocci +1 −1
  36. scripts/coccinelle/tests/doubletest.cocci +1 −1
  37. scripts/coccinelle/tests/odd_ptr_err.cocci +1 −1
Documentation/coccinelle.txt+39−24
@@ -6,15 +6,17 @@ Copyright 2010 Gilles Muller <Gilles.Muller@lip6.fr> · 5 unmodified lines
6 Getting Coccinelle6 Getting Coccinelle
7~~~~~~~~~~~~~~~~~~~~7~~~~~~~~~~~~~~~~~~~~
8 8
9The semantic patches included in the kernel use the 'virtual rule'9The semantic patches included in the kernel use features and options
10feature which was introduced in Coccinelle version 0.1.11.10which are provided by Coccinelle version 1.0.0-rc11 and above.
11Using earlier versions will fail as the option names used by
12the Coccinelle files and coccicheck have been updated.
11 13
12Coccinelle (>=0.2.0) is available through the package manager14Coccinelle is available through the package manager
13of many distributions, e.g. :15of many distributions, e.g. :
14 16
15 - Debian (>=squeeze)17 - Debian
16 - Fedora (>=13)18 - Fedora
17 - Ubuntu (>=10.04 Lucid Lynx)19 - Ubuntu
18 - OpenSUSE20 - OpenSUSE
19 - Arch Linux21 - Arch Linux
20 - NetBSD22 - NetBSD
@@ -36,11 +38,6 @@ as a regular user, and install it with · 15 unmodified lines
36 38
37 sudo make install39 sudo make install
38 40
39The semantic patches in the kernel will work best with Coccinelle version
400.2.4 or later. Using earlier versions may incur some parse errors in the
41semantic patch code, but any results that are obtained should still be
42correct.
43
44 Using Coccinelle on the Linux kernel41 Using Coccinelle on the Linux kernel
45~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~42~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
46 43
@@ -48,7 +45,7 @@ A Coccinelle-specific target is defined in the top level · 1 unmodified line
48Makefile. This target is named 'coccicheck' and calls the 'coccicheck'45Makefile. This target is named 'coccicheck' and calls the 'coccicheck'
49front-end in the 'scripts' directory.46front-end in the 'scripts' directory.
50 47
51Four modes are defined: patch, report, context, and org. The mode to48Four basic modes are defined: patch, report, context, and org. The mode to
52use is specified by setting the MODE variable with 'MODE=<mode>'.49use is specified by setting the MODE variable with 'MODE=<mode>'.
53 50
54'patch' proposes a fix, when possible.51'patch' proposes a fix, when possible.
@@ -62,18 +59,24 @@ diff-like style.Lines of interest are indicated with '-'. · 7 unmodified lines
62'org' generates a report in the Org mode format of Emacs.59'org' generates a report in the Org mode format of Emacs.
63 60
64Note that not all semantic patches implement all modes. For easy use61Note that not all semantic patches implement all modes. For easy use
65of Coccinelle, the default mode is "chain" which tries the previous62of Coccinelle, the default mode is "report".
66modes in the order above until one succeeds.63
64Two other modes provide some common combinations of these modes.
67 65
68To make a report for every semantic patch, run the following command:66'chain' tries the previous modes in the order above until one succeeds.
69 67
70 make coccicheck MODE=report68'rep+ctxt' runs successively the report mode and the context mode.
69 It should be used with the C option (described later)
70 which checks the code on a file basis.
71 71
72NB: The 'report' mode is the default one.72Examples:
73 To make a report for every semantic patch, run the following command:
73 74
74To produce patches, run:75 make coccicheck MODE=report
75 76
76 make coccicheck MODE=patch77 To produce patches, run:
78
79 make coccicheck MODE=patch
77 80
78 81
79The coccicheck target applies every semantic patch available in the82The coccicheck target applies every semantic patch available in the
@@ -91,6 +94,11 @@ To enable verbose messages set the V= variable, for example: · 11 unmodified lines
91 94
92 make coccicheck MODE=report V=195 make coccicheck MODE=report V=1
93 96
97By default, coccicheck tries to run as parallel as possible. To change
98the parallelism, set the J= variable. For example, to run across 4 CPUs:
99
100 make coccicheck MODE=report J=4
101
94 102
95 Using Coccinelle with a single semantic patch103 Using Coccinelle with a single semantic patch
96~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~104~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -124,26 +132,33 @@ To check only newly edited code, use the value 2 for the C flag, i.e. · 27 unmodified lines
124 132
125 make C=2 CHECK="scripts/coccicheck"133 make C=2 CHECK="scripts/coccicheck"
126 134
135In these modes, which works on a file basis, there is no information
136about semantic patches displayed, and no commit message proposed.
137
127This runs every semantic patch in scripts/coccinelle by default. The138This runs every semantic patch in scripts/coccinelle by default. The
128COCCI variable may additionally be used to only apply a single139COCCI variable may additionally be used to only apply a single
129semantic patch as shown in the previous section.140semantic patch as shown in the previous section.
130 141
131The "chain" mode is the default. You can select another one with the142The "report" mode is the default. You can select another one with the
132MODE variable explained above.143MODE variable explained above.
133 144
134In this mode, there is no information about semantic patches
135displayed, and no commit message proposed.
136
137 Additional flags145 Additional flags
138~~~~~~~~~~~~~~~~~~146~~~~~~~~~~~~~~~~~~
139 147
140Additional flags can be passed to spatch through the SPFLAGS148Additional flags can be passed to spatch through the SPFLAGS
141variable.149variable.
142 150
143 make SPFLAGS=--use_glimpse coccicheck151 make SPFLAGS=--use-glimpse coccicheck
152 make SPFLAGS=--use-idutils coccicheck
144 153
145See spatch --help to learn more about spatch options.154See spatch --help to learn more about spatch options.
146 155
156Note that the '--use-glimpse' and '--use-idutils' options
157require external tools for indexing the code. None of them is
158thus active by default. However, by indexing the code with
159one of these tools, and according to the cocci file used,
160spatch could proceed the entire code base more quickly.
161
147 Proposing new semantic patches162 Proposing new semantic patches
148~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~163~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
149 164
MAINTAINERS+3−0
@@ -2135,9 +2135,12 @@ COCCINELLE/Semantic Patches (SmPL) · 2134 unmodified lines
2135M: Julia Lawall <Julia.Lawall@lip6.fr>2135M: Julia Lawall <Julia.Lawall@lip6.fr>
2136M: Gilles Muller <Gilles.Muller@lip6.fr>2136M: Gilles Muller <Gilles.Muller@lip6.fr>
2137M: Nicolas Palix <nicolas.palix@imag.fr>2137M: Nicolas Palix <nicolas.palix@imag.fr>
2138M: Michal Marek <mmarek@suse.cz>
2138L: cocci@systeme.lip6.fr (moderated for non-subscribers)2139L: cocci@systeme.lip6.fr (moderated for non-subscribers)
2140T: git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git misc
2139W: http://coccinelle.lip6.fr/2141W: http://coccinelle.lip6.fr/
2140S: Supported2142S: Supported
2143F: Documentation/coccinelle.txt
2141F: scripts/coccinelle/2144F: scripts/coccinelle/
2142F: scripts/coccicheck2145F: scripts/coccicheck
2143 2146
scripts/coccicheck+57−19
@@ -1,17 +1,31 @@
1#!/bin/bash1#!/bin/bash
2 2
3#
4# This script requires at least spatch
5# version 1.0.0-rc11.
6#
7
3SPATCH="`which ${SPATCH:=spatch}`"8SPATCH="`which ${SPATCH:=spatch}`"
4 9
10trap kill_running SIGTERM SIGINT
11declare -a SPATCH_PID
12
5# The verbosity may be set by the environmental parameter V=13# The verbosity may be set by the environmental parameter V=
6# as for example with 'make V=1 coccicheck'14# as for example with 'make V=1 coccicheck'
7 15
8if [ -n "$V" -a "$V" != "0" ]; then16if [ -n "$V" -a "$V" != "0" ]; then
9 VERBOSE=117 VERBOSE="$V"
10else18else
11 VERBOSE=019 VERBOSE=0
12fi20fi
13 21
14FLAGS="$SPFLAGS -very_quiet"22if [ -z "$J" ]; then
23 NPROC=$(getconf _NPROCESSORS_ONLN)
24else
25 NPROC="$J"
26fi
27
28FLAGS="$SPFLAGS --very-quiet"
15 29
16# spatch only allows include directories with the syntax "-I include"30# spatch only allows include directories with the syntax "-I include"
17# while gcc also allows "-Iinclude" and "-include include"31# while gcc also allows "-Iinclude" and "-include include"
@@ -27,14 +41,14 @@ if [ "$C" = "1" -o "$C" = "2" ]; then · 9 unmodified lines
27else41else
28 ONLINE=042 ONLINE=0
29 if [ "$KBUILD_EXTMOD" = "" ] ; then43 if [ "$KBUILD_EXTMOD" = "" ] ; then
30 OPTIONS="-dir $srctree $COCCIINCLUDE"44 OPTIONS="--dir $srctree $COCCIINCLUDE"
31 else45 else
32 OPTIONS="-dir $KBUILD_EXTMOD $COCCIINCLUDE"46 OPTIONS="--dir $KBUILD_EXTMOD $COCCIINCLUDE"
33 fi47 fi
34fi48fi
35 49
36if [ "$KBUILD_EXTMOD" != "" ] ; then50if [ "$KBUILD_EXTMOD" != "" ] ; then
37 OPTIONS="-patch $srctree $OPTIONS"51 OPTIONS="--patch $srctree $OPTIONS"
38fi52fi
39 53
40if [ ! -x "$SPATCH" ]; then54if [ ! -x "$SPATCH" ]; then
@@ -44,13 +58,21 @@ fi · 3 unmodified lines
44 58
45if [ "$MODE" = "" ] ; then59if [ "$MODE" = "" ] ; then
46 if [ "$ONLINE" = "0" ] ; then60 if [ "$ONLINE" = "0" ] ; then
47 echo 'You have not explicitly specified the mode to use. Using default "chain" mode.'61 echo 'You have not explicitly specified the mode to use. Using default "report" mode.'
48 echo 'All available modes will be tried (in that order): patch, report, context, org'62 echo 'Available modes are the following: patch, report, context, org'
49 echo 'You can specify the mode with "make coccicheck MODE=<mode>"'63 echo 'You can specify the mode with "make coccicheck MODE=<mode>"'
64 echo 'Note however that some modes are not implemented by some semantic patches.'
65 fi
66 MODE="report"
67fi
68
69if [ "$MODE" = "chain" ] ; then
70 if [ "$ONLINE" = "0" ] ; then
71 echo 'You have selected the "chain" mode.'
72 echo 'All available modes will be tried (in that order): patch, report, context, org'
50 fi73 fi
51 MODE="chain"
52elif [ "$MODE" = "report" -o "$MODE" = "org" ] ; then74elif [ "$MODE" = "report" -o "$MODE" = "org" ] ; then
53 FLAGS="$FLAGS -no_show_diff"75 FLAGS="$FLAGS --no-show-diff"
54fi76fi
55 77
56if [ "$ONLINE" = "0" ] ; then78if [ "$ONLINE" = "0" ] ; then
@@ -61,19 +83,35 @@ if [ "$ONLINE" = "0" ] ; then · 4 unmodified lines
61fi83fi
62 84
63run_cmd() {85run_cmd() {
86 local i
64 if [ $VERBOSE -ne 0 ] ; then87 if [ $VERBOSE -ne 0 ] ; then
65 echo "Running: $@"88 echo "Running ($NPROC in parallel): $@"
66 fi89 fi
67 eval $@90 for i in $(seq 0 $(( NPROC - 1)) ); do
91 eval "$@ --max $NPROC --index $i &"
92 SPATCH_PID[$i]=$!
93 if [ $VERBOSE -eq 2 ] ; then
94 echo "${SPATCH_PID[$i]} running"
95 fi
96 done
97 wait
68}98}
69 99
100kill_running() {
101 for i in $(seq $(( NPROC - 1 )) ); do
102 if [ $VERBOSE -eq 2 ] ; then
103 echo "Killing ${SPATCH_PID[$i]}"
104 fi
105 kill ${SPATCH_PID[$i]} 2>/dev/null
106 done
107}
70 108
71coccinelle () {109coccinelle () {
72 COCCI="$1"110 COCCI="$1"
73 111
74 OPT=`grep "Option" $COCCI | cut -d':' -f2`112 OPT=`grep "Option" $COCCI | cut -d':' -f2`
75 113
76# The option '-parse_cocci' can be used to syntactically check the SmPL files.114# The option '--parse-cocci' can be used to syntactically check the SmPL files.
77#115#
78# $SPATCH -D $MODE $FLAGS -parse_cocci $COCCI $OPT > /dev/null116# $SPATCH -D $MODE $FLAGS -parse_cocci $COCCI $OPT > /dev/null
79 117
@@ -114,20 +152,20 @@ coccinelle () { · 34 unmodified lines
114 152
115 if [ "$MODE" = "chain" ] ; then153 if [ "$MODE" = "chain" ] ; then
116 run_cmd $SPATCH -D patch \154 run_cmd $SPATCH -D patch \
117 $FLAGS -sp_file $COCCI $OPT $OPTIONS || \155 $FLAGS --cocci-file $COCCI $OPT $OPTIONS || \
118 run_cmd $SPATCH -D report \156 run_cmd $SPATCH -D report \
119 $FLAGS -sp_file $COCCI $OPT $OPTIONS -no_show_diff || \157 $FLAGS --cocci-file $COCCI $OPT $OPTIONS --no-show-diff || \
120 run_cmd $SPATCH -D context \158 run_cmd $SPATCH -D context \
121 $FLAGS -sp_file $COCCI $OPT $OPTIONS || \159 $FLAGS --cocci-file $COCCI $OPT $OPTIONS || \
122 run_cmd $SPATCH -D org \160 run_cmd $SPATCH -D org \
123 $FLAGS -sp_file $COCCI $OPT $OPTIONS -no_show_diff || exit 1161 $FLAGS --cocci-file $COCCI $OPT $OPTIONS --no-show-diff || exit 1
124 elif [ "$MODE" = "rep+ctxt" ] ; then162 elif [ "$MODE" = "rep+ctxt" ] ; then
125 run_cmd $SPATCH -D report \163 run_cmd $SPATCH -D report \
126 $FLAGS -sp_file $COCCI $OPT $OPTIONS -no_show_diff && \164 $FLAGS --cocci-file $COCCI $OPT $OPTIONS --no-show-diff && \
127 run_cmd $SPATCH -D context \165 run_cmd $SPATCH -D context \
128 $FLAGS -sp_file $COCCI $OPT $OPTIONS || exit 1166 $FLAGS --cocci-file $COCCI $OPT $OPTIONS || exit 1
129 else167 else
130 run_cmd $SPATCH -D $MODE $FLAGS -sp_file $COCCI $OPT $OPTIONS || exit 1168 run_cmd $SPATCH -D $MODE $FLAGS --cocci-file $COCCI $OPT $OPTIONS || exit 1
131 fi169 fi
132 170
133}171}
scripts/coccinelle/api/alloc/drop_kmalloc_cast.cocci+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5// Confidence: High5// Confidence: High
6// Copyright: 2009,2010 Nicolas Palix, DIKU. GPLv2.6// Copyright: 2009,2010 Nicolas Palix, DIKU. GPLv2.
7// URL: http://coccinelle.lip6.fr/7// URL: http://coccinelle.lip6.fr/
8// Options: -no_includes -include_headers8// Options: --no-includes --include-headers
9//9//
10// Keywords: kmalloc, kzalloc, kcalloc10// Keywords: kmalloc, kzalloc, kcalloc
11// Version min: < 2.6.12 kmalloc11// Version min: < 2.6.12 kmalloc
scripts/coccinelle/api/alloc/kzalloc-simple.cocci+1−1
@@ -9,7 +9,7 @@ · 8 unmodified lines
9// Copyright: (C) 2009-2010 Julia Lawall, Nicolas Palix, DIKU. GPLv2.9// Copyright: (C) 2009-2010 Julia Lawall, Nicolas Palix, DIKU. GPLv2.
10// Copyright: (C) 2009-2010 Gilles Muller, INRIA/LiP6. GPLv2.10// Copyright: (C) 2009-2010 Gilles Muller, INRIA/LiP6. GPLv2.
11// URL: http://coccinelle.lip6.fr/rules/kzalloc.html11// URL: http://coccinelle.lip6.fr/rules/kzalloc.html
12// Options: -no_includes -include_headers12// Options: --no-includes --include-headers
13//13//
14// Keywords: kmalloc, kzalloc14// Keywords: kmalloc, kzalloc
15// Version min: < 2.6.12 kmalloc15// Version min: < 2.6.12 kmalloc
scripts/coccinelle/api/d_find_alias.cocci+1−1
@@ -4,7 +4,7 @@ · 3 unmodified lines
4//4//
5// Confidence: Moderate5// Confidence: Moderate
6// URL: http://coccinelle.lip6.fr/6// URL: http://coccinelle.lip6.fr/
7// Options: -include_headers7// Options: --include-headers
8 8
9virtual context9virtual context
10virtual org10virtual org
scripts/coccinelle/api/devm_request_and_ioremap.cocci+1−1
@@ -10,7 +10,7 @@ · 9 unmodified lines
10// Copyright: (C) 2011 Gilles Muller, INRIA/LiP6. GPLv2.10// Copyright: (C) 2011 Gilles Muller, INRIA/LiP6. GPLv2.
11// URL: http://coccinelle.lip6.fr/11// URL: http://coccinelle.lip6.fr/
12// Comments:12// Comments:
13// Options: -no_includes -include_headers13// Options: --no-includes --include-headers
14 14
15virtual patch15virtual patch
16virtual org16virtual org
scripts/coccinelle/api/kstrdup.cocci+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2.6// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2.
7// URL: http://coccinelle.lip6.fr/7// URL: http://coccinelle.lip6.fr/
8// Comments:8// Comments:
9// Options: -no_includes -include_headers9// Options: --no-includes --include-headers
10 10
11virtual patch11virtual patch
12virtual context12virtual context
scripts/coccinelle/api/memdup.cocci+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2.6// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2.
7// URL: http://coccinelle.lip6.fr/7// URL: http://coccinelle.lip6.fr/
8// Comments:8// Comments:
9// Options: -no_includes -include_headers9// Options: --no-includes --include-headers
10 10
11virtual patch11virtual patch
12virtual context12virtual context
scripts/coccinelle/api/memdup_user.cocci+1−1
@@ -7,7 +7,7 @@ · 6 unmodified lines
7// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2.7// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2.
8// URL: http://coccinelle.lip6.fr/8// URL: http://coccinelle.lip6.fr/
9// Comments:9// Comments:
10// Options: -no_includes -include_headers10// Options: --no-includes --include-headers
11 11
12virtual patch12virtual patch
13virtual context13virtual context
scripts/coccinelle/api/ptr_ret.cocci+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6. GPLv2.5// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6. GPLv2.
6// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2.6// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2.
7// URL: http://coccinelle.lip6.fr/7// URL: http://coccinelle.lip6.fr/
8// Options: -no_includes -include_headers8// Options: --no-includes --include-headers
9//9//
10// Keywords: ERR_PTR, PTR_ERR, PTR_RET10// Keywords: ERR_PTR, PTR_ERR, PTR_RET
11// Version min: 2.6.3911// Version min: 2.6.39
scripts/coccinelle/api/simple_open.cocci+1−1
@@ -4,7 +4,7 @@ · 3 unmodified lines
4///4///
5// Confidence: High5// Confidence: High
6// Comments:6// Comments:
7// Options: -no_includes -include_headers7// Options: --no-includes --include-headers
8 8
9virtual patch9virtual patch
10virtual report10virtual report
scripts/coccinelle/free/devm_free.cocci+1−1
@@ -18,7 +18,7 @@ · 17 unmodified lines
18// Copyright: (C) 2011 Gilles Muller, INRIA/LiP6. GPLv2.18// Copyright: (C) 2011 Gilles Muller, INRIA/LiP6. GPLv2.
19// URL: http://coccinelle.lip6.fr/19// URL: http://coccinelle.lip6.fr/
20// Comments:20// Comments:
21// Options: -no_includes -include_headers21// Options: --no-includes --include-headers
22 22
23virtual org23virtual org
24virtual report24virtual report
scripts/coccinelle/free/kfree.cocci+1−1
@@ -10,7 +10,7 @@ · 9 unmodified lines
10// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2.10// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2.
11// URL: http://coccinelle.lip6.fr/11// URL: http://coccinelle.lip6.fr/
12// Comments:12// Comments:
13// Options: -no_includes -include_headers13// Options: --no-includes --include-headers
14 14
15virtual org15virtual org
16virtual report16virtual report
scripts/coccinelle/free/kfreeaddr.cocci+32−0
@@ -0,0 +1,32 @@
1/// Free of a structure field
2///
3// Confidence: High
4// Copyright: (C) 2013 Julia Lawall, INRIA/LIP6. GPLv2.
5// URL: http://coccinelle.lip6.fr/
6// Comments:
7// Options: --no-includes --include-headers
8
9virtual org
10virtual report
11virtual context
12
13@r depends on context || report || org @
14expression e;
15identifier f;
16position p;
17@@
18
19* kfree@p(&e->f)
20
21@script:python depends on org@
22p << r.p;
23@@
24
25cocci.print_main("kfree",p)
26
27@script:python depends on report@
28p << r.p;
29@@
30
31msg = "ERROR: kfree of structure field"
32coccilib.report.print_report(p[0],msg)
scripts/coccinelle/free/pci_free_consistent.cocci+52−0
@@ -0,0 +1,52 @@
1/// Find missing pci_free_consistent for every pci_alloc_consistent.
2///
3// Confidence: Moderate
4// Copyright: (C) 2013 Petr Strnad. GPLv2.
5// URL: http://coccinelle.lip6.fr/
6// Keywords: pci_free_consistent, pci_alloc_consistent
7// Options: --no-includes --include-headers
8
9virtual report
10virtual org
11
12@search@
13local idexpression id;
14expression x,y,z,e;
15position p1,p2;
16type T;
17@@
18
19id = pci_alloc_consistent@p1(x,y,&z)
20... when != e = id
21if (id == NULL || ...) { ... return ...; }
22... when != pci_free_consistent(x,y,id,z)
23 when != if (id) { ... pci_free_consistent(x,y,id,z) ... }
24 when != if (y) { ... pci_free_consistent(x,y,id,z) ... }
25 when != e = (T)id
26 when exists
27(
28return 0;
29|
30return 1;
31|
32return id;
33|
34return@p2 ...;
35)
36
37@script:python depends on report@
38p1 << search.p1;
39p2 << search.p2;
40@@
41
42msg = "ERROR: missing pci_free_consistent; pci_alloc_consistent on line %s and return without freeing on line %s" % (p1[0].line,p2[0].line)
43coccilib.report.print_report(p2[0],msg)
44
45@script:python depends on org@
46p1 << search.p1;
47p2 << search.p2;
48@@
49
50msg = "ERROR: missing pci_free_consistent; pci_alloc_consistent on line %s and return without freeing on line %s" % (p1[0].line,p2[0].line)
51cocci.print_main(msg,p1)
52cocci.print_secs("",p2)
scripts/coccinelle/iterators/fen.cocci+1−1
@@ -7,7 +7,7 @@ · 6 unmodified lines
7// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2.7// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2.
8// URL: http://coccinelle.lip6.fr/8// URL: http://coccinelle.lip6.fr/
9// Comments:9// Comments:
10// Options: -no_includes -include_headers10// Options: --no-includes --include-headers
11 11
12virtual patch12virtual patch
13virtual context13virtual context
scripts/coccinelle/iterators/itnull.cocci+1−1
@@ -11,7 +11,7 @@ · 10 unmodified lines
11// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2.11// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2.
12// URL: http://coccinelle.lip6.fr/12// URL: http://coccinelle.lip6.fr/
13// Comments:13// Comments:
14// Options: -no_includes -include_headers14// Options: --no-includes --include-headers
15 15
16virtual patch16virtual patch
17virtual context17virtual context
scripts/coccinelle/iterators/list_entry_update.cocci+1−1
@@ -9,7 +9,7 @@ · 8 unmodified lines
9// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2.9// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2.
10// URL: http://coccinelle.lip6.fr/10// URL: http://coccinelle.lip6.fr/
11// Comments:11// Comments:
12// Options: -no_includes -include_headers12// Options: --no-includes --include-headers
13 13
14virtual context14virtual context
15virtual org15virtual org
scripts/coccinelle/iterators/use_after_iter.cocci+1−1
@@ -11,7 +11,7 @@ · 10 unmodified lines
11// Copyright: (C) 2012 Gilles Muller, INRIA/LIP6. GPLv2.11// Copyright: (C) 2012 Gilles Muller, INRIA/LIP6. GPLv2.
12// URL: http://coccinelle.lip6.fr/12// URL: http://coccinelle.lip6.fr/
13// Comments:13// Comments:
14// Options: -no_includes -include_headers14// Options: --no-includes --include-headers
15 15
16virtual context16virtual context
17virtual org17virtual org
scripts/coccinelle/locks/call_kern.cocci+1−1
@@ -9,7 +9,7 @@ · 8 unmodified lines
9// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2.9// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2.
10// URL: http://coccinelle.lip6.fr/10// URL: http://coccinelle.lip6.fr/
11// Comments:11// Comments:
12// Options: -no_includes -include_headers12// Options: --no-includes --include-headers
13 13
14virtual patch14virtual patch
15virtual context15virtual context
scripts/coccinelle/locks/double_lock.cocci+1−1
@@ -8,7 +8,7 @@ · 7 unmodified lines
8// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2.8// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2.
9// URL: http://coccinelle.lip6.fr/9// URL: http://coccinelle.lip6.fr/
10// Comments:10// Comments:
11// Options: -no_includes -include_headers11// Options: --no-includes --include-headers
12 12
13virtual org13virtual org
14virtual report14virtual report
scripts/coccinelle/locks/flags.cocci+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2.6// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2.
7// URL: http://coccinelle.lip6.fr/7// URL: http://coccinelle.lip6.fr/
8// Comments:8// Comments:
9// Options: -no_includes -include_headers9// Options: --no-includes --include-headers
10 10
11virtual context11virtual context
12virtual org12virtual org
scripts/coccinelle/locks/mini_lock.cocci+1−1
@@ -11,7 +11,7 @@ · 10 unmodified lines
11// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2.11// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2.
12// URL: http://coccinelle.lip6.fr/12// URL: http://coccinelle.lip6.fr/
13// Comments:13// Comments:
14// Options: -no_includes -include_headers14// Options: --no-includes --include-headers
15 15
16virtual context16virtual context
17virtual org17virtual org
scripts/coccinelle/misc/boolinit.cocci+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6. GPLv2.6// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6. GPLv2.
7// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2.7// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2.
8// URL: http://coccinelle.lip6.fr/8// URL: http://coccinelle.lip6.fr/
9// Options: -include_headers9// Options: --include-headers
10 10
11virtual patch11virtual patch
12virtual context12virtual context
scripts/coccinelle/misc/cstptr.cocci+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2.6// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2.
7// URL: http://coccinelle.lip6.fr/7// URL: http://coccinelle.lip6.fr/
8// Comments:8// Comments:
9// Options: -no_includes -include_headers9// Options: --no-includes --include-headers
10 10
11virtual org11virtual org
12virtual report12virtual report
scripts/coccinelle/misc/doubleinit.cocci+1−1
@@ -8,7 +8,7 @@ · 7 unmodified lines
8// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2.8// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2.
9// URL: http://coccinelle.lip6.fr/9// URL: http://coccinelle.lip6.fr/
10// Comments: requires at least Coccinelle 0.2.4, lex or parse error otherwise10// Comments: requires at least Coccinelle 0.2.4, lex or parse error otherwise
11// Options: -no_includes -include_headers11// Options: --no-includes --include-headers
12 12
13virtual org13virtual org
14virtual report14virtual report
scripts/coccinelle/misc/ifaddr.cocci+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2.6// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2.
7// URL: http://coccinelle.lip6.fr/7// URL: http://coccinelle.lip6.fr/
8// Comments:8// Comments:
9// Options: -no_includes -include_headers9// Options: --no-includes --include-headers
10 10
11virtual org11virtual org
12virtual report12virtual report
scripts/coccinelle/misc/ifcol.cocci+1−1
@@ -13,7 +13,7 @@ · 12 unmodified lines
13// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2.13// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2.
14// URL: http://coccinelle.lip6.fr/14// URL: http://coccinelle.lip6.fr/
15// Comments:15// Comments:
16// Options: -no_includes -include_headers16// Options: --no-includes --include-headers
17 17
18virtual org18virtual org
19virtual report19virtual report
scripts/coccinelle/misc/noderef.cocci+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2.6// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2.
7// URL: http://coccinelle.lip6.fr/7// URL: http://coccinelle.lip6.fr/
8// Comments:8// Comments:
9// Options: -no_includes -include_headers9// Options: --no-includes --include-headers
10 10
11virtual org11virtual org
12virtual report12virtual report
scripts/coccinelle/misc/orplus.cocci+1−1
@@ -7,7 +7,7 @@ · 6 unmodified lines
7// Copyright: (C) 2013 Gilles Muller, INRIA/LIP6. GPLv2.7// Copyright: (C) 2013 Gilles Muller, INRIA/LIP6. GPLv2.
8// URL: http://coccinelle.lip6.fr/8// URL: http://coccinelle.lip6.fr/
9// Comments:9// Comments:
10// Options: -no_includes -include_headers10// Options: --no-includes --include-headers
11 11
12virtual org12virtual org
13virtual report13virtual report
scripts/coccinelle/misc/warn.cocci+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2.5// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2.
6// URL: http://coccinelle.lip6.fr/6// URL: http://coccinelle.lip6.fr/
7// Comments:7// Comments:
8// Options: -no_includes -include_headers8// Options: --no-includes --include-headers
9 9
10virtual patch10virtual patch
11virtual context11virtual context
scripts/coccinelle/null/eno.cocci+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2.6// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2.
7// URL: http://coccinelle.lip6.fr/7// URL: http://coccinelle.lip6.fr/
8// Comments:8// Comments:
9// Options: -no_includes -include_headers9// Options: --no-includes --include-headers
10 10
11virtual patch11virtual patch
12virtual context12virtual context
scripts/coccinelle/null/kmerr.cocci+1−1
@@ -10,7 +10,7 @@ · 9 unmodified lines
10// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2.10// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2.
11// URL: http://coccinelle.lip6.fr/11// URL: http://coccinelle.lip6.fr/
12// Comments:12// Comments:
13// Options: -no_includes -include_headers13// Options: --no-includes --include-headers
14 14
15virtual context15virtual context
16virtual org16virtual org
scripts/coccinelle/tests/doublebitand.cocci+1−1
@@ -10,7 +10,7 @@ · 9 unmodified lines
10// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2.10// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2.
11// URL: http://coccinelle.lip6.fr/11// URL: http://coccinelle.lip6.fr/
12// Comments:12// Comments:
13// Options: -no_includes -include_headers13// Options: --no-includes --include-headers
14 14
15virtual context15virtual context
16virtual org16virtual org
scripts/coccinelle/tests/doubletest.cocci+1−1
@@ -8,7 +8,7 @@ · 7 unmodified lines
8// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2.8// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2.
9// URL: http://coccinelle.lip6.fr/9// URL: http://coccinelle.lip6.fr/
10// Comments:10// Comments:
11// Options: -no_includes -include_headers11// Options: --no-includes --include-headers
12 12
13virtual context13virtual context
14virtual org14virtual org
scripts/coccinelle/tests/odd_ptr_err.cocci+1−1
@@ -7,7 +7,7 @@ · 6 unmodified lines
7// Copyright: (C) 2012 Gilles Muller, INRIA. GPLv2.7// Copyright: (C) 2012 Gilles Muller, INRIA. GPLv2.
8// URL: http://coccinelle.lip6.fr/8// URL: http://coccinelle.lip6.fr/
9// Comments:9// Comments:
10// Options: -no_includes -include_headers10// Options: --no-includes --include-headers
11 11
12virtual patch12virtual patch
13virtual context13virtual context