|  | /// | 
|  | /// Casting (void *) value returned by kmalloc is useless | 
|  | /// as mentioned in Documentation/CodingStyle, Chap 14. | 
|  | /// | 
|  | // Confidence: High | 
|  | // Copyright: 2009,2010 Nicolas Palix, DIKU.  GPLv2. | 
|  | // URL: http://coccinelle.lip6.fr/ | 
|  | // Options: -no_includes -include_headers | 
|  | // | 
|  | // Keywords: kmalloc, kzalloc, kcalloc | 
|  | // Version min: < 2.6.12 kmalloc | 
|  | // Version min: < 2.6.12 kcalloc | 
|  | // Version min:   2.6.14 kzalloc | 
|  | // | 
|  |  | 
|  | virtual context | 
|  | virtual patch | 
|  | virtual org | 
|  | virtual report | 
|  |  | 
|  | //---------------------------------------------------------- | 
|  | //  For context mode | 
|  | //---------------------------------------------------------- | 
|  |  | 
|  | @depends on context@ | 
|  | type T; | 
|  | @@ | 
|  |  | 
|  | * (T *) | 
|  | \(kmalloc\|kzalloc\|kcalloc\)(...) | 
|  |  | 
|  | //---------------------------------------------------------- | 
|  | //  For patch mode | 
|  | //---------------------------------------------------------- | 
|  |  | 
|  | @depends on patch@ | 
|  | type T; | 
|  | @@ | 
|  |  | 
|  | - (T *) | 
|  | \(kmalloc\|kzalloc\|kcalloc\)(...) | 
|  |  | 
|  | //---------------------------------------------------------- | 
|  | //  For org and report mode | 
|  | //---------------------------------------------------------- | 
|  |  | 
|  | @r depends on org || report@ | 
|  | type T; | 
|  | position p; | 
|  | @@ | 
|  |  | 
|  | (T@p *)\(kmalloc\|kzalloc\|kcalloc\)(...) | 
|  |  | 
|  | @script:python depends on org@ | 
|  | p << r.p; | 
|  | t << r.T; | 
|  | @@ | 
|  |  | 
|  | coccilib.org.print_safe_todo(p[0], t) | 
|  |  | 
|  | @script:python depends on report@ | 
|  | p << r.p; | 
|  | t << r.T; | 
|  | @@ | 
|  |  | 
|  | msg="WARNING: casting value returned by k[cmz]alloc to (%s *) is useless." % (t) | 
|  | coccilib.report.print_report(p[0], msg) |