From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752582AbbDEMMe (ORCPT ); Sun, 5 Apr 2015 08:12:34 -0400 Received: from mail2-relais-roc.national.inria.fr ([192.134.164.83]:40441 "EHLO mail2-relais-roc.national.inria.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751059AbbDEMMc (ORCPT ); Sun, 5 Apr 2015 08:12:32 -0400 X-IronPort-AV: E=Sophos;i="5.11,527,1422918000"; d="scan'208";a="131681061" Date: Sun, 5 Apr 2015 14:12:30 +0200 (CEST) From: Julia Lawall X-X-Sender: jll@localhost6.localdomain6 To: Jaroslav Kysela cc: kernel-janitors@vger.kernel.org, Takashi Iwai , alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 0/10] fix error return code In-Reply-To: <1428233914-4503-1-git-send-email-Julia.Lawall@lip6.fr> Message-ID: References: <1428233914-4503-1-git-send-email-Julia.Lawall@lip6.fr> User-Agent: Alpine 2.02 (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 Please ignore. Wrong patch set. On Sun, 5 Apr 2015, Julia Lawall wrote: > These patches fix cases where the return code appears to be unintentially > nonnegative. > > The complete semantic match that finds the problem is as follows: > (http://coccinelle.lip6.fr/) > > // > @ok exists@ > identifier f,ret,i; > expression e; > constant c; > @@ > > f(...) { > <+... > ( > return -c@i; > | > ret = -c@i; > ... when != ret = e > return ret; > | > if (ret < 0) { ... return ret; } > ) > ...+> } > > @r exists@ > identifier ret,l,ok.f; > expression e1,e2,e3; > statement S; > position p1,p2,p3; > @@ > > f(...) { > ... when any > ( > if@p1 (\(ret < 0\|ret != 0\)) > { ... return ret; } > | > ret@p1 = 0 > ) > ... when != ret = e1 > when != &ret > ( > if (<+... ret = e3 ...+>) S > | > if (<+... &ret ...+>) S > | > if@p2(...) > { > ... when != ret = e2 > when forall > return@p3 ret; > } > ) > ... when any > } > > @bad exists@ > position r.p1,r.p2; > statement S1,S2; > identifier r.ret; > expression e1; > @@ > > ( > if@p1 (\(ret < 0\|ret != 0\)) S1 > | > ret@p1 = 0 > ) > ... when any > ret = e1 > ... when any > if@p2(...) S2 > > @bad2@ > position r.p1,r.p2; > identifier r.ret; > expression e1; > statement S2; > @@ > > ret@p1 = 0 > ... when != if (...) { ... ret = e1 ... return ret; } > when any > if@p2(...) S2 > > > @script:python depends on !bad && !bad2@ > p1 << r.p1; > p2 << r.p2; > p3 << r.p3; > @@ > > cocci.print_main("",p1) > cocci.print_secs("",p2) > cocci.print_secs("",p3) > // > > -- > To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html >