mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-09-04 20:19:47 +08:00 
			
		
		
		
	 67afc2110a
			
		
	
	
		67afc2110a
		
	
	
	
	
		
			
			Extend checking on tables containing structures which are initialized without specifying member name. Added new tables for checking: i2c_device_id and platform_device_id. Signed-off-by: Daniel Granat <d.granat@samsung.com> Acked-by: Julia Lawall <julia.lawall@lip6.fr> Signed-off-by: Michal Marek <mmarek@suse.cz>
		
			
				
	
	
		
			86 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /// Make sure (of/i2c/platform)_device_id tables are NULL terminated
 | |
| //
 | |
| // Keywords: of_table i2c_table platform_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 \| i2c_device_id \| platform_device_id\) arr[] = {
 | |
| 	...,
 | |
| 	{
 | |
| 	.var = E,
 | |
| *	}
 | |
| };
 | |
| |
 | |
| struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
 | |
| 	...,
 | |
| *	{ ..., E, ... },
 | |
| };
 | |
| )
 | |
| 
 | |
| @depends on patch@
 | |
| identifier var, arr;
 | |
| expression E;
 | |
| @@
 | |
| (
 | |
| struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
 | |
| 	...,
 | |
| 	{
 | |
| 	.var = E,
 | |
| -	}
 | |
| +	},
 | |
| +	{ }
 | |
| };
 | |
| |
 | |
| struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
 | |
| 	...,
 | |
| 	{ ..., E, ... },
 | |
| +	{ },
 | |
| };
 | |
| )
 | |
| 
 | |
| @r depends on org || report@
 | |
| position p1;
 | |
| identifier var, arr;
 | |
| expression E;
 | |
| @@
 | |
| (
 | |
| struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
 | |
| 	...,
 | |
| 	{
 | |
| 	.var = E,
 | |
| 	}
 | |
| 	@p1
 | |
| };
 | |
| |
 | |
| struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
 | |
| 	...,
 | |
| 	{ ..., 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)
 |