| Nicolas Palix | c75b81b | 2010-08-24 17:38:55 +0200 | [diff] [blame] | 1 | /// The various basic memory allocation functions don't return ERR_PTR | 
 | 2 | /// | 
 | 3 | // Confidence: High | 
| Julia Lawall | 29a36d4 | 2012-01-14 23:41:54 +0100 | [diff] [blame] | 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. | 
| Nicolas Palix | c75b81b | 2010-08-24 17:38:55 +0200 | [diff] [blame] | 7 | // URL: http://coccinelle.lip6.fr/ | 
 | 8 | // Comments: | 
 | 9 | // Options: -no_includes -include_headers | 
 | 10 |  | 
 | 11 | virtual patch | 
| Julia Lawall | 29a36d4 | 2012-01-14 23:41:54 +0100 | [diff] [blame] | 12 | virtual context | 
 | 13 | virtual org | 
 | 14 | virtual report | 
| Nicolas Palix | c75b81b | 2010-08-24 17:38:55 +0200 | [diff] [blame] | 15 |  | 
| Julia Lawall | 29a36d4 | 2012-01-14 23:41:54 +0100 | [diff] [blame] | 16 | @depends on patch@ | 
| Nicolas Palix | c75b81b | 2010-08-24 17:38:55 +0200 | [diff] [blame] | 17 | expression x,E; | 
 | 18 | @@ | 
 | 19 |  | 
 | 20 | x = \(kmalloc\|kzalloc\|kcalloc\|kmem_cache_alloc\|kmem_cache_zalloc\|kmem_cache_alloc_node\|kmalloc_node\|kzalloc_node\)(...) | 
 | 21 | ... when != x = E | 
 | 22 | - IS_ERR(x) | 
 | 23 | + !x | 
| Julia Lawall | 29a36d4 | 2012-01-14 23:41:54 +0100 | [diff] [blame] | 24 |  | 
 | 25 | @r depends on !patch exists@ | 
 | 26 | expression x,E; | 
 | 27 | position p1,p2; | 
 | 28 | @@ | 
 | 29 |  | 
 | 30 | *x = \(kmalloc@p1\|kzalloc@p1\|kcalloc@p1\|kmem_cache_alloc@p1\|kmem_cache_zalloc@p1\|kmem_cache_alloc_node@p1\|kmalloc_node@p1\|kzalloc_node@p1\)(...) | 
 | 31 | ... when != x = E | 
 | 32 | * IS_ERR@p2(x) | 
 | 33 |  | 
 | 34 | @script:python depends on org@ | 
 | 35 | p1 << r.p1; | 
 | 36 | p2 << r.p2; | 
 | 37 | @@ | 
 | 38 |  | 
 | 39 | cocci.print_main("alloc call",p1) | 
 | 40 | cocci.print_secs("IS_ERR that should be NULL tests",p2) | 
 | 41 |  | 
 | 42 | @script:python depends on report@ | 
 | 43 | p1 << r.p1; | 
 | 44 | p2 << r.p2; | 
 | 45 | @@ | 
 | 46 |  | 
 | 47 | msg = "ERROR: allocation function on line %s returns NULL not ERR_PTR on failure" % (p1[0].line) | 
 | 48 | coccilib.report.print_report(p2[0], msg) |