73 lines
		
	
	
	
		
			1.8 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			73 lines
		
	
	
	
		
			1.8 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
|   | /// Remove casting the values returned by memory allocation functions | ||
|  | /// like kmalloc, kzalloc, kmem_cache_alloc, kmem_cache_zalloc etc. | ||
|  | /// | ||
|  | //# This makes an effort to find cases of casting of values returned by | ||
|  | //# kmalloc, kzalloc, kcalloc, kmem_cache_alloc, kmem_cache_zalloc, | ||
|  | //# kmem_cache_alloc_node, kmalloc_node and kzalloc_node and removes | ||
|  | //# the casting as it is not required. The result in the patch case may | ||
|  | //#need some reformatting. | ||
|  | // | ||
|  | // Confidence: High | ||
|  | // Copyright: 2014, Himangi Saraogi  GPLv2. | ||
|  | // Comments: | ||
|  | // Options: --no-includes --include-headers | ||
|  | // | ||
|  | 
 | ||
|  | virtual context | ||
|  | virtual patch | ||
|  | virtual org | ||
|  | virtual report | ||
|  | 
 | ||
|  | //---------------------------------------------------------- | ||
|  | //  For context mode | ||
|  | //---------------------------------------------------------- | ||
|  | 
 | ||
|  | @depends on context@ | ||
|  | type T; | ||
|  | @@ | ||
|  | 
 | ||
|  | * (T *) | ||
|  |   \(kmalloc\|kzalloc\|kcalloc\|kmem_cache_alloc\|kmem_cache_zalloc\| | ||
|  |    kmem_cache_alloc_node\|kmalloc_node\|kzalloc_node\)(...) | ||
|  | 
 | ||
|  | //---------------------------------------------------------- | ||
|  | //  For patch mode | ||
|  | //---------------------------------------------------------- | ||
|  | 
 | ||
|  | @depends on patch@ | ||
|  | type T; | ||
|  | @@ | ||
|  | 
 | ||
|  | - (T *) | ||
|  |   (\(kmalloc\|kzalloc\|kcalloc\|kmem_cache_alloc\|kmem_cache_zalloc\| | ||
|  |    kmem_cache_alloc_node\|kmalloc_node\|kzalloc_node\)(...)) | ||
|  | 
 | ||
|  | //---------------------------------------------------------- | ||
|  | //  For org and report mode | ||
|  | //---------------------------------------------------------- | ||
|  | 
 | ||
|  | @r depends on org || report@ | ||
|  | type T; | ||
|  | position p; | ||
|  | @@ | ||
|  | 
 | ||
|  |  (T@p *)\(kmalloc\|kzalloc\|kcalloc\|kmem_cache_alloc\|kmem_cache_zalloc\| | ||
|  |    kmem_cache_alloc_node\|kmalloc_node\|kzalloc_node\)(...) | ||
|  | 
 | ||
|  | @script:python depends on org@ | ||
|  | p << r.p; | ||
|  | t << r.T; | ||
|  | @@ | ||
|  | 
 | ||
|  | coccilib.org.print_safe_todo(p[0], t) | ||
|  | 
 | ||
|  | @script:python depends on report@ | ||
|  | p << r.p; | ||
|  | t << r.T; | ||
|  | @@ | ||
|  | 
 | ||
|  | msg="WARNING: casting value returned by memory allocation function to (%s *) is useless." % (t) | ||
|  | coccilib.report.print_report(p[0], msg) | ||
|  | 
 | ||
|  | 
 |