Add linux-next specific files for 20110831
[linux-2.6/next.git] / scripts / coccinelle / api / memdup_user.cocci
blob72ce012e878a12bbcdcf83f421ac885751763ddf
1 /// Use kmemdup_user rather than duplicating its implementation
2 /// This is a little bit restricted to reduce false positives
3 ///
4 // Confidence: High
5 // Copyright: (C) 2010 Nicolas Palix, DIKU.  GPLv2.
6 // Copyright: (C) 2010 Julia Lawall, DIKU.  GPLv2.
7 // Copyright: (C) 2010 Gilles Muller, INRIA/LiP6.  GPLv2.
8 // URL: http://coccinelle.lip6.fr/
9 // Comments:
10 // Options: -no_includes -include_headers
12 virtual patch
15 expression from,to,size,flag;
16 position p;
17 identifier l1,l2;
20 -  to = \(kmalloc@p\|kzalloc@p\)(size,flag);
21 +  to = memdup_user(from,size);
22    if (
23 -      to==NULL
24 +      IS_ERR(to)
25                  || ...) {
26    <+... when != goto l1;
27 -  -ENOMEM
28 +  PTR_ERR(to)
29    ...+>
30    }
31 -  if (copy_from_user(to, from, size) != 0) {
32 -    <+... when != goto l2;
33 -    -EFAULT
34 -    ...+>
35 -  }