aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/coccinelle.txt4
-rw-r--r--Documentation/kbuild/kconfig-language.txt6
-rw-r--r--scripts/.gitignore1
-rw-r--r--scripts/coccinelle/misc/doubleinit.cocci6
-rw-r--r--scripts/coccinelle/null/deref_null.cocci39
-rwxr-xr-xscripts/config13
-rw-r--r--scripts/headers_check.pl6
-rwxr-xr-xscripts/tags.sh2
8 files changed, 41 insertions, 36 deletions
diff --git a/Documentation/coccinelle.txt b/Documentation/coccinelle.txt
index 4a276ea7001c..96b690348ba1 100644
--- a/Documentation/coccinelle.txt
+++ b/Documentation/coccinelle.txt
@@ -36,6 +36,10 @@ as a regular user, and install it with
36 36
37 sudo make install 37 sudo make install
38 38
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.
39 43
40 Using Coccinelle on the Linux kernel 44 Using Coccinelle on the Linux kernel
41~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 45~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/Documentation/kbuild/kconfig-language.txt b/Documentation/kbuild/kconfig-language.txt
index 5b9b1be6fde2..b507d61fd41c 100644
--- a/Documentation/kbuild/kconfig-language.txt
+++ b/Documentation/kbuild/kconfig-language.txt
@@ -267,7 +267,7 @@ separate list of options.
267 267
268choices: 268choices:
269 269
270 "choice" 270 "choice" [symbol]
271 <choice options> 271 <choice options>
272 <choice block> 272 <choice block>
273 "endchoice" 273 "endchoice"
@@ -281,6 +281,10 @@ single driver can be compiled/loaded into the kernel, but all drivers
281can be compiled as modules. 281can be compiled as modules.
282A choice accepts another option "optional", which allows to set the 282A choice accepts another option "optional", which allows to set the
283choice to 'n' and no entry needs to be selected. 283choice to 'n' and no entry needs to be selected.
284If no [symbol] is associated with a choice, then you can not have multiple
285definitions of that choice. If a [symbol] is associated to the choice,
286then you may define the same choice (ie. with the same entries) in another
287place.
284 288
285comment: 289comment:
286 290
diff --git a/scripts/.gitignore b/scripts/.gitignore
index c5d5db54c009..e2741d23bab8 100644
--- a/scripts/.gitignore
+++ b/scripts/.gitignore
@@ -7,3 +7,4 @@ pnmtologo
7bin2c 7bin2c
8unifdef 8unifdef
9ihex2fw 9ihex2fw
10recordmcount
diff --git a/scripts/coccinelle/misc/doubleinit.cocci b/scripts/coccinelle/misc/doubleinit.cocci
index 55d7dc19dfe0..156b20adb351 100644
--- a/scripts/coccinelle/misc/doubleinit.cocci
+++ b/scripts/coccinelle/misc/doubleinit.cocci
@@ -7,7 +7,7 @@
7// Copyright: (C) 2010 Julia Lawall, DIKU. GPLv2. 7// Copyright: (C) 2010 Julia Lawall, DIKU. GPLv2.
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: requires at least Coccinelle 0.2.4, lex or parse error otherwise
11// Options: -no_includes -include_headers 11// Options: -no_includes -include_headers
12 12
13virtual org 13virtual org
@@ -19,7 +19,7 @@ position p0,p;
19expression E; 19expression E;
20@@ 20@@
21 21
22struct I s =@p0 { ... .fld@p = E, ...}; 22struct I s =@p0 { ..., .fld@p = E, ...};
23 23
24@s@ 24@s@
25identifier I, s, r.fld; 25identifier I, s, r.fld;
@@ -27,7 +27,7 @@ position r.p0,p;
27expression E; 27expression E;
28@@ 28@@
29 29
30struct I s =@p0 { ... .fld@p = E, ...}; 30struct I s =@p0 { ..., .fld@p = E, ...};
31 31
32@script:python depends on org@ 32@script:python depends on org@
33p0 << r.p0; 33p0 << r.p0;
diff --git a/scripts/coccinelle/null/deref_null.cocci b/scripts/coccinelle/null/deref_null.cocci
index 9969d76d0f4b..cdac6cfcce92 100644
--- a/scripts/coccinelle/null/deref_null.cocci
+++ b/scripts/coccinelle/null/deref_null.cocci
@@ -11,21 +11,10 @@
11// Options: 11// Options:
12 12
13virtual context 13virtual context
14virtual patch
15virtual org 14virtual org
16virtual report 15virtual report
17 16
18@initialize:python depends on !context && patch && !org && !report@ 17@ifm@
19
20import sys
21print >> sys.stderr, "This semantic patch does not support the 'patch' mode."
22
23@depends on patch@
24@@
25
26this_rule_should_never_matches();
27
28@ifm depends on !patch@
29expression *E; 18expression *E;
30statement S1,S2; 19statement S1,S2;
31position p1; 20position p1;
@@ -35,7 +24,7 @@ if@p1 ((E == NULL && ...) || ...) S1 else S2
35 24
36// The following two rules are separate, because both can match a single 25// The following two rules are separate, because both can match a single
37// expression in different ways 26// expression in different ways
38@pr1 depends on !patch expression@ 27@pr1 expression@
39expression *ifm.E; 28expression *ifm.E;
40identifier f; 29identifier f;
41position p1; 30position p1;
@@ -43,7 +32,7 @@ position p1;
43 32
44 (E != NULL && ...) ? <+...E->f@p1...+> : ... 33 (E != NULL && ...) ? <+...E->f@p1...+> : ...
45 34
46@pr2 depends on !patch expression@ 35@pr2 expression@
47expression *ifm.E; 36expression *ifm.E;
48identifier f; 37identifier f;
49position p2; 38position p2;
@@ -59,7 +48,7 @@ position p2;
59 48
60// For org and report modes 49// For org and report modes
61 50
62@r depends on !context && !patch && (org || report) exists@ 51@r depends on !context && (org || report) exists@
63expression subE <= ifm.E; 52expression subE <= ifm.E;
64expression *ifm.E; 53expression *ifm.E;
65expression E1,E2; 54expression E1,E2;
@@ -99,7 +88,7 @@ if@p1 ((E == NULL && ...) || ...)
99} 88}
100else S3 89else S3
101 90
102@script:python depends on !context && !patch && !org && report@ 91@script:python depends on !context && !org && report@
103p << r.p; 92p << r.p;
104p1 << ifm.p1; 93p1 << ifm.p1;
105x << ifm.E; 94x << ifm.E;
@@ -109,7 +98,7 @@ msg="ERROR: %s is NULL but dereferenced." % (x)
109coccilib.report.print_report(p[0], msg) 98coccilib.report.print_report(p[0], msg)
110cocci.include_match(False) 99cocci.include_match(False)
111 100
112@script:python depends on !context && !patch && org && !report@ 101@script:python depends on !context && org && !report@
113p << r.p; 102p << r.p;
114p1 << ifm.p1; 103p1 << ifm.p1;
115x << ifm.E; 104x << ifm.E;
@@ -120,7 +109,7 @@ msg_safe=msg.replace("[","@(").replace("]",")")
120cocci.print_main(msg_safe,p) 109cocci.print_main(msg_safe,p)
121cocci.include_match(False) 110cocci.include_match(False)
122 111
123@s depends on !context && !patch && (org || report) exists@ 112@s depends on !context && (org || report) exists@
124expression subE <= ifm.E; 113expression subE <= ifm.E;
125expression *ifm.E; 114expression *ifm.E;
126expression E1,E2; 115expression E1,E2;
@@ -159,7 +148,7 @@ if@p1 ((E == NULL && ...) || ...)
159} 148}
160else S3 149else S3
161 150
162@script:python depends on !context && !patch && !org && report@ 151@script:python depends on !context && !org && report@
163p << s.p; 152p << s.p;
164p1 << ifm.p1; 153p1 << ifm.p1;
165x << ifm.E; 154x << ifm.E;
@@ -168,7 +157,7 @@ x << ifm.E;
168msg="ERROR: %s is NULL but dereferenced." % (x) 157msg="ERROR: %s is NULL but dereferenced." % (x)
169coccilib.report.print_report(p[0], msg) 158coccilib.report.print_report(p[0], msg)
170 159
171@script:python depends on !context && !patch && org && !report@ 160@script:python depends on !context && org && !report@
172p << s.p; 161p << s.p;
173p1 << ifm.p1; 162p1 << ifm.p1;
174x << ifm.E; 163x << ifm.E;
@@ -180,7 +169,7 @@ cocci.print_main(msg_safe,p)
180 169
181// For context mode 170// For context mode
182 171
183@depends on context && !patch && !org && !report exists@ 172@depends on context && !org && !report exists@
184expression subE <= ifm.E; 173expression subE <= ifm.E;
185expression *ifm.E; 174expression *ifm.E;
186expression E1,E2; 175expression E1,E2;
@@ -223,7 +212,7 @@ else S3
223// The following three rules are duplicates of ifm, pr1 and pr2 respectively. 212// The following three rules are duplicates of ifm, pr1 and pr2 respectively.
224// It is need because the previous rule as already made a "change". 213// It is need because the previous rule as already made a "change".
225 214
226@ifm1 depends on !patch@ 215@ifm1@
227expression *E; 216expression *E;
228statement S1,S2; 217statement S1,S2;
229position p1; 218position p1;
@@ -231,7 +220,7 @@ position p1;
231 220
232if@p1 ((E == NULL && ...) || ...) S1 else S2 221if@p1 ((E == NULL && ...) || ...) S1 else S2
233 222
234@pr11 depends on !patch expression@ 223@pr11 expression@
235expression *ifm1.E; 224expression *ifm1.E;
236identifier f; 225identifier f;
237position p1; 226position p1;
@@ -239,7 +228,7 @@ position p1;
239 228
240 (E != NULL && ...) ? <+...E->f@p1...+> : ... 229 (E != NULL && ...) ? <+...E->f@p1...+> : ...
241 230
242@pr12 depends on !patch expression@ 231@pr12 expression@
243expression *ifm1.E; 232expression *ifm1.E;
244identifier f; 233identifier f;
245position p2; 234position p2;
@@ -253,7 +242,7 @@ position p2;
253 sizeof(<+...E->f@p2...+>) 242 sizeof(<+...E->f@p2...+>)
254) 243)
255 244
256@depends on context && !patch && !org && !report exists@ 245@depends on context && !org && !report exists@
257expression subE <= ifm1.E; 246expression subE <= ifm1.E;
258expression *ifm1.E; 247expression *ifm1.E;
259expression E1,E2; 248expression E1,E2;
diff --git a/scripts/config b/scripts/config
index 608d7fdb13e8..a7c7c4b8e957 100755
--- a/scripts/config
+++ b/scripts/config
@@ -10,8 +10,10 @@ commands:
10 --enable|-e option Enable option 10 --enable|-e option Enable option
11 --disable|-d option Disable option 11 --disable|-d option Disable option
12 --module|-m option Turn option into a module 12 --module|-m option Turn option into a module
13 --set-str option value 13 --set-str option string
14 Set option to "value" 14 Set option to "string"
15 --set-val option value
16 Set option to value
15 --state|-s option Print state of option (n,y,m,undef) 17 --state|-s option Print state of option (n,y,m,undef)
16 18
17 --enable-after|-E beforeopt option 19 --enable-after|-E beforeopt option
@@ -86,7 +88,7 @@ while [ "$1" != "" ] ; do
86 B=$ARG 88 B=$ARG
87 shift 2 89 shift 2
88 ;; 90 ;;
89 --*) 91 -*)
90 checkarg "$1" 92 checkarg "$1"
91 shift 93 shift
92 ;; 94 ;;
@@ -109,6 +111,11 @@ while [ "$1" != "" ] ; do
109 shift 111 shift
110 ;; 112 ;;
111 113
114 --set-val)
115 set_var "CONFIG_$ARG" "CONFIG_$ARG=$1"
116 shift
117 ;;
118
112 --state|-s) 119 --state|-s)
113 if grep -q "# CONFIG_$ARG is not set" $FN ; then 120 if grep -q "# CONFIG_$ARG is not set" $FN ; then
114 echo n 121 echo n
diff --git a/scripts/headers_check.pl b/scripts/headers_check.pl
index 50d6cfd1fa77..7957e7a5166a 100644
--- a/scripts/headers_check.pl
+++ b/scripts/headers_check.pl
@@ -64,10 +64,10 @@ sub check_include
64 64
65sub check_declarations 65sub check_declarations
66{ 66{
67 if ($line =~m/^\s*extern\b/) { 67 if ($line =~m/^(\s*extern|unsigned|char|short|int|long|void)\b/) {
68 printf STDERR "$filename:$lineno: " . 68 printf STDERR "$filename:$lineno: " .
69 "userspace cannot call function or variable " . 69 "userspace cannot reference function or " .
70 "defined in the kernel\n"; 70 "variable defined in the kernel\n";
71 } 71 }
72} 72}
73 73
diff --git a/scripts/tags.sh b/scripts/tags.sh
index bbbe584d4494..92fdc4546141 100755
--- a/scripts/tags.sh
+++ b/scripts/tags.sh
@@ -123,7 +123,7 @@ exuberant()
123 -I ____cacheline_internodealigned_in_smp \ 123 -I ____cacheline_internodealigned_in_smp \
124 -I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL \ 124 -I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL \
125 -I DEFINE_TRACE,EXPORT_TRACEPOINT_SYMBOL,EXPORT_TRACEPOINT_SYMBOL_GPL \ 125 -I DEFINE_TRACE,EXPORT_TRACEPOINT_SYMBOL,EXPORT_TRACEPOINT_SYMBOL_GPL \
126 --extra=+f --c-kinds=-px \ 126 --extra=+f --c-kinds=+px \
127 --regex-asm='/^ENTRY\(([^)]*)\).*/\1/' \ 127 --regex-asm='/^ENTRY\(([^)]*)\).*/\1/' \
128 --regex-c='/^SYSCALL_DEFINE[[:digit:]]?\(([^,)]*).*/sys_\1/' \ 128 --regex-c='/^SYSCALL_DEFINE[[:digit:]]?\(([^,)]*).*/sys_\1/' \
129 --regex-c++='/^TRACE_EVENT\(([^,)]*).*/trace_\1/' \ 129 --regex-c++='/^TRACE_EVENT\(([^,)]*).*/trace_\1/' \