Commit 0426a97c4b672166cbcfdc7b18466d4f207f7a36
Committed by
Michal Marek
1 parent
998f552323
Exists in
master
and in
39 other branches
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>
Showing 1 changed file with 40 additions and 0 deletions Side-by-side Diff
scripts/coccinelle/api/memdup.cocci
1 | +/// Use kmemdup rather than duplicating its implementation | |
2 | +/// | |
3 | +// Confidence: High | |
4 | +// Copyright: (C) 2010 Nicolas Palix, DIKU. GPLv2. | |
5 | +// Copyright: (C) 2010 Julia Lawall, DIKU. GPLv2. | |
6 | +// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2. | |
7 | +// URL: http://coccinelle.lip6.fr/ | |
8 | +// Comments: | |
9 | +// Options: -no_includes -include_headers | |
10 | + | |
11 | +virtual patch | |
12 | + | |
13 | +@r1@ | |
14 | +expression from,to; | |
15 | +expression flag; | |
16 | +position p; | |
17 | +@@ | |
18 | + | |
19 | + to = \(kmalloc@p\|kzalloc@p\)(strlen(from) + 1,flag); | |
20 | + | |
21 | +@r2@ | |
22 | +expression x,from,to; | |
23 | +expression flag,E1; | |
24 | +position p; | |
25 | +@@ | |
26 | + | |
27 | + x = strlen(from) + 1; | |
28 | + ... when != \( x = E1 \| from = E1 \) | |
29 | + to = \(kmalloc@p\|kzalloc@p\)(x,flag); | |
30 | + | |
31 | +@@ | |
32 | +expression from,to,size,flag; | |
33 | +position p != {r1.p,r2.p}; | |
34 | +statement S; | |
35 | +@@ | |
36 | + | |
37 | +- to = \(kmalloc@p\|kzalloc@p\)(size,flag); | |
38 | ++ to = kmemdup(from,size,flag); | |
39 | + if (to==NULL || ...) S | |
40 | +- memcpy(to, from, size); |