]>
Commit | Line | Data |
---|---|---|
0426a97c NP |
1 | /// Use kmemdup rather than duplicating its implementation |
2 | /// | |
3 | // Confidence: High | |
29a36d4d JL |
4 | // Copyright: (C) 2010-2012 Nicolas Palix. GPLv2. |
5 | // Copyright: (C) 2010-2012 Julia Lawall, INRIA/LIP6. GPLv2. | |
6 | // Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2. | |
0426a97c NP |
7 | // URL: http://coccinelle.lip6.fr/ |
8 | // Comments: | |
93f14468 | 9 | // Options: --no-includes --include-headers |
0426a97c NP |
10 | |
11 | virtual patch | |
29a36d4d JL |
12 | virtual context |
13 | virtual org | |
14 | virtual report | |
0426a97c NP |
15 | |
16 | @r1@ | |
17 | expression from,to; | |
18 | expression flag; | |
19 | position p; | |
20 | @@ | |
21 | ||
22 | to = \(kmalloc@p\|kzalloc@p\)(strlen(from) + 1,flag); | |
23 | ||
24 | @r2@ | |
25 | expression x,from,to; | |
26 | expression flag,E1; | |
27 | position p; | |
28 | @@ | |
29 | ||
30 | x = strlen(from) + 1; | |
31 | ... when != \( x = E1 \| from = E1 \) | |
32 | to = \(kmalloc@p\|kzalloc@p\)(x,flag); | |
33 | ||
29a36d4d | 34 | @depends on patch@ |
0426a97c NP |
35 | expression from,to,size,flag; |
36 | position p != {r1.p,r2.p}; | |
37 | statement S; | |
38 | @@ | |
39 | ||
40 | - to = \(kmalloc@p\|kzalloc@p\)(size,flag); | |
41 | + to = kmemdup(from,size,flag); | |
42 | if (to==NULL || ...) S | |
43 | - memcpy(to, from, size); | |
29a36d4d JL |
44 | |
45 | @r depends on !patch@ | |
46 | expression from,to,size,flag; | |
47 | position p != {r1.p,r2.p}; | |
48 | statement S; | |
49 | @@ | |
50 | ||
51 | * to = \(kmalloc@p\|kzalloc@p\)(size,flag); | |
52 | to = kmemdup(from,size,flag); | |
53 | if (to==NULL || ...) S | |
54 | * memcpy(to, from, size); | |
55 | ||
56 | @script:python depends on org@ | |
57 | p << r.p; | |
58 | @@ | |
59 | ||
60 | coccilib.org.print_todo(p[0], "WARNING opportunity for kmemdep") | |
61 | ||
62 | @script:python depends on report@ | |
63 | p << r.p; | |
64 | @@ | |
65 | ||
66 | coccilib.report.print_report(p[0], "WARNING opportunity for kmemdep") |