 2d5c5dbb48
			
		
	
	
	2d5c5dbb48
	
	
	
		
			
			Failure to terminate an of_device_id table can lead to confusing failures depending on where the compiler places the array. Add a check to make sure these tables are terminated. Thanks to Mitchel Humpherys for coming up with the pattern initially. Cc: Mitchel Humpherys <mitchelh@codeaurora.org> Cc: Gilles Muller <Gilles.Muller@lip6.fr> Cc: Nicolas Palix <nicolas.palix@imag.fr> Cc: Rob Herring <robh+dt@kernel.org> Cc: devicetree@vger.kernel.org Signed-off-by: Stephen Boyd <sboyd@codeaurora.org> Acked-by: Grant Likely <grant.likely@linaro.org> Signed-off-by: Julia Lawall <julia.lawall@lip6.fr> Signed-off-by: Michal Marek <mmarek@suse.cz>
		
			
				
	
	
		
			62 lines
		
	
	
	
		
			831 B
			
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
	
		
			831 B
			
		
	
	
	
		
			Text
		
	
	
	
	
	
| /// Make sure of_device_id tables are NULL terminated
 | |
| //
 | |
| // Keywords: of_table
 | |
| // Confidence: Medium
 | |
| // Options: --include-headers
 | |
| 
 | |
| virtual patch
 | |
| virtual context
 | |
| virtual org
 | |
| virtual report
 | |
| 
 | |
| @depends on context@
 | |
| identifier var, arr;
 | |
| expression E;
 | |
| @@
 | |
| struct of_device_id arr[] = {
 | |
| 	...,
 | |
| 	{
 | |
| 	.var = E,
 | |
| *	}
 | |
| };
 | |
| 
 | |
| @depends on patch@
 | |
| identifier var, arr;
 | |
| expression E;
 | |
| @@
 | |
| struct of_device_id arr[] = {
 | |
| 	...,
 | |
| 	{
 | |
| 	.var = E,
 | |
| -	}
 | |
| +	},
 | |
| +	{ }
 | |
| };
 | |
| 
 | |
| @r depends on org || report@
 | |
| position p1;
 | |
| identifier var, arr;
 | |
| expression E;
 | |
| @@
 | |
| struct of_device_id arr[] = {
 | |
| 	...,
 | |
| 	{
 | |
| 	.var = E,
 | |
| 	}
 | |
| 	@p1
 | |
| };
 | |
| 
 | |
| @script:python depends on org@
 | |
| p1 << r.p1;
 | |
| arr << r.arr;
 | |
| @@
 | |
| 
 | |
| cocci.print_main(arr,p1)
 | |
| 
 | |
| @script:python depends on report@
 | |
| p1 << r.p1;
 | |
| arr << r.arr;
 | |
| @@
 | |
| 
 | |
| msg = "%s is not NULL terminated at line %s" % (arr, p1[0].line)
 | |
| coccilib.report.print_report(p1[0],msg)
 |