-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Coccinelle: Script to detect cast after memory allocation
This script detects cases of use of cast for the value returned by kmalloc, kzalloc, kcalloc, kmem_cache_alloc, kmem_cache_zalloc, kmem_cache_alloc_node, kmalloc_node and kzalloc_node and removes the cast as it is not useful. This Coccinelle script replaces drop_kmalloc_cast.cocci as it removes the casting in more limited cases of kmalloc, kzalloc and kcalloc. Signed-off-by: Himangi Saraogi <himangi774@gmail.com> Acked-by: Julia Lawall <julia.lawall@lip6.fr> Signed-off-by: Michal Marek <mmarek@suse.cz>
- Loading branch information
Himangi Saraogi
authored and
Michal Marek
committed
Aug 6, 2014
1 parent
b5889ab
commit 99fcec3
Showing
2 changed files
with
72 additions
and
67 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
/// 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) | ||
This file was deleted.
Oops, something went wrong.