~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/scripts/coccinelle/null/badzero.cocci

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /scripts/coccinelle/null/badzero.cocci (Version linux-6.12-rc7) and /scripts/coccinelle/null/badzero.cocci (Version policy-sample)


  1 // SPDX-License-Identifier: GPL-2.0-only          
  2 /// Compare pointer-typed values to NULL rathe    
  3 ///                                               
  4 //# This makes an effort to choose between !x     
  5 //# if it has previously been used with the fu    
  6 //# This relies on type information.  More typ    
  7 //# using the option -all_includes and the opt    
  8 //# include path.                                 
  9 //                                                
 10 // Confidence: High                               
 11 // Copyright: (C) 2012 Julia Lawall, INRIA/LIP    
 12 // Copyright: (C) 2012 Gilles Muller, INRIA/Li    
 13 // URL: https://coccinelle.gitlabpages.inria.f    
 14 // Requires: 1.0.0                                
 15 // Options:                                       
 16                                                   
 17 virtual patch                                     
 18 virtual context                                   
 19 virtual org                                       
 20 virtual report                                    
 21                                                   
 22 @initialize:ocaml@                                
 23 @@                                                
 24 let negtable = Hashtbl.create 101                 
 25                                                   
 26 @depends on patch@                                
 27 expression *E;                                    
 28 identifier f;                                     
 29 @@                                                
 30                                                   
 31 (                                                 
 32   (E = f(...)) ==                                 
 33 - 0                                               
 34 + NULL                                            
 35 |                                                 
 36   (E = f(...)) !=                                 
 37 - 0                                               
 38 + NULL                                            
 39 |                                                 
 40 - 0                                               
 41 + NULL                                            
 42   == (E = f(...))                                 
 43 |                                                 
 44 - 0                                               
 45 + NULL                                            
 46   != (E = f(...))                                 
 47 )                                                 
 48                                                   
 49                                                   
 50 @t1 depends on !patch@                            
 51 expression *E;                                    
 52 identifier f;                                     
 53 position p;                                       
 54 @@                                                
 55                                                   
 56 (                                                 
 57   (E = f(...)) ==                                 
 58 * 0@p                                             
 59 |                                                 
 60   (E = f(...)) !=                                 
 61 * 0@p                                             
 62 |                                                 
 63 * 0@p                                             
 64   == (E = f(...))                                 
 65 |                                                 
 66 * 0@p                                             
 67   != (E = f(...))                                 
 68 )                                                 
 69                                                   
 70 @script:python depends on org@                    
 71 p << t1.p;                                        
 72 @@                                                
 73                                                   
 74 coccilib.org.print_todo(p[0], "WARNING compari    
 75                                                   
 76 @script:python depends on report@                 
 77 p << t1.p;                                        
 78 @@                                                
 79                                                   
 80 coccilib.report.print_report(p[0], "WARNING co    
 81                                                   
 82 // Tests of returned values                       
 83                                                   
 84 @s@                                               
 85 identifier f;                                     
 86 expression E,E1;                                  
 87 @@                                                
 88                                                   
 89  E = f(...)                                       
 90  ... when != E = E1                               
 91  !E                                               
 92                                                   
 93 @script:ocaml depends on s@                       
 94 f << s.f;                                         
 95 @@                                                
 96                                                   
 97 try let _ = Hashtbl.find negtable f in ()         
 98 with Not_found -> Hashtbl.add negtable f ()       
 99                                                   
100 @ r disable is_zero,isnt_zero exists @            
101 expression *E;                                    
102 identifier f;                                     
103 @@                                                
104                                                   
105 E = f(...)                                        
106 ...                                               
107 (E == 0                                           
108 |E != 0                                           
109 |0 == E                                           
110 |0 != E                                           
111 )                                                 
112                                                   
113 @script:ocaml@                                    
114 f << r.f;                                         
115 @@                                                
116                                                   
117 try let _ = Hashtbl.find negtable f in ()         
118 with Not_found -> include_match false             
119                                                   
120 // This rule may lead to inconsistent path pro    
121 // places                                         
122 @ depends on patch disable is_zero,isnt_zero @    
123 expression *E;                                    
124 expression E1;                                    
125 identifier r.f;                                   
126 @@                                                
127                                                   
128 E = f(...)                                        
129 <...                                              
130 (                                                 
131 - E == 0                                          
132 + !E                                              
133 |                                                 
134 - E != 0                                          
135 + E                                               
136 |                                                 
137 - 0 == E                                          
138 + !E                                              
139 |                                                 
140 - 0 != E                                          
141 + E                                               
142 )                                                 
143 ...>                                              
144 ?E = E1                                           
145                                                   
146 @t2 depends on !patch disable is_zero,isnt_zer    
147 expression *E;                                    
148 expression E1;                                    
149 identifier r.f;                                   
150 position p1;                                      
151 position p2;                                      
152 @@                                                
153                                                   
154 E = f(...)                                        
155 <...                                              
156 (                                                 
157 * E == 0@p1                                       
158 |                                                 
159 * E != 0@p2                                       
160 |                                                 
161 * 0@p1 == E                                       
162 |                                                 
163 * 0@p1 != E                                       
164 )                                                 
165 ...>                                              
166 ?E = E1                                           
167                                                   
168 @script:python depends on org@                    
169 p << t2.p1;                                       
170 @@                                                
171                                                   
172 coccilib.org.print_todo(p[0], "WARNING compari    
173                                                   
174 @script:python depends on org@                    
175 p << t2.p2;                                       
176 @@                                                
177                                                   
178 coccilib.org.print_todo(p[0], "WARNING compari    
179                                                   
180 @script:python depends on report@                 
181 p << t2.p1;                                       
182 @@                                                
183                                                   
184 coccilib.report.print_report(p[0], "WARNING co    
185                                                   
186 @script:python depends on report@                 
187 p << t2.p2;                                       
188 @@                                                
189                                                   
190 coccilib.report.print_report(p[0], "WARNING co    
191                                                   
192 @ depends on patch disable is_zero,isnt_zero @    
193 expression *E;                                    
194 @@                                                
195                                                   
196 (                                                 
197   E ==                                            
198 - 0                                               
199 + NULL                                            
200 |                                                 
201   E !=                                            
202 - 0                                               
203 + NULL                                            
204 |                                                 
205 - 0                                               
206 + NULL                                            
207   == E                                            
208 |                                                 
209 - 0                                               
210 + NULL                                            
211   != E                                            
212 )                                                 
213                                                   
214 @ t3 depends on !patch disable is_zero,isnt_ze    
215 expression *E;                                    
216 position p;                                       
217 @@                                                
218                                                   
219 (                                                 
220 * E == 0@p                                        
221 |                                                 
222 * E != 0@p                                        
223 |                                                 
224 * 0@p == E                                        
225 |                                                 
226 * 0@p != E                                        
227 )                                                 
228                                                   
229 @script:python depends on org@                    
230 p << t3.p;                                        
231 @@                                                
232                                                   
233 coccilib.org.print_todo(p[0], "WARNING compari    
234                                                   
235 @script:python depends on report@                 
236 p << t3.p;                                        
237 @@                                                
238                                                   
239 coccilib.report.print_report(p[0], "WARNING co    
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php