From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754722AbbHFOhR (ORCPT ); Thu, 6 Aug 2015 10:37:17 -0400 Received: from mail2-relais-roc.national.inria.fr ([192.134.164.83]:46463 "EHLO mail2-relais-roc.national.inria.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753162AbbHFOhP (ORCPT ); Thu, 6 Aug 2015 10:37:15 -0400 X-IronPort-AV: E=Sophos;i="5.15,622,1432591200"; d="scan'208";a="172868372" Date: Thu, 6 Aug 2015 16:37:09 +0200 (CEST) From: Julia Lawall X-X-Sender: jll@hadrien To: Andrzej Hajda cc: Julia Lawall , Marek Szyprowski , Bartlomiej Zolnierkiewicz , Gilles Muller , Nicolas Palix , Michal Marek , "moderated list:COCCINELLE/Semantic Patches (SmPL)" , linux-kernel@vger.kernel.org Subject: Re: [PATCH] coccinelle: memdup.cocci: fix matching rules In-Reply-To: <1438863254-19897-1-git-send-email-a.hajda@samsung.com> Message-ID: References: <1438863254-19897-1-git-send-email-a.hajda@samsung.com> User-Agent: Alpine 2.10 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Acked-by: Julia Lawall Thanks for addressing this problem. julia On Thu, 6 Aug 2015, Andrzej Hajda wrote: > This patch fixes three things, listed in order of importance. > 1. Removes matching of kmemdup from !patch rule - it is incorrect and > in fact makes report mode unusable. > 2. Adds unlikely to if clause. It allows to match more cases - the ones with > unlikely and the ones without it. > 3. Fixes report message. > > Signed-off-by: Andrzej Hajda > --- > Hi Julia, > > I guess 1st and 3rd changes are OK. I am not sure about 2nd change, without > it I was not able to catch cases containing unlikely macro. For example > fs/ntfs/dir.c:1175: > ir = kmalloc(rc, GFP_NOFS); > if (unlikely(!ir)) { > err = -ENOMEM; > goto err_out; > } > /* Copy the index root value (it has been verified in read_inode). */ > memcpy(ir, (u8*)ctx->attr + > le16_to_cpu(ctx->attr->data.resident.value_offset), rc); > > It seems quite strange for me, as these rules looks to me isomorphic. > Is this expected behavior of coccinelle or just some bug? > > After this fix, cocci finds 46 places to patch, I will send patchset if this > change looks OK to you. > > I have used: > spatch version 1.0.1 with Python support and with PCRE support > latest linux-next. > > Regards > Andrzej > --- > scripts/coccinelle/api/memdup.cocci | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > diff --git a/scripts/coccinelle/api/memdup.cocci b/scripts/coccinelle/api/memdup.cocci > index 3d1aa71..2297205 100644 > --- a/scripts/coccinelle/api/memdup.cocci > +++ b/scripts/coccinelle/api/memdup.cocci > @@ -39,7 +39,7 @@ statement S; > > - to = \(kmalloc@p\|kzalloc@p\)(size,flag); > + to = kmemdup(from,size,flag); > - if (to==NULL || ...) S > + if (unlikely(to==NULL) || ...) S > - memcpy(to, from, size); > > @r depends on !patch@ > @@ -49,18 +49,17 @@ statement S; > @@ > > * to = \(kmalloc@p\|kzalloc@p\)(size,flag); > - to = kmemdup(from,size,flag); > - if (to==NULL || ...) S > + if (unlikely(to==NULL) || ...) S > * memcpy(to, from, size); > > @script:python depends on org@ > p << r.p; > @@ > > -coccilib.org.print_todo(p[0], "WARNING opportunity for kmemdep") > +coccilib.org.print_todo(p[0], "WARNING opportunity for kmemdup") > > @script:python depends on report@ > p << r.p; > @@ > > -coccilib.report.print_report(p[0], "WARNING opportunity for kmemdep") > +coccilib.report.print_report(p[0], "WARNING opportunity for kmemdup") > -- > 1.9.1 > >