/// This semantic patch looks for kmalloc etc that are not followed by a /// NULL check. It only gives a report in the case where there is some /// error handling code later in the function, which may be helpful /// in determining what the error handling code for the call to kmalloc etc /// should be. /// // Confidence: High // Copyright: (C) 2010 Nicolas Palix, DIKU. GPLv2. // Copyright: (C) 2010 Julia Lawall, DIKU. GPLv2. // Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2. // URL: http://coccinelle.lip6.fr/ // Comments: // Options: --no-includes --include-headers virtual context virtual org virtual report @withtest@ expression x; position p; identifier f,fld; @@ x@p = f(...); ... when != x->fld \(x == NULL \| x != NULL\) @fixed depends on context && !org && !report@ expression x,x1; position p1 != withtest.p; statement S; position any withtest.p; identifier f; @@ *x@p1 = \(kmalloc\|kzalloc\|kcalloc\)(...); ... *x1@p = f(...); if (!x1) S // ------------------------------------------------------------------------ @rfixed depends on (org || report) && !context exists@ expression x,x1; position p1 != withtest.p; position p2; statement S; position any withtest.p; identifier f; @@ x@p1 = \(kmalloc\|kzalloc\|kcalloc\)(...); ... x1@p = f@p2(...); if (!x1) S @script:python depends on org@ p1 << rfixed.p1; p2 << rfixed.p2; @@ cocci.print_main("alloc call",p1) cocci.print_secs("possible model",p2) @script:python depends on report@ p1 << rfixed.p1; p2 << rfixed.p2; @@ msg = "alloc with no test, possible model on line %s" % (p2[0].line) coccilib.report.print_report(p1[0],msg) .git/log/'>log</a><a class='active' href='/cgit.cgi/linux/net-next.git/tree/?id=252ae5330daa121586e9713b704068851e8565d9'>tree</a><a href='/cgit.cgi/linux/net-next.git/commit/?id=252ae5330daa121586e9713b704068851e8565d9'>commit</a><a href='/cgit.cgi/linux/net-next.git/diff/?id=252ae5330daa121586e9713b704068851e8565d9'>diff</a></td><td class='form'><form class='right' method='get' action='/cgit.cgi/linux/net-next.git/log/'> <input type='hidden' name='id' value='252ae5330daa121586e9713b704068851e8565d9'/><select name='qt'> <option value='grep'>log msg</option> <option value='author'>author</option> <option value='committer'>committer</option> <option value='range'>range</option> </select> <input class='txt' type='search' size='10' name='q' value=''/> <input type='submit' value='search'/> </form> </td></tr></table> <div class='content'><table summary='tree listing' class='list'> <tr class='nohover'><th class='left'>Mode</th><th class='left'>Name</th><th class='right'>Size</th><th/></tr>