diff options
author | Nicolas Palix <npalix@diku.dk> | 2010-08-24 17:39:06 +0200 |
---|---|---|
committer | Michal Marek <mmarek@suse.cz> | 2010-08-31 11:37:54 +0200 |
commit | 0426a97c4b672166cbcfdc7b18466d4f207f7a36 (patch) | |
tree | 613e033f136770f5b2cf4044ec90fb7507a3481b /scripts/coccinelle | |
parent | 998f5523230a8a837809f942d556360f69121677 (diff) | |
download | lwn-0426a97c4b672166cbcfdc7b18466d4f207f7a36.tar.gz lwn-0426a97c4b672166cbcfdc7b18466d4f207f7a36.zip |
Coccinelle: Add api/memdup.cocci
Use kmemdup rather than duplicating its implementation
Signed-off-by: Nicolas Palix <npalix@diku.dk>
Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Michal Marek <mmarek@suse.cz>
Diffstat (limited to 'scripts/coccinelle')
-rw-r--r-- | scripts/coccinelle/api/memdup.cocci | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/scripts/coccinelle/api/memdup.cocci b/scripts/coccinelle/api/memdup.cocci new file mode 100644 index 000000000000..b5d722077dc1 --- /dev/null +++ b/scripts/coccinelle/api/memdup.cocci @@ -0,0 +1,40 @@ +/// Use kmemdup rather than duplicating its implementation +/// +// Confidence: High +// Copyright: (C) 2010 Nicolas Palix, DIKU. GPLv2. +// Copyright: (C) 2010 Julia Lawall, DIKU. GPLv2. +// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2. +// URL: http://coccinelle.lip6.fr/ +// Comments: +// Options: -no_includes -include_headers + +virtual patch + +@r1@ +expression from,to; +expression flag; +position p; +@@ + + to = \(kmalloc@p\|kzalloc@p\)(strlen(from) + 1,flag); + +@r2@ +expression x,from,to; +expression flag,E1; +position p; +@@ + + x = strlen(from) + 1; + ... when != \( x = E1 \| from = E1 \) + to = \(kmalloc@p\|kzalloc@p\)(x,flag); + +@@ +expression from,to,size,flag; +position p != {r1.p,r2.p}; +statement S; +@@ + +- to = \(kmalloc@p\|kzalloc@p\)(size,flag); ++ to = kmemdup(from,size,flag); + if (to==NULL || ...) S +- memcpy(to, from, size); |