From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752569AbcGYIVf (ORCPT ); Mon, 25 Jul 2016 04:21:35 -0400 Received: from mail-pf0-f196.google.com ([209.85.192.196]:36032 "EHLO mail-pf0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752400AbcGYIV1 (ORCPT ); Mon, 25 Jul 2016 04:21:27 -0400 Date: Mon, 25 Jul 2016 13:51:21 +0530 From: Amitoj Kaur Chawla To: Julia.Lawall@lip6.fr, Gilles.Muller@lip6.fr, nicolas.palix@imag.fr, mmarek@suse.com, cocci@systeme.lip6.fr, linux-kernel@vger.kernel.org Cc: wsa@the-dreams.de Subject: [PATCH v2] Coccinelle: Script to replace NULL test with IS_ERR test for devm_ioremap_resource Message-ID: <20160725082120.GA5055@amitoj-Inspiron-3542> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This script detects cases which have incorrect error handling for devm_ioremap_resource function, employing a NULL test instead of an IS_ERR() test. Signed-off-by: Amitoj Kaur Chawla --- Changes in v2: -Changed script to correct error handling instead of just detecting cases of incorrect error handling .../null/devm_ioremap_resource_test.cocci | 66 ++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 scripts/coccinelle/null/devm_ioremap_resource_test.cocci diff --git a/scripts/coccinelle/null/devm_ioremap_resource_test.cocci b/scripts/coccinelle/null/devm_ioremap_resource_test.cocci new file mode 100644 index 0000000..671970a --- /dev/null +++ b/scripts/coccinelle/null/devm_ioremap_resource_test.cocci @@ -0,0 +1,66 @@ +/// Correct error handling for devm_ioremap_resource +/// +// Confidence: High +// Copyright: (C) 2016 Amitoj Kaur Chawla +// Keywords: devm, devm_ioremap_resource + +virtual patch +virtual context +virtual org +virtual report + +@err depends on patch && !context && !org && !report@ +expression e,e1; +@@ + + e = devm_ioremap_resource(...); + if( +- e == NULL ++ IS_ERR(e) + ) + { + ... + return +- e1 ++ PTR_ERR(e) + ; + } + +// ---------------------------------------------------------------------------- + +@err_context depends on !patch && (context || org || report)@ +expression e, e1; +position j0, j1; +@@ + + e@j0 = devm_ioremap_resource(...); + if( +* e == NULL + ) + { + ... + return +* e1@j1 + ; + } + +// ---------------------------------------------------------------------------- + +@script:python err_org depends on org@ +j0 << err_context.j0; +j1 << err_context.j1; +@@ + +msg = "Incorrect error handling." +coccilib.org.print_todo(j0[0], msg) +coccilib.org.print_link(j1[0], "") + +// ---------------------------------------------------------------------------- + +@script:python err_report depends on report@ +j0 << err_context.j0; +j1 << err_context.j1; +@@ + +msg = "Incorrect error handling around line %s." % (j1[0].line) +coccilib.report.print_report(j0[0], msg) -- 1.9.1