From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 543C5C10DCE for ; Sun, 15 Mar 2020 16:39:48 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0836C205ED for ; Sun, 15 Mar 2020 16:39:47 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="gNdaoJLw" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0836C205ED Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jDWI9-0003g0-64; Sun, 15 Mar 2020 16:39:09 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jDWI7-0003ft-Tk for xen-devel@lists.xenproject.org; Sun, 15 Mar 2020 16:39:08 +0000 X-Inumbo-ID: 79ac6db8-66db-11ea-b6e0-12813bfff9fa Received: from us-smtp-1.mimecast.com (unknown [207.211.31.81]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTP id 79ac6db8-66db-11ea-b6e0-12813bfff9fa; Sun, 15 Mar 2020 16:39:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1584290342; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/9R9iI6p6O0yC345l0HsKvgBLnxQ/LFQLK9fpGkLq/g=; b=gNdaoJLwgIsWwnMbev8y2o7jy3ZRr2/OTSLl5ogz3f6WYvLh0BCFVnhrBZlSMGa5HhR4QV iOXR/OcrBkN4iZjBrdWv+oDkrCPyFKwG+eeVuJOWgNVH19XuOalUi5Q5ZnAJsFepIYcihS ISNyNwcFmf+JrKeJynvtUjojbD6r+Nk= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-35-Sna1rfR3OimZuivMW5B8YA-1; Sun, 15 Mar 2020 12:38:59 -0400 X-MC-Unique: Sna1rfR3OimZuivMW5B8YA-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C44D2800D53; Sun, 15 Mar 2020 16:38:56 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-49.ams2.redhat.com [10.36.116.49]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 15D6990795; Sun, 15 Mar 2020 16:38:50 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 94D651138404; Sun, 15 Mar 2020 17:38:48 +0100 (CET) From: Markus Armbruster To: Eric Blake References: <20200312085936.9552-1-vsementsov@virtuozzo.com> <20200312085936.9552-3-vsementsov@virtuozzo.com> <874kuto7hq.fsf@dusky.pond.sub.org> <4a70c6ee-10a2-fdc3-f8df-88c05340398b@virtuozzo.com> <875zf8gt2m.fsf@dusky.pond.sub.org> <7c6f9a91-76cf-242d-8166-0693ec14b24d@virtuozzo.com> <87blozex9v.fsf@dusky.pond.sub.org> <45515658-7dfe-34bd-54a7-0486c176610d@redhat.com> Date: Sun, 15 Mar 2020 17:38:48 +0100 In-Reply-To: <45515658-7dfe-34bd-54a7-0486c176610d@redhat.com> (Eric Blake's message of "Fri, 13 Mar 2020 17:12:18 -0500") Message-ID: <8736a98tev.fsf@dusky.pond.sub.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Subject: Re: [Xen-devel] [PATCH v9 02/10] scripts: Coccinelle script to use ERRP_AUTO_PROPAGATE() X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Vladimir Sementsov-Ogievskiy , qemu-block@nongnu.org, Paul Durrant , Laszlo Ersek , Christian Schoenebeck , qemu-devel@nongnu.org, Michael Roth , Greg Kurz , Stefano Stabellini , Gerd Hoffmann , Stefan Hajnoczi , Anthony Perard , xen-devel@lists.xenproject.org, Max Reitz , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Stefan Berger Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" RXJpYyBCbGFrZSA8ZWJsYWtlQHJlZGhhdC5jb20+IHdyaXRlczoKCj4gT24gMy8xMy8yMCA0OjU0 IFBNLCBNYXJrdXMgQXJtYnJ1c3RlciB3cm90ZToKPgo+Pgo+PiBJIGFwcGVuZCBteSBoYWNrZWQg dXAgdmVyc2lvbiBvZiBhdXRvLXByb3BhZ2F0ZWQtZXJycC5jb2NjaS4gIEl0Cj4+IHByb2R1Y2Vz IHRoZSBzYW1lIHBhdGNoIGFzIHlvdXJzIGZvciB0aGUgY29tcGxldGUgdHJlZS4KPj4KPj4KPj4K Pj4gLy8gVXNlIEVSUlBfQVVUT19QUk9QQUdBVEUgKHNlZSBpbmNsdWRlL3FhcGkvZXJyb3IuaCkK Pj4gLy8KPgo+PiAvLwo+PiAvLyBVc2FnZSBleGFtcGxlOgo+PiAvLyBzcGF0Y2ggLS1zcC1maWxl IHNjcmlwdHMvY29jY2luZWxsZS9hdXRvLXByb3BhZ2F0ZWQtZXJycC5jb2NjaSBcCj4+IC8vICAt LW1hY3JvLWZpbGUgc2NyaXB0cy9jb2NjaS1tYWNyby1maWxlLmggLS1pbi1wbGFjZSBcCj4+IC8v ICAtLW5vLXNob3ctZGlmZiAtLW1heC13aWR0aCA4MCBGSUxFUy4uLgo+PiAvLwo+PiAvLyBOb3Rl OiAtLW1heC13aWR0aCA4MCBpcyBuZWVkZWQgYmVjYXVzZSBjb2NjaW5lbGxlIGRlZmF1bHQgaXMg bGVzcwo+PiAvLyB0aGFuIDgwLCBhbmQgd2l0aG91dCB0aGlzIHBhcmFtZXRlciBjb2NjaW5lbGxl IG1heSByZWluZGVudCBzb21lCj4+IC8vIGxpbmVzIHdoaWNoIGZpdCBpbnRvIDgwIGNoYXJhY3Rl cnMgYnV0IG5vdCB0byBjb2NjaW5lbGxlIGRlZmF1bHQsCj4+IC8vIHdoaWNoIGluIHR1cm4gcHJv ZHVjZXMgZXh0cmEgcGF0Y2ggaHVua3MgZm9yIG5vIHJlYXNvbi4KPgo+IERvIHdlIHJlYWxseSBu ZWVkIHRoaXMgbm90ZT8gIEFuZC9vciBzaG91bGQgd2UgdXBkYXRlIG90aGVyIENvY2NpbmVsbGUK PiBzY3JpcHQgZXhhbXBsZXMgdG8gbWVudGlvbiAtLW1heC13aWR0aD8KCldoYXQgbWFrZXMgdGhp cyBDb2NjaW5lbGxlIHNjcmlwdCBzcGVjaWFsIGlzIGl0cyBydWxlIGNoYWluaW5nIGhhY2suICBX ZQp3YW50IHRvIHRyYW5zZm9ybSBjZXJ0YWluIGZ1bmN0aW9ucyBieSBhcHBseWluZyBhIHNlcXVl bmNlIG9mIHJ1bGVzLiAgV2UKd2FudCB0byBjaGFpbiB0aGVzZSBydWxlcyB0b2dldGhlciwgaS5l LiBoYXZlIHN1YnNlcXVlbnQgcnVsZXMgbWF0Y2gKb25seSB3aGVyZSB0aGUgZmlyc3QgcnVsZSBt YXRjaGVzLiAgV2UgZG8gdGhpcyBieSByZW5hbWluZyB0aGUgRXJyb3IKKiplcnJwIHBhcmFtZXRl ciB0byBfX18gaW4gdGhlIGZpcnN0IHJ1bGUsIGFuZCBiYWNrIHRvIGVycnAgaW4gdGhlIGxhc3QK cnVsZS4gIFRoZSB0d28gcmVuYW1lcyBjYW5jZWwgb3V0LCBidXQgb2YgY291cnNlIENvY2NpbmVs bGUgZG9lc24ndApzcGVjaWFsLWNhc2UgdGhhdCwgYnV0IGRvZXMgd2hhdCBpdCBhbHdheXMgZG9l cyB3aGVuIGl0IHRvdWNoZXMgbG9uZwpsaW5lczogaXQgd3JhcHMgdGhlbS4gIFRoaXMgbGVhZHMg dG8gdW53YW50ZWQgcGF0Y2ggaHVua3Mgd3JhcHBpbmcKZm9ybWFsIHBhcmFtZXRlciBsaXN0cy4K CkluY3JlYXNpbmcgQ29jY2luZWxsZSdzIGxpbmUgd2lkdGggbGltaXQganVzdCBhIGJpdCBnZXRz IHJpZCBvZiBhbG1vc3QKYWxsIG9mIHRoZW0uCgo+PiAvLyBTd2l0Y2ggdW51c3VhbCBFcnJvciAq KiBwYXJhbWV0ZXIgbmFtZXMgdG8gZXJycAo+PiAvLyAodGhpcyBpcyBuZWNlc3NhcnkgdG8gdXNl IEVSUlBfQVVUT19QUk9QQUdBVEUpLgo+PiAvLwo+PiAvLyBEaXNhYmxlIG9wdGlvbmFsX3F1YWxp ZmllciB0byBza2lwIGZ1bmN0aW9ucyB3aXRoCj4+IC8vICJFcnJvciAqY29uc3QgKmVycnAiIHBh cmFtZXRlci4KPj4gLy8KPj4gLy8gU2tpcCBmdW5jdGlvbnMgd2l0aCAiYXNzZXJ0KF9lcnJwICYm ICpfZXJycCkiIHN0YXRlbWVudCwgYmVjYXVzZQo+PiAvLyB0aGF0IHNpZ25hbHMgdW51c3VhbCBz ZW1hbnRpY3MsIGFuZCB0aGUgcGFyYW1ldGVyIG5hbWUgbWF5IHdlbGwKPj4gLy8gc2VydmUgYSBw dXJwb3NlLiAobGlrZSBuYmRfaXRlcl9jaGFubmVsX2Vycm9yKCkpLgo+PiAvLwo+PiAvLyBTa2lw IHV0aWwvZXJyb3IuYyB0byBub3QgdG91Y2gsIGZvciBleGFtcGxlLCBlcnJvcl9wcm9wYWdhdGUo KSBhbmQKPj4gLy8gZXJyb3JfcHJvcGFnYXRlX3ByZXBlbmQoKS4KPj4gQCBkZXBlbmRzIG9uICEo ZmlsZSBpbiAidXRpbC9lcnJvci5jIikgZGlzYWJsZSBvcHRpb25hbF9xdWFsaWZpZXJACj4KPiBU aGUgY29tbWVudHMgYXJlIGRlZmluaXRlbHkgaGVscGZ1bC4KCk9oIGJveSwgdGhleSBhcmUhCgo+ PiBpZGVudGlmaWVyIGZuOwo+PiBpZGVudGlmaWVyIF9lcnJwICE9IGVycnA7Cj4+IEBACj4+Cj4+ ICAgZm4oLi4uLAo+PiAtICAgRXJyb3IgKipfZXJycAo+PiArICAgRXJyb3IgKiplcnJwCj4+ICAg ICAgLC4uLikKPj4gICB7Cj4+ICgKPj4gICAgICAgLi4uIHdoZW4gIT0gYXNzZXJ0KF9lcnJwICYm ICpfZXJycCkKPj4gJgo+PiAgICAgICA8Li4uCj4+IC0gICAgX2VycnAKPj4gKyAgICBlcnJwCj4+ ICAgICAgIC4uLj4KPj4gKQo+PiAgIH0KPj4KPj4gLy8gQWRkIGludm9jYXRpb24gb2YgRVJSUF9B VVRPX1BST1BBR0FURSB0byBlcnJwLWZ1bmN0aW9ucyB3aGVyZQo+PiAvLyBuZWNlc3NhcnkKPj4g Ly8KPj4gLy8gTm90ZSwgdGhhdCB3aXRob3V0ICJ3aGVuIGFueSIgdGhlIGZpbmFsICIuLi4iIGRv ZXMgbm90IG1hY2gKPj4gLy8gc29tZXRoaW5nIG1hdGNoZWQgYnkgcHJldmlvdXMgcGF0dGVybiwg aS5lLiB0aGUgcnVsZSB3aWxsIG5vdCBtYXRjaAo+PiAvLyBkb3VibGUgZXJyb3JfcHJlcGVuZCBp biBjb250cm9sIGZsb3cgbGlrZSBpbgo+PiAvLyB2ZmlvX3NldF9pcnFfc2lnbmFsaW5nKCkuCj4K PiBIb3cgbGlrZWx5IGFyZSB3ZSB0aGF0IHRoaXMgY29tbWVudCBtaWdodCBnbyBzdGFsZSBvdmVy IHRpbWU/ICBCdXQgSSdtCj4gbm90IG9wcG9zZWQgdG8gaXQuCgpNeSBwbGFuIGlzIHRvIGNvbXBs ZXRlIHRoZSBjb252ZXJzaW9uIGluIDUuMS4gIFRoZSBzY3JpcHQgc2hvdWxkIGJlY29tZQp1bmlu dGVyZXN0aW5nIHNvb24gYWZ0ZXIuICBDb21tZW50cyB0aGF0IHJpc2sgZ29pbmcgc3RhbGUgZG9u J3QgYm90aGVyCm1lLgoKPj4gLy8KPj4gLy8gTm90ZSwgImV4aXN0cyIgc2F5cyB0aGF0IHdlIHdh bnQgYXBwbHkgcnVsZSBldmVuIGlmIGl0IG1hdGNoZXMgbm90Cj4+IC8vIG9uIGFsbCBwb3NzaWJs ZSBjb250cm9sIGZsb3dzIChvdGhlcndpc2UsIGl0IHdpbGwgbm90IG1hdGNoCj4KPiBzL21hdGNo ZXMgbm90IG9uL2RvZXMgbm90IG1hdGNoIG9uLwo+Cj4+IC8vIHN0YW5kYXJkIHBhdHRlcm4gd2hl biBlcnJvcl9wcm9wYWdhdGUoKSBjYWxsIGlzIGluIGlmIGJyYW5jaCkuCj4+IEAgZGlzYWJsZSBv cHRpb25hbF9xdWFsaWZpZXIgZXhpc3RzQAo+PiBpZGVudGlmaWVyIGZuLCBsb2NhbF9lcnI7Cj4+ IHN5bWJvbCBlcnJwOwo+PiBAQAo+Pgo+PiAgIGZuKC4uLiwgRXJyb3IgKiplcnJwLCAuLi4pCj4+ ICAgewo+PiArICAgRVJSUF9BVVRPX1BST1BBR0FURSgpOwo+PiAgICAgIC4uLiAgd2hlbiAhPSBF UlJQX0FVVE9fUFJPUEFHQVRFKCk7Cj4+ICgKPj4gKAo+PiAgICAgIGVycm9yX2FwcGVuZF9oaW50 KGVycnAsIC4uLik7Cj4+IHwKPj4gICAgICBlcnJvcl9wcmVwZW5kKGVycnAsIC4uLik7Cj4+IHwK Pj4gICAgICBlcnJvcl92cHJlcGVuZChlcnJwLCAuLi4pOwo+PiApCj4+ICAgICAgLi4uIHdoZW4g YW55Cj4+IHwKPj4gICAgICBFcnJvciAqbG9jYWxfZXJyID0gTlVMTDsKPj4gICAgICAuLi4KPj4g KAo+PiAgICAgIGVycm9yX3Byb3BhZ2F0ZV9wcmVwZW5kKGVycnAsIGxvY2FsX2VyciwgLi4uKTsK Pj4gfAo+PiAgICAgIGVycm9yX3Byb3BhZ2F0ZShlcnJwLCBsb2NhbF9lcnIpOwo+PiApCj4+ICAg ICAgLi4uCj4+ICkKPj4gICB9Cj4+Cj4+Cj4+IC8vIE1hdGNoIGZ1bmN0aW9ucyB3aXRoIHByb3Bh Z2F0aW9uIG9mIGxvY2FsIGVycm9yIHRvIGVycnAuCj4+IC8vIFdlIHdhbnQgdG8gcmVmZXIgdGhl c2UgZnVuY3Rpb25zIGluIHNldmVyYWwgZm9sbG93aW5nIHJ1bGVzLCBidXQgSQo+PiAvLyBkb24n dCBrbm93IGEgcHJvcGVyIHdheSB0byBpbmhlcml0IGEgZnVuY3Rpb24sIG5vdCBqdXN0IGl0cyBu YW1lCj4+IC8vICh0byBub3QgbWF0Y2ggYW5vdGhlciBmdW5jdGlvbnMgd2l0aCBzYW1lIG5hbWUg aW4gZm9sbG93aW5nIHJ1bGVzKS4KPj4gLy8gTm90LXByb3BlciB3YXkgaXMgYXMgZm9sbG93czog cmVuYW1lIGVycnAgcGFyYW1ldGVyIGluIGZ1bmN0aW9ucwo+PiAvLyBoZWFkZXIgYW5kIG1hdGNo IGl0IGluIGZvbGxvd2luZyBydWxlcy4gUmVuYW1lIGl0IGJhY2sgYWZ0ZXIgYWxsCj4+IC8vIHRy YW5zZm9ybWF0aW9ucy4KPj4gLy8KPj4gLy8gVGhlIHNpbXBsZXN0IGNhc2Ugb2YgcHJvcGFnYXRp b24gc2NoZW1lIGlzIHNpbmdsZSBkZWZpbml0aW9uIG9mCj4+IC8vIGxvY2FsX2VyciB3aXRoIGF0 IG1vc3Qgb25lIGVycm9yX3Byb3BhZ2F0ZV9wcmVwZW5kIG9yCj4+IC8vIGVycm9yX3Byb3BhZ2F0 ZSBvbiBlYWNoIGNvbnRyb2wtZmxvdy4gU3RpbGwsIHdlIHdhbnQgdG8gbWF0Y2ggbW9yZQo+PiAv LyBjb21wbGV4IHNjaGVtZXMgdG9vLiBXZSdsbCB3YXJuIHRoZW0gd2l0aCBoZWxwIG9mIGZ1cnRo ZXIgcnVsZXMuCj4KPiBXZSdsbCB3YXJuIGZvciB0aG9zZSB3aXRoIHRoZSBoZWxwIG9mIGZ1cnRo ZXIgcnVsZXMuCj4KPj4gQHJ1bGUxIGRpc2FibGUgb3B0aW9uYWxfcXVhbGlmaWVyIGV4aXN0c0AK Pj4gaWRlbnRpZmllciBmbiwgbG9jYWxfZXJyOwo+PiBzeW1ib2wgZXJycDsKPj4gQEAKPj4KPj4g ICBmbiguLi4sIEVycm9yICoqCj4+IC0gICAgZXJycAo+PiArICAgIF9fX18KPj4gICAgICAsIC4u LikKPj4gICB7Cj4+ICAgICAgIC4uLgo+PiAgICAgICBFcnJvciAqbG9jYWxfZXJyID0gTlVMTDsK Pj4gICAgICAgLi4uCj4+ICgKPj4gICAgICAgZXJyb3JfcHJvcGFnYXRlX3ByZXBlbmQoZXJycCwg bG9jYWxfZXJyLCAuLi4pOwo+PiB8Cj4+ICAgICAgIGVycm9yX3Byb3BhZ2F0ZShlcnJwLCBsb2Nh bF9lcnIpOwo+PiApCj4+ICAgICAgIC4uLgo+PiAgIH0KPj4KPj4KPj4gLy8gV2FybiBzZXZlcmFs IEVycm9yICogZGVmaW5pdGlvbnMuCj4KPiAvLyBXYXJuIHdoZW4gdGhlcmUgYXJlIHNldmVyYWwg RXJyb3IgKiBkZWZpbml0aW9ucy4KPgo+Cj4+IEBjaGVjazEgZGlzYWJsZSBvcHRpb25hbF9xdWFs aWZpZXIgZXhpc3RzQAo+PiBpZGVudGlmaWVyIGZuLCBfZXJycCwgbG9jYWxfZXJyLCBsb2NhbF9l cnIyOwo+PiBwb3NpdGlvbiBwMSwgcDI7Cj4+IEBACj4+Cj4+ICAgZm4oLi4uLCBFcnJvciAqKl9l cnJwLCAuLi4pCj4+ICAgewo+PiAgICAgICAuLi4KPj4gICAgICAgRXJyb3IgKmxvY2FsX2VyciA9 IE5VTEw7QHAxCj4+ICAgICAgIC4uLiB3aGVuIGFueQo+PiAgICAgICBFcnJvciAqbG9jYWxfZXJy MiA9IE5VTEw7QHAyCj4+ICAgICAgIC4uLiB3aGVuIGFueQo+PiAgIH0KPj4KPj4gQCBzY3JpcHQ6 cHl0aG9uIEAKPj4gZm4gPDwgY2hlY2sxLmZuOwo+PiBwMSA8PCBjaGVjazEucDE7Cj4+IHAyIDw8 IGNoZWNrMS5wMjsKPj4gQEAKPj4KPj4gcHJpbnQoJ1dhcm5pbmc6IGZ1bmN0aW9uIHt9IGhhcyBz ZXZlcmFsIGRlZmluaXRpb25zIG9mICcKPj4gICAgICAgICdFcnJvciAqIGxvY2FsIHZhcmlhYmxl OiBhdCB7fTp7fSBhbmQgdGhlbiBhdCB7fTp7fScuZm9ybWF0KAo+PiAgICAgICAgICAgIGZuLCBw MVswXS5maWxlLCBwMVswXS5saW5lLCBwMlswXS5maWxlLCBwMlswXS5saW5lKSkKPj4KPj4gLy8g V2FybiBzZXZlcmFsIHByb3BhZ2F0aW9ucyBpbiBjb250cm9sIGZsb3cuCj4KPiAvLyBXYXJuIHdo ZW4gc2V2ZXJhbCBwcm9wYWdhdGlvbnMgYXJlIGluIHRoZSBjb250cm9sIGZsb3cuCj4KPj4gQGNo ZWNrMiBkaXNhYmxlIG9wdGlvbmFsX3F1YWxpZmllciBleGlzdHNACj4+IGlkZW50aWZpZXIgZm4s IF9lcnJwOwo+PiBwb3NpdGlvbiBwMSwgcDI7Cj4+IEBACj4+Cj4+ICAgZm4oLi4uLCBFcnJvciAq Kl9lcnJwLCAuLi4pCj4+ICAgewo+PiAgICAgICAuLi4KPj4gKAo+PiAgICAgICBlcnJvcl9wcm9w YWdhdGVfcHJlcGVuZChfZXJycCwgLi4uKTtAcDEKPj4gfAo+PiAgICAgICBlcnJvcl9wcm9wYWdh dGUoX2VycnAsIC4uLik7QHAxCj4+ICkKPj4gICAgICAgLi4uCj4+ICgKPj4gICAgICAgZXJyb3Jf cHJvcGFnYXRlX3ByZXBlbmQoX2VycnAsIC4uLik7QHAyCj4+IHwKPj4gICAgICAgZXJyb3JfcHJv cGFnYXRlKF9lcnJwLCAuLi4pO0BwMgo+PiApCj4+ICAgICAgIC4uLiB3aGVuIGFueQo+PiAgIH0K Pj4KPj4gQCBzY3JpcHQ6cHl0aG9uIEAKPj4gZm4gPDwgY2hlY2syLmZuOwo+PiBwMSA8PCBjaGVj azIucDE7Cj4+IHAyIDw8IGNoZWNrMi5wMjsKPj4gQEAKPj4KPj4gcHJpbnQoJ1dhcm5pbmc6IGZ1 bmN0aW9uIHt9IHByb3BhZ2F0ZXMgdG8gZXJycCBzZXZlcmFsIHRpbWVzIGluICcKPj4gICAgICAg ICdvbmUgY29udHJvbCBmbG93OiBhdCB7fTp7fSBhbmQgdGhlbiBhdCB7fTp7fScuZm9ybWF0KAo+ PiAgICAgICAgICAgIGZuLCBwMVswXS5maWxlLCBwMVswXS5saW5lLCBwMlswXS5maWxlLCBwMlsw XS5saW5lKSkKPj4KPj4gLy8gQ29udmVydCBzcGVjaWFsIGNhc2Ugd2l0aCBnb3RvIHNlcGFyYXRl bHkuCj4+IC8vIEkgdHJpZWQgbWVyZ2luZyB0aGlzIGludG8gdGhlIGZvbGxvd2luZyBydWxlIHRo ZSBvYnZpb3VzIHdheSwgYnV0Cj4+IC8vIGl0IG1hZGUgQ29jY2luZWxsZSBoYW5nIG9uIGJsb2Nr LmMKPj4gLy8KPj4gLy8gTm90ZSBpbnRlcmVzdGluZyB0aGluZzogaWYgd2UgZG9uJ3QgZG8gaXQg aGVyZSwgYW5kIHRyeSB0byBmaXh1cAo+PiAvLyAib3V0OiB9IiB0aGluZ3MgbGF0ZXIgYWZ0ZXIg YWxsIHRyYW5zZm9ybWF0aW9ucyAodGhlIHJ1bGUgd2lsbCBiZQo+PiAvLyB0aGUgc2FtZSwganVz dCB3aXRob3V0IGVycm9yX3Byb3BhZ2F0ZSgpIGNhbGwpLCBjb2NjaW5lbGxlIGZhaWxzIHRvCj4+ IC8vIG1hdGNoIHRoaXMgIm91dDogfSIuCj4+IEAgZGlzYWJsZSBvcHRpb25hbF9xdWFsaWZpZXJA Cj4+IGlkZW50aWZpZXIgZm4sIHJ1bGUxLmxvY2FsX2Vyciwgb3V0Owo+PiBzeW1ib2wgZXJycDsK Pj4gQEAKPj4KPj4gICBmbiguLi4sIEVycm9yICoqIF9fX18sIC4uLikKPj4gICB7Cj4+ICAgICAg IDwuLi4KPj4gLSAgICBnb3RvIG91dDsKPj4gKyAgICByZXR1cm47Cj4+ICAgICAgIC4uLj4KPj4g LSBvdXQ6Cj4+IC0gICAgZXJyb3JfcHJvcGFnYXRlKGVycnAsIGxvY2FsX2Vycik7Cj4+ICAgfQo+ Pgo+PiAvLyBDb252ZXJ0IG1vc3Qgb2YgbG9jYWxfZXJyIHJlbGF0ZWQgc3R1ZmYuCj4+IC8vCj4+ IC8vIE5vdGUsIHRoYXQgd2UgdXBkYXRlIGV2ZXJ5dGhpbmcgcmVsYXRlZCB0byBtYXRjaGVkIGJ5 IHJ1bGUxCj4KPiBlaXRoZXIgJ3JlbGF0ZWQgdG8nIG9yICdtYXRjaGVkIGJ5JywgYnV0IG5vdCBi b3RoLgo+Cj4+IC8vIGZ1bmN0aW9uIG5hbWUgYW5kIGxvY2FsX2VyciBuYW1lLiBXZSBtYXkgbWF0 Y2ggc29tZXRoaW5nIG5vdAo+PiAvLyByZWxhdGVkIHRvIHRoZSBwYXR0ZXJuIG1hdGNoZWQgYnkg cnVsZTEuIEZvciBleGFtcGxlLCBsb2NhbF9lcnIgbWF5Cj4+IC8vIGJlIGRlZmluZWQgd2l0aCB0 aGUgc2FtZSBuYW1lIGluIGRpZmZlcmVudCBibG9ja3MgaW5zaWRlIG9uZQo+PiAvLyBmdW5jdGlv biwgYW5kIGluIG9uZSBibG9jayBmb2xsb3cgdGhlIHByb3BhZ2F0aW9uIHBhdHRlcm4gYW5kIGlu Cj4+IC8vIG90aGVyIGJsb2NrIGRvZXNuJ3QuIE9yIHdlIG1heSBoYXZlIHNldmVyYWwgZnVuY3Rp b25zIHdpdGggdGhlIHNhbWUKPj4gLy8gbmFtZSAoZm9yIGRpZmZlcmVudCBjb25maWd1cmF0aW9u cykuCj4+IC8vCj4+IC8vIE5vdGUgYWxzbyB0aGF0IGVycnAtY2xlYW5pbmcgZnVuY3Rpb25zCj4+ IC8vICAgZXJyb3JfZnJlZV9lcnJwCj4+IC8vICAgZXJyb3JfcmVwb3J0X2VycnAKPj4gLy8gICBl cnJvcl9yZXBvcnRmX2VycnAKPj4gLy8gICB3YXJuX3JlcG9ydF9lcnJwCj4+IC8vICAgd2Fybl9y ZXBvcnRmX2VycnAKPj4gLy8gYXJlIG5vdCB5ZXQgaW1wbGVtZW50ZWQuIFRoZXkgbXVzdCBjYWxs IGNvcnJlc3BvbmRpbmcgRXJyb3IqIC0KPj4gLy8gZnJlZWluZyBmdW5jdGlvbiBhbmQgdGhlbiBz ZXQgKmVycnAgdG8gTlVMTCwgdG8gYXZvaWQgZnVydGhlcgo+PiAvLyBwcm9wYWdhdGlvbiB0byBv cmlnaW5hbCBlcnJwIChjb25zaWRlciBFUlJQX0FVVE9fUFJPUEFHQVRFIGluIHVzZSkuCj4KPiBE byB3ZSBuZWVkIHRoaXMgcGFydCBvZiB0aGUgcGF0Y2ggaWYgd2UgYXJlbid0IHVzaW5nIGl0PyAg T3IgY2FuIGl0IGJlCj4gYWRkZWQgaW5jcmVtZW50YWxseSBsYXRlciB3aGVuIHdlIGFjdHVhbGx5 IGRvIGhhdmUgdGhvc2UgZnVuY3Rpb25zCj4gYWRkZWQ/CgpXaGVuIEkgYXNrZWQgYSBzaW1pbGFy IHF1ZXN0aW9uLCBWbGFkaW1pciBwb2ludGVkIG91dCB0aGF0IHRyYW5zZm9ybWluZwp0aGVzZSBm dW5jdGlvbnMgaXMgcmVxdWlyZWQgZm9yIGNvcnJlY3RuZXNzLgoKSWYgd2Uga2VlcCB0aGUgcnVs ZSBhbmQgYWRkIHRoZSBmdW5jdGlvbnMgb25seSB3aGVuIGl0J3MgdXNlZCwgdGhlCmNvbXBpbGVy IHdpbGwgdGVsbCB1cyB3aGVuIGl0J3MgdXNlZC4KCklmIHdlIGFkZCB0aGUgcnVsZSBvbmx5IHdo ZW4gd2UgYmVsaWV2ZSBpdCdzIHVzZWQsIHdlIHJpc2sgc2lsZW50CmluY29ycmVjdCB0cmFuc2Zv cm1hdGlvbnMuCgo+PiAvLyBGb3IgZXhhbXBsZSwgZXJyb3JfZnJlZV9lcnJwIG1heSBsb29rIGxp a2UgdGhpczoKPj4gLy8KPj4gLy8gICAgdm9pZCBlcnJvcl9mcmVlX2VycnAoRXJyb3IgKiplcnJw KQo+PiAvLyAgICB7Cj4+IC8vICAgICAgICBlcnJvcl9mcmVlKCplcnJwKTsKPj4gLy8gICAgICAg ICplcnJwID0gTlVMTDsKPj4gLy8gICAgfQo+PiBAIGRpc2FibGUgb3B0aW9uYWxfcXVhbGlmaWVy IGV4aXN0c0AKPj4gaWRlbnRpZmllciBmbiwgcnVsZTEubG9jYWxfZXJyOwo+PiBleHByZXNzaW9u IGxpc3QgYXJnczsKPj4gc3ltYm9sIGVycnA7Cj4+IEBACj4+Cj4+ICAgZm4oLi4uLCBFcnJvciAq KiBfX19fLCAuLi4pCj4+ICAgewo+PiAgICAgICA8Li4uCj4+ICgKPj4gLSAgICBFcnJvciAqbG9j YWxfZXJyID0gTlVMTDsKPj4gfAo+Pgo+PiAvLyBDb252ZXJ0IGVycm9yIGNsZWFyaW5nIGZ1bmN0 aW9ucwo+PiAoCj4+IC0gICAgZXJyb3JfZnJlZShsb2NhbF9lcnIpOwo+PiArICAgIGVycm9yX2Zy ZWVfZXJycChlcnJwKTsKPj4gfAo+PiAtICAgIGVycm9yX3JlcG9ydF9lcnIobG9jYWxfZXJyKTsK Pj4gKyAgICBlcnJvcl9yZXBvcnRfZXJycChlcnJwKTsKPj4gfAo+PiAtICAgIGVycm9yX3JlcG9y dGZfZXJyKGxvY2FsX2VyciwgYXJncyk7Cj4+ICsgICAgZXJyb3JfcmVwb3J0Zl9lcnJwKGVycnAs IGFyZ3MpOwo+PiB8Cj4+IC0gICAgd2Fybl9yZXBvcnRfZXJyKGxvY2FsX2Vycik7Cj4+ICsgICAg d2Fybl9yZXBvcnRfZXJycChlcnJwKTsKPj4gfAo+PiAtICAgIHdhcm5fcmVwb3J0Zl9lcnIobG9j YWxfZXJyLCBhcmdzKTsKPj4gKyAgICB3YXJuX3JlcG9ydGZfZXJycChlcnJwLCBhcmdzKTsKPj4g KQo+PiA/LSAgICBsb2NhbF9lcnIgPSBOVUxMOwo+Pgo+PiB8Cj4+IC0gICAgZXJyb3JfcHJvcGFn YXRlX3ByZXBlbmQoZXJycCwgbG9jYWxfZXJyLCBhcmdzKTsKPj4gKyAgICBlcnJvcl9wcmVwZW5k KGVycnAsIGFyZ3MpOwo+PiB8Cj4+IC0gICAgZXJyb3JfcHJvcGFnYXRlKGVycnAsIGxvY2FsX2Vy cik7Cj4+IHwKPj4gLSAgICAmbG9jYWxfZXJyCj4+ICsgICAgZXJycAo+PiApCj4+ICAgICAgIC4u Lj4KPj4gICB9Cj4+Cj4+IC8vIENvbnZlcnQgcmVtYWluaW5nIGxvY2FsX2VyciB1c2FnZS4gRm9y IGV4YW1wbGUsIGRpZmZlcmVudCBraW5kcyBvZgo+PiAvLyBlcnJvciBjaGVja2luZyBpbiBpZiBj b25kaXRpb25hbHMuIFdlIGNhbid0IG1lcmdlIHRoaXMgaW50bwo+PiAvLyBwcmV2aW91cyBodW5r LCBhcyB0aGlzIGNvbmZsaWN0cyB3aXRoIG90aGVyIHN1YnN0aXR1dGlvbnMgaW4gaXQgKGF0Cj4+ IC8vIGxlYXN0IHdpdGggIi0gbG9jYWxfZXJyID0gTlVMTCIpLgo+PiBAIGRpc2FibGUgb3B0aW9u YWxfcXVhbGlmaWVyQAo+PiBpZGVudGlmaWVyIGZuLCBydWxlMS5sb2NhbF9lcnI7Cj4+IHN5bWJv bCBlcnJwOwo+PiBAQAo+Pgo+PiAgIGZuKC4uLiwgRXJyb3IgKiogX19fXywgLi4uKQo+PiAgIHsK Pj4gICAgICAgPC4uLgo+PiAtICAgIGxvY2FsX2Vycgo+PiArICAgICplcnJwCj4+ICAgICAgIC4u Lj4KPj4gICB9Cj4+Cj4+IC8vIEFsd2F5cyB1c2UgdGhlIHNhbWUgcGF0dGVybiBmb3IgY2hlY2tp bmcgZXJyb3IKPj4gQCBkaXNhYmxlIG9wdGlvbmFsX3F1YWxpZmllckAKPj4gaWRlbnRpZmllciBm bjsKPj4gc3ltYm9sIGVycnA7Cj4+IEBACj4+Cj4+ICAgZm4oLi4uLCBFcnJvciAqKiBfX19fLCAu Li4pCj4+ICAgewo+PiAgICAgICA8Li4uCj4+IC0gICAgKmVycnAgIT0gTlVMTAo+PiArICAgICpl cnJwCj4+ICAgICAgIC4uLj4KPj4gICB9Cj4+Cj4+IC8vIFJldmVydCB0ZW1wb3JhcnkgX19fIGlk ZW50aWZpZXIuCj4+IEAgZGlzYWJsZSBvcHRpb25hbF9xdWFsaWZpZXJACj4+IGlkZW50aWZpZXIg Zm47Cj4+IEBACj4+Cj4+ICAgZm4oLi4uLCBFcnJvciAqKgo+PiAtICAgX19fXwo+PiArICAgZXJy cAo+PiAgICAgICwgLi4uKQo+PiAgIHsKPj4gICAgICAgLi4uCj4+ICAgfQo+Pgo+Pgo+Cj4gVWx0 aW1hdGVseSwgdGhlIHByb29mIGlzIGluIHRoZSBwdWRkaW5nIC0gaWYgd2UgYXJlIGhhcHB5IHdp dGggdGhlCj4gY29udmVyc2lvbiBhbmQgdGhlIHdhcm5pbmdzIHByb2R1Y2VkIGJ5IHRoaXMgc2Ny aXB0LCBhbmQgdGhlIGFtb3VudCBvZgo+IG1hbnVhbCB0b3VjaHVwIHRvIGFkZHJlc3MgdGhvc2Ug d2FybmluZ3MsIHRoZW4gSSdtIGhhcHB5IHRvIGFjY2VwdCB0aGUKPiBzY3JpcHQgZXZlbiBpZiBJ IGRpZG4ndCBmdWxseSBjaGVjayB3aGF0IGl0IGRvZXMgKGhlcmUsIEknbSB0cnVzdGluZwo+IHdo YXQgVmxhZGltaXIgYW5kIE1hcmt1cyBoYXZlIGJlZW4gZG9pbmcgaW4gdGhlaXIgYmFjay1hbmQt Zm9ydGgKPiByZWZpbmVtZW50cyBvZiB0aGUgc2NyaXB0KS4KCkkgZGVjaWRlZCB0aGF0IHRoZSBw YXRjaGVzIHByb2R1Y2VkIGJ5IHRoaXMgc2NyaXB0IGFyZSB0b28gbGFyZ2UgdG8gYmUKcmV2aWV3 ZWQgYnkgYSBzaW5nbGUgcGVyc29uOiB0aGUgbW9ub3RvbnkgYmxpbmRzIHlvdSBhIGZldyBwZXJj ZW50IGluLgpJbnN0ZWFkLCBJIHNwZW50IG15IHRpbWUgb24gdW5kZXJzdGFuZGluZyB0aGUgc2Ny aXB0LCBidWlsZGluZyB0cnVzdCBpbgppdHMgd29ya2luZ3MsIGFuZCBzZWFyY2hpbmcgaXRzIG91 dHB1dCBmb3IgdW51c3VhbCBwYXR0ZXJucy4KClBhdGNoZXMgdG8gc3Vic3lzdGVtcyBhcmUgaG9w ZWZ1bGx5IHNtYWxsIGVub3VnaCBmb3IgcmV2aWV3IGJ5IHN1YnN5c3RlbQpleHBlcnRzLgoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBt YWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMu eGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4D55DC10DCE for ; Sun, 15 Mar 2020 16:42:23 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 07FC9205ED for ; Sun, 15 Mar 2020 16:42:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="b+kse8KE" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 07FC9205ED Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:56000 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jDWLF-000546-W1 for qemu-devel@archiver.kernel.org; Sun, 15 Mar 2020 12:42:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47411) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jDWI5-0004PK-1S for qemu-devel@nongnu.org; Sun, 15 Mar 2020 12:39:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jDWI2-0002cC-KA for qemu-devel@nongnu.org; Sun, 15 Mar 2020 12:39:04 -0400 Received: from us-smtp-1.mimecast.com ([207.211.31.81]:35482 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jDWI2-0002V3-AQ for qemu-devel@nongnu.org; Sun, 15 Mar 2020 12:39:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1584290340; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/9R9iI6p6O0yC345l0HsKvgBLnxQ/LFQLK9fpGkLq/g=; b=b+kse8KEzNo97CF3j6TP5XRUJ1QVmKbCBYaaeur3oEayx48QqxY0zhn5Z1/p4kBwXoMhYO cm0fEMXk5Wx99NSzcZxglz8B+/AB/THazdxkgfp5YqMLsJyagajEv6aLkdK5bOzpchpNWX +UHs2f2LW2WqOdT2jz97yEqyTNdcAhc= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-35-Sna1rfR3OimZuivMW5B8YA-1; Sun, 15 Mar 2020 12:38:59 -0400 X-MC-Unique: Sna1rfR3OimZuivMW5B8YA-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C44D2800D53; Sun, 15 Mar 2020 16:38:56 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-49.ams2.redhat.com [10.36.116.49]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 15D6990795; Sun, 15 Mar 2020 16:38:50 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 94D651138404; Sun, 15 Mar 2020 17:38:48 +0100 (CET) From: Markus Armbruster To: Eric Blake Subject: Re: [PATCH v9 02/10] scripts: Coccinelle script to use ERRP_AUTO_PROPAGATE() References: <20200312085936.9552-1-vsementsov@virtuozzo.com> <20200312085936.9552-3-vsementsov@virtuozzo.com> <874kuto7hq.fsf@dusky.pond.sub.org> <4a70c6ee-10a2-fdc3-f8df-88c05340398b@virtuozzo.com> <875zf8gt2m.fsf@dusky.pond.sub.org> <7c6f9a91-76cf-242d-8166-0693ec14b24d@virtuozzo.com> <87blozex9v.fsf@dusky.pond.sub.org> <45515658-7dfe-34bd-54a7-0486c176610d@redhat.com> Date: Sun, 15 Mar 2020 17:38:48 +0100 In-Reply-To: <45515658-7dfe-34bd-54a7-0486c176610d@redhat.com> (Eric Blake's message of "Fri, 13 Mar 2020 17:12:18 -0500") Message-ID: <8736a98tev.fsf@dusky.pond.sub.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 207.211.31.81 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Vladimir Sementsov-Ogievskiy , qemu-block@nongnu.org, Paul Durrant , Laszlo Ersek , Christian Schoenebeck , qemu-devel@nongnu.org, Michael Roth , Greg Kurz , Stefano Stabellini , Gerd Hoffmann , Stefan Hajnoczi , Anthony Perard , xen-devel@lists.xenproject.org, Max Reitz , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Stefan Berger Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Eric Blake writes: > On 3/13/20 4:54 PM, Markus Armbruster wrote: > >> >> I append my hacked up version of auto-propagated-errp.cocci. It >> produces the same patch as yours for the complete tree. >> >> >> >> // Use ERRP_AUTO_PROPAGATE (see include/qapi/error.h) >> // > >> // >> // Usage example: >> // spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ >> // --macro-file scripts/cocci-macro-file.h --in-place \ >> // --no-show-diff --max-width 80 FILES... >> // >> // Note: --max-width 80 is needed because coccinelle default is less >> // than 80, and without this parameter coccinelle may reindent some >> // lines which fit into 80 characters but not to coccinelle default, >> // which in turn produces extra patch hunks for no reason. > > Do we really need this note? And/or should we update other Coccinelle > script examples to mention --max-width? What makes this Coccinelle script special is its rule chaining hack. We want to transform certain functions by applying a sequence of rules. We want to chain these rules together, i.e. have subsequent rules match only where the first rule matches. We do this by renaming the Error **errp parameter to ___ in the first rule, and back to errp in the last rule. The two renames cancel out, but of course Coccinelle doesn't special-case that, but does what it always does when it touches long lines: it wraps them. This leads to unwanted patch hunks wrapping formal parameter lists. Increasing Coccinelle's line width limit just a bit gets rid of almost all of them. >> // Switch unusual Error ** parameter names to errp >> // (this is necessary to use ERRP_AUTO_PROPAGATE). >> // >> // Disable optional_qualifier to skip functions with >> // "Error *const *errp" parameter. >> // >> // Skip functions with "assert(_errp && *_errp)" statement, because >> // that signals unusual semantics, and the parameter name may well >> // serve a purpose. (like nbd_iter_channel_error()). >> // >> // Skip util/error.c to not touch, for example, error_propagate() and >> // error_propagate_prepend(). >> @ depends on !(file in "util/error.c") disable optional_qualifier@ > > The comments are definitely helpful. Oh boy, they are! >> identifier fn; >> identifier _errp !=3D errp; >> @@ >> >> fn(..., >> - Error **_errp >> + Error **errp >> ,...) >> { >> ( >> ... when !=3D assert(_errp && *_errp) >> & >> <... >> - _errp >> + errp >> ...> >> ) >> } >> >> // Add invocation of ERRP_AUTO_PROPAGATE to errp-functions where >> // necessary >> // >> // Note, that without "when any" the final "..." does not mach >> // something matched by previous pattern, i.e. the rule will not match >> // double error_prepend in control flow like in >> // vfio_set_irq_signaling(). > > How likely are we that this comment might go stale over time? But I'm > not opposed to it. My plan is to complete the conversion in 5.1. The script should become uninteresting soon after. Comments that risk going stale don't bother me. >> // >> // Note, "exists" says that we want apply rule even if it matches not >> // on all possible control flows (otherwise, it will not match > > s/matches not on/does not match on/ > >> // standard pattern when error_propagate() call is in if branch). >> @ disable optional_qualifier exists@ >> identifier fn, local_err; >> symbol errp; >> @@ >> >> fn(..., Error **errp, ...) >> { >> + ERRP_AUTO_PROPAGATE(); >> ... when !=3D ERRP_AUTO_PROPAGATE(); >> ( >> ( >> error_append_hint(errp, ...); >> | >> error_prepend(errp, ...); >> | >> error_vprepend(errp, ...); >> ) >> ... when any >> | >> Error *local_err =3D NULL; >> ... >> ( >> error_propagate_prepend(errp, local_err, ...); >> | >> error_propagate(errp, local_err); >> ) >> ... >> ) >> } >> >> >> // Match functions with propagation of local error to errp. >> // We want to refer these functions in several following rules, but I >> // don't know a proper way to inherit a function, not just its name >> // (to not match another functions with same name in following rules). >> // Not-proper way is as follows: rename errp parameter in functions >> // header and match it in following rules. Rename it back after all >> // transformations. >> // >> // The simplest case of propagation scheme is single definition of >> // local_err with at most one error_propagate_prepend or >> // error_propagate on each control-flow. Still, we want to match more >> // complex schemes too. We'll warn them with help of further rules. > > We'll warn for those with the help of further rules. > >> @rule1 disable optional_qualifier exists@ >> identifier fn, local_err; >> symbol errp; >> @@ >> >> fn(..., Error ** >> - errp >> + ____ >> , ...) >> { >> ... >> Error *local_err =3D NULL; >> ... >> ( >> error_propagate_prepend(errp, local_err, ...); >> | >> error_propagate(errp, local_err); >> ) >> ... >> } >> >> >> // Warn several Error * definitions. > > // Warn when there are several Error * definitions. > > >> @check1 disable optional_qualifier exists@ >> identifier fn, _errp, local_err, local_err2; >> position p1, p2; >> @@ >> >> fn(..., Error **_errp, ...) >> { >> ... >> Error *local_err =3D NULL;@p1 >> ... when any >> Error *local_err2 =3D NULL;@p2 >> ... when any >> } >> >> @ script:python @ >> fn << check1.fn; >> p1 << check1.p1; >> p2 << check1.p2; >> @@ >> >> print('Warning: function {} has several definitions of ' >> 'Error * local variable: at {}:{} and then at {}:{}'.format( >> fn, p1[0].file, p1[0].line, p2[0].file, p2[0].line)) >> >> // Warn several propagations in control flow. > > // Warn when several propagations are in the control flow. > >> @check2 disable optional_qualifier exists@ >> identifier fn, _errp; >> position p1, p2; >> @@ >> >> fn(..., Error **_errp, ...) >> { >> ... >> ( >> error_propagate_prepend(_errp, ...);@p1 >> | >> error_propagate(_errp, ...);@p1 >> ) >> ... >> ( >> error_propagate_prepend(_errp, ...);@p2 >> | >> error_propagate(_errp, ...);@p2 >> ) >> ... when any >> } >> >> @ script:python @ >> fn << check2.fn; >> p1 << check2.p1; >> p2 << check2.p2; >> @@ >> >> print('Warning: function {} propagates to errp several times in ' >> 'one control flow: at {}:{} and then at {}:{}'.format( >> fn, p1[0].file, p1[0].line, p2[0].file, p2[0].line)) >> >> // Convert special case with goto separately. >> // I tried merging this into the following rule the obvious way, but >> // it made Coccinelle hang on block.c >> // >> // Note interesting thing: if we don't do it here, and try to fixup >> // "out: }" things later after all transformations (the rule will be >> // the same, just without error_propagate() call), coccinelle fails to >> // match this "out: }". >> @ disable optional_qualifier@ >> identifier fn, rule1.local_err, out; >> symbol errp; >> @@ >> >> fn(..., Error ** ____, ...) >> { >> <... >> - goto out; >> + return; >> ...> >> - out: >> - error_propagate(errp, local_err); >> } >> >> // Convert most of local_err related stuff. >> // >> // Note, that we update everything related to matched by rule1 > > either 'related to' or 'matched by', but not both. > >> // function name and local_err name. We may match something not >> // related to the pattern matched by rule1. For example, local_err may >> // be defined with the same name in different blocks inside one >> // function, and in one block follow the propagation pattern and in >> // other block doesn't. Or we may have several functions with the same >> // name (for different configurations). >> // >> // Note also that errp-cleaning functions >> // error_free_errp >> // error_report_errp >> // error_reportf_errp >> // warn_report_errp >> // warn_reportf_errp >> // are not yet implemented. They must call corresponding Error* - >> // freeing function and then set *errp to NULL, to avoid further >> // propagation to original errp (consider ERRP_AUTO_PROPAGATE in use). > > Do we need this part of the patch if we aren't using it? Or can it be > added incrementally later when we actually do have those functions > added? When I asked a similar question, Vladimir pointed out that transforming these functions is required for correctness. If we keep the rule and add the functions only when it's used, the compiler will tell us when it's used. If we add the rule only when we believe it's used, we risk silent incorrect transformations. >> // For example, error_free_errp may look like this: >> // >> // void error_free_errp(Error **errp) >> // { >> // error_free(*errp); >> // *errp =3D NULL; >> // } >> @ disable optional_qualifier exists@ >> identifier fn, rule1.local_err; >> expression list args; >> symbol errp; >> @@ >> >> fn(..., Error ** ____, ...) >> { >> <... >> ( >> - Error *local_err =3D NULL; >> | >> >> // Convert error clearing functions >> ( >> - error_free(local_err); >> + error_free_errp(errp); >> | >> - error_report_err(local_err); >> + error_report_errp(errp); >> | >> - error_reportf_err(local_err, args); >> + error_reportf_errp(errp, args); >> | >> - warn_report_err(local_err); >> + warn_report_errp(errp); >> | >> - warn_reportf_err(local_err, args); >> + warn_reportf_errp(errp, args); >> ) >> ?- local_err =3D NULL; >> >> | >> - error_propagate_prepend(errp, local_err, args); >> + error_prepend(errp, args); >> | >> - error_propagate(errp, local_err); >> | >> - &local_err >> + errp >> ) >> ...> >> } >> >> // Convert remaining local_err usage. For example, different kinds of >> // error checking in if conditionals. We can't merge this into >> // previous hunk, as this conflicts with other substitutions in it (at >> // least with "- local_err =3D NULL"). >> @ disable optional_qualifier@ >> identifier fn, rule1.local_err; >> symbol errp; >> @@ >> >> fn(..., Error ** ____, ...) >> { >> <... >> - local_err >> + *errp >> ...> >> } >> >> // Always use the same pattern for checking error >> @ disable optional_qualifier@ >> identifier fn; >> symbol errp; >> @@ >> >> fn(..., Error ** ____, ...) >> { >> <... >> - *errp !=3D NULL >> + *errp >> ...> >> } >> >> // Revert temporary ___ identifier. >> @ disable optional_qualifier@ >> identifier fn; >> @@ >> >> fn(..., Error ** >> - ____ >> + errp >> , ...) >> { >> ... >> } >> >> > > Ultimately, the proof is in the pudding - if we are happy with the > conversion and the warnings produced by this script, and the amount of > manual touchup to address those warnings, then I'm happy to accept the > script even if I didn't fully check what it does (here, I'm trusting > what Vladimir and Markus have been doing in their back-and-forth > refinements of the script). I decided that the patches produced by this script are too large to be reviewed by a single person: the monotony blinds you a few percent in. Instead, I spent my time on understanding the script, building trust in its workings, and searching its output for unusual patterns. Patches to subsystems are hopefully small enough for review by subsystem experts.