From patchwork Mon Apr 26 21:11:19 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Palix X-Patchwork-Id: 95204 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter.kernel.org (8.14.3/8.14.3) with ESMTP id o3QLDL94031180 for ; Mon, 26 Apr 2010 21:13:24 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754988Ab0DZVMc (ORCPT ); Mon, 26 Apr 2010 17:12:32 -0400 Received: from mgw2.diku.dk ([130.225.96.92]:50085 "EHLO mgw2.diku.dk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754808Ab0DZVMF (ORCPT ); Mon, 26 Apr 2010 17:12:05 -0400 Received: from localhost (localhost [127.0.0.1]) by mgw2.diku.dk (Postfix) with ESMTP id 1617719BB61; Mon, 26 Apr 2010 23:12:04 +0200 (CEST) Received: from mgw2.diku.dk ([127.0.0.1]) by localhost (mgw2.diku.dk [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 30179-12; Mon, 26 Apr 2010 23:11:59 +0200 (CEST) Received: from nhugin.diku.dk (nhugin.diku.dk [130.225.96.140]) by mgw2.diku.dk (Postfix) with ESMTP id 91D7219BB65; Mon, 26 Apr 2010 23:11:59 +0200 (CEST) Received: from localhost.localdomain (tyr.diku.dk [130.225.96.226]) by nhugin.diku.dk (Postfix) with ESMTP id 071016DFD0A; Mon, 26 Apr 2010 23:05:11 +0200 (CEST) From: Nicolas Palix To: Andrew Morton , Joe Perches , "David S. Miller" , Michal Marek , Sam Ravnborg , Julia Lawall , Gilles Muller , Nicolas Palix , linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org, cocci@diku.dk Subject: [PATCH 4/4] Add scripts/smpl/resource_size.cocci Date: Mon, 26 Apr 2010 23:11:19 +0200 Message-Id: <1272316279-12042-5-git-send-email-npalix@diku.dk> X-Mailer: git-send-email 1.6.3.3 In-Reply-To: <1272316279-12042-1-git-send-email-npalix@diku.dk> References: <1272316279-12042-1-git-send-email-npalix@diku.dk> Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter.kernel.org [140.211.167.41]); Mon, 26 Apr 2010 21:13:24 +0000 (UTC) diff --git a/scripts/smpl/resource_size.cocci b/scripts/smpl/resource_size.cocci new file mode 100644 index 0000000..e5e24ac --- /dev/null +++ b/scripts/smpl/resource_size.cocci @@ -0,0 +1,101 @@ +/// +/// Use resource_size function on resource object +/// instead of explicit computation. +/// +/// The semantic patch that makes this change is available +/// in THISFILE. +/// +/// More information about semantic patching is available at +/// http://coccinelle.lip6.fr/ +/// +// Confidence: High +// Copyright: (C) 2009, 2010 Nicolas Palix, DIKU. GPLv2. +// Copyright: (C) 2009, 2010 Julia Lawall, DIKU. GPLv2. +// Copyright: (C) 2009, 2010 Gilles Muller, EMN. GPLv2. +// URL: http://coccinelle.lip6.fr/ +// Options: +// +// Keywords: resource_size +// Version min: 2.6.27 resource_size +// Version max: * +// + +virtual context +virtual patch +virtual org +virtual report + +//---------------------------------------------------------- +// For context mode +//---------------------------------------------------------- + +@r_context depends on context && !patch && !org@ +struct resource *res; +@@ + +* (res->end - res->start) + 1 + +//---------------------------------------------------------- +// For patch mode +//---------------------------------------------------------- + +@r_patch depends on !context && patch && !org@ +struct resource *res; +@@ + +- (res->end - res->start) + 1 ++ resource_size(res) + +//---------------------------------------------------------- +// For org mode +//---------------------------------------------------------- + + +@r_org depends on !context && !patch && (org || report)@ +struct resource *res; +position p; +@@ + + (res->end@p - res->start) + 1 + +@rbad_org depends on !context && !patch && (org || report)@ +struct resource *res; +position p != r_org.p; +@@ + + res->end@p - res->start + +@script:python depends on org@ +p << r_org.p; +x << r_org.res; +@@ + +msg="ERROR with %s" % (x) +msg_safe=msg.replace("[","@(").replace("]",")") +coccilib.org.print_todo(p[0], msg_safe) + +@script:python depends on report@ +p << r_org.p; +x << r_org.res; +@@ + +msg="ERROR: Missing resource_size with %s" % (x) +coccilib.report.print_report(p[0], msg) + +@script:python depends on org@ +p << rbad_org.p; +x << rbad_org.res; +@@ + +msg="WARNING with %s" % (x) +msg_safe=msg.replace("[","@(").replace("]",")") +coccilib.org.print_todo(p[0], msg_safe) + +@script:python depends on report@ +p << rbad_org.p; +x << rbad_org.res; +@@ + +msg="WARNING: Suspicious code. resource_size is maybe missing with %s" % (x) +coccilib.report.print_report(p[0], msg) +