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=-8.2 required=3.0 tests=DKIMWL_WL_HIGH,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham 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 58CCAC282C0 for ; Wed, 23 Jan 2019 23:45:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 03DF9218A1 for ; Wed, 23 Jan 2019 23:45:18 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=fb.com header.i=@fb.com header.b="S4yI969o"; dkim=pass (1024-bit key) header.d=fb.onmicrosoft.com header.i=@fb.onmicrosoft.com header.b="jSR6Cb1a" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726313AbfAWXpQ (ORCPT ); Wed, 23 Jan 2019 18:45:16 -0500 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:35708 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726183AbfAWXpQ (ORCPT ); Wed, 23 Jan 2019 18:45:16 -0500 Received: from pps.filterd (m0044010.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x0NNikLW031690; Wed, 23 Jan 2019 15:44:46 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=facebook; bh=stcn5E67pKjiWnygtrXyg6tRS81avKSI5I47sFgvMnk=; b=S4yI969ownkHVmtSLKn4jgk6GXpA3a+an5hiPvvD/h0toNeqO4LTjdmkOUV769ZtouIy S7AFDE8SV8h4HEiXd1imtOPXd7DC+2E+SFjp0H0KgZBrEwdV66c5kZDp67WGwL+QAa7V /KucrqejRhxFe7AMmS0lbkFj4JH8Aec+0jc= Received: from mail.thefacebook.com ([199.201.64.23]) by mx0a-00082601.pphosted.com with ESMTP id 2q71xtg1g3-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Wed, 23 Jan 2019 15:44:46 -0800 Received: from prn-hub03.TheFacebook.com (2620:10d:c081:35::127) by prn-hub04.TheFacebook.com (2620:10d:c081:35::128) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.1.1531.3; Wed, 23 Jan 2019 15:44:46 -0800 Received: from NAM05-CO1-obe.outbound.protection.outlook.com (192.168.54.28) by o365-in.thefacebook.com (192.168.16.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.1.1531.3 via Frontend Transport; Wed, 23 Jan 2019 15:44:45 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.onmicrosoft.com; s=selector1-fb-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=stcn5E67pKjiWnygtrXyg6tRS81avKSI5I47sFgvMnk=; b=jSR6Cb1a9g1AjQ74HIyCwJMzSBgkKm43IWasm1pZ33u+6FZy8KBzUdSXd0UZceeSZhTmVQW/ZCljhRMaorB3ZZQ89EeUcFYbwLopIuoSvccPlL1UHqxrwf20yUNLAJNAwnUm2UVOk3bQ0tFlVCebVXfXurv26BWU3vkKQLb37rM= Received: from CY4PR15MB1366.namprd15.prod.outlook.com (10.172.159.22) by CY4PR15MB1639.namprd15.prod.outlook.com (10.175.120.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1537.29; Wed, 23 Jan 2019 23:44:44 +0000 Received: from CY4PR15MB1366.namprd15.prod.outlook.com ([fe80::590:36f9:2618:6e4b]) by CY4PR15MB1366.namprd15.prod.outlook.com ([fe80::590:36f9:2618:6e4b%12]) with mapi id 15.20.1537.031; Wed, 23 Jan 2019 23:44:44 +0000 From: Andrey Ignatov To: Quentin Monnet CC: Alexei Starovoitov , Daniel Borkmann , "netdev@vger.kernel.org" , "oss-drivers@netronome.com" , "Arnaldo Carvalho de Melo" , Jesper Dangaard Brouer , "Stanislav Fomichev" Subject: Re: [PATCH bpf-next v5 4/9] tools: bpftool: add probes for eBPF program types Thread-Topic: [PATCH bpf-next v5 4/9] tools: bpftool: add probes for eBPF program types Thread-Index: AQHUrnldmz5PeQhlSEGnTZZ9Y5L4/KW9jjmA Date: Wed, 23 Jan 2019 23:44:44 +0000 Message-ID: <20190123234429.GA8297@rdna-mbp.dhcp.thefacebook.com> References: <20190117152758.14883-1-quentin.monnet@netronome.com> <20190117152758.14883-5-quentin.monnet@netronome.com> In-Reply-To: <20190117152758.14883-5-quentin.monnet@netronome.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: MW2PR2101CA0029.namprd21.prod.outlook.com (2603:10b6:302:1::42) To CY4PR15MB1366.namprd15.prod.outlook.com (2603:10b6:903:fa::22) x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [2620:10d:c090:200::6:8f42] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;CY4PR15MB1639;20:MxzdHyXiUomCk8q/82r9Nq6oX+HNA7quYAA+wmh/XdgJBxtA7A9DP5AFCCtDaoN/7+6VRG0ZJxGBWNP4J5CQFH/3h4UxTx0x6H3BgkmtaI8SoSeWhotRLnWTOIN9lmPn6E+N60orIo4NiC9jyFPx8eDAEdQM86gMPPlIikfM1Lk= x-ms-office365-filtering-correlation-id: 00634519-b21a-4a7c-b2dd-08d6818cc069 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(2017052603328)(7153060)(7193020);SRVR:CY4PR15MB1639; x-ms-traffictypediagnostic: CY4PR15MB1639: x-microsoft-antispam-prvs: x-forefront-prvs: 0926B0E013 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(366004)(376002)(396003)(39860400002)(136003)(346002)(189003)(199004)(6116002)(186003)(446003)(71190400001)(11346002)(71200400001)(86362001)(46003)(6512007)(6916009)(9686003)(229853002)(6436002)(1076003)(39060400002)(76176011)(25786009)(486006)(6486002)(6246003)(33896004)(476003)(53936002)(68736007)(52116002)(4326008)(6506007)(106356001)(386003)(54906003)(81156014)(81166006)(97736004)(105586002)(8936002)(102836004)(14444005)(5024004)(7736002)(14454004)(2906002)(256004)(478600001)(99286004)(305945005)(316002)(33656002)(8676002);DIR:OUT;SFP:1102;SCL:1;SRVR:CY4PR15MB1639;H:CY4PR15MB1366.namprd15.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: fb.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: pj/jpdB0jq3GoyTAwiWajZ0dUMKUKuRoSm4OcAp/9YyeE3xdfH4AgrUCAyMgCQ6+l2lFGYp0vZzZoOHWnFMQQfAf7eNlKaegskNa9Mw+rjH1XPfRJPFQg0ZFRBAhNZFacXRFTaA5s3Ch5K2C2/lpQG4+uOZ0y4cbydACw0DUJBDw85bvHPwilyWF56RytLPhVrBgaALyNjfEW1S42DeIlbCP2roCQrntn9DIolCel9MHjYtf9ABMhGI7o44HasHPBk6FML++IbzlHQVjawAzfdeuPZS1drtB0QaSsreWbhBw567wvbmOjlFmxosw6BsI5LM4dSsdV7QgwZej5Rj1Q8QPex62wZ4nQcfFZ7lljxkSfD9qvWCo1spaTP1MIgwd4EsT3/uNJIZlZuDsV1Zty5geDKs8vdZr+HRDVkEBLuU= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 00634519-b21a-4a7c-b2dd-08d6818cc069 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Jan 2019 23:44:44.1990 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR15MB1639 X-OriginatorOrg: fb.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-01-23_12:,, signatures=0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org UXVlbnRpbiBNb25uZXQgPHF1ZW50aW4ubW9ubmV0QG5ldHJvbm9tZS5jb20+IFtUaHUsIDIwMTkt MDEtMTcgMDc6MjggLTA4MDBdOg0KPiBJbnRyb2R1Y2UgcHJvYmVzIGZvciBzdXBwb3J0ZWQgQlBG IHByb2dyYW0gdHlwZXMgaW4gbGliYnBmLCBhbmQgY2FsbCBpdA0KPiBmcm9tIGJwZnRvb2wgdG8g dGVzdCB3aGF0IHR5cGVzIGFyZSBhdmFpbGFibGUgb24gdGhlIHN5c3RlbS4gVGhlIHByb2JlDQo+ IHNpbXBseSBjb25zaXN0cyBpbiBsb2FkaW5nIGEgdmVyeSBiYXNpYyBwcm9ncmFtIG9mIHRoYXQg dHlwZSBhbmQgc2VlIGlmDQo+IHRoZSB2ZXJpZmllciBjb21wbGFpbnMgb3Igbm90Lg0KPiANCj4g U2FtcGxlIG91dHB1dDoNCj4gDQo+ICAgICAjIGJwZnRvb2wgZmVhdHVyZSBwcm9iZSBrZXJuZWwN Cj4gICAgIC4uLg0KPiAgICAgU2Nhbm5pbmcgZUJQRiBwcm9ncmFtIHR5cGVzLi4uDQo+ICAgICBl QlBGIHByb2dyYW1fdHlwZSBzb2NrZXRfZmlsdGVyIGlzIGF2YWlsYWJsZQ0KPiAgICAgZUJQRiBw cm9ncmFtX3R5cGUga3Byb2JlIGlzIGF2YWlsYWJsZQ0KPiAgICAgZUJQRiBwcm9ncmFtX3R5cGUg c2NoZWRfY2xzIGlzIGF2YWlsYWJsZQ0KPiAgICAgLi4uDQo+IA0KPiAgICAgIyBicGZ0b29sIC0t anNvbiAtLXByZXR0eSBmZWF0dXJlIHByb2JlIGtlcm5lbA0KPiAgICAgew0KPiAgICAgICAgIC4u Lg0KPiAgICAgICAgICJwcm9ncmFtX3R5cGVzIjogew0KPiAgICAgICAgICAgICAiaGF2ZV9zb2Nr ZXRfZmlsdGVyX3Byb2dfdHlwZSI6IHRydWUsDQo+ICAgICAgICAgICAgICJoYXZlX2twcm9iZV9w cm9nX3R5cGUiOiB0cnVlLA0KPiAgICAgICAgICAgICAiaGF2ZV9zY2hlZF9jbHNfcHJvZ190eXBl IjogdHJ1ZSwNCj4gICAgICAgICAgICAgLi4uDQo+ICAgICAgICAgfQ0KPiAgICAgfQ0KDQpIaSBR dWVudGluLA0KDQpBd2Vzb21lIHdvcmshIEkgd29uZGVmIGlmIHlvdSBoYXZlIHBsYW4gdG8gYWRk IHNpbWlsYXIgZnVuY3Rpb25hbGl0eSBmb3INCmF0dGFjaCB0eXBlcz8NCg0KRm9yIGV4YW1wbGUg QlBGX0NHUk9VUF9JTkVUezQsNn1fQ09OTkVDVCB3ZXJlIGFkZGVkIGluIDQuMTcgYnV0DQpCUEZf Q0dST1VQX1VEUHs0LDZ9X1NFTkRNU0cgbGF0ZXIgaW4gNC4xOCBldmVuIHRob3VnaCB0aGV5IGNv cnJlc3BvbmQgdG8NCnNhbWUgcHJvZyB0eXBlIChCUEZfUFJPR19UWVBFX0NHUk9VUF9TT0NLX0FE RFIpLg0KDQoNCj4gdjU6DQo+IC0gSW4gbGliYnBmLm1hcCwgbW92ZSBnbG9iYWwgc3ltYm9sIHRv IGEgbmV3IExJQkJQRl8wLjAuMiBzZWN0aW9uLg0KPiAtIFJlbmFtZSAobm9uLUFQSSBmdW5jdGlv bikgcHJvZ19sb2FkKCkgYXMgcHJvYmVfbG9hZCgpLg0KPiANCj4gdjM6DQo+IC0gR2V0IGtlcm5l bCB2ZXJzaW9uIGZvciBjaGVja2luZyBrcHJvYmVzIGF2YWlsYWJpbGl0eSBmcm9tIGxpYmJwZg0K PiAgIGluc3RlYWQgb2YgZnJvbSBicGZ0b29sLiBEbyBub3QgcGFzcyBrZXJuZWxfdmVyc2lvbiBh cyBhbiBhcmd1bWVudA0KPiAgIHdoZW4gY2FsbGluZyBsaWJicGYgcHJvYmVzLg0KPiAtIFVzZSBh IHN3aXRjaCB3aXRoIGFsbCBlbnVtIHZhbHVlcyBmb3Igc2V0dGluZyBzcGVjaWZpYyBwcm9ncmFt DQo+ICAgcGFyYW1ldGVycyBqdXN0IGJlZm9yZSBwcm9iaW5nLCBzbyB0aGF0IGdjYyBjb21wbGFp bnMgYXQgY29tcGlsZSB0aW1lDQo+ICAgKC1Xc3dpdGNoLWVudW0pIGlmIG5ldyBwcm9nIHR5cGVz IHdlcmUgYWRkZWQgdG8gdGhlIGtlcm5lbCBidXQgbGliYnBmDQo+ICAgd2FzIG5vdCB1cGRhdGVk Lg0KPiAtIEFkZCBhIGNvbW1lbnQgaW4gbGliYnBmLmggYWJvdXQgc2V0cmxpbWl0KCkgdXNhZ2Ug dG8gYWxsb3cgbWFueQ0KPiAgIGNvbnNlY3V0aXZlIHByb2JlIGF0dGVtcHRzLg0KPiANCj4gdjI6 DQo+IC0gTW92ZSBwcm9iZXMgZnJvbSBicGZ0b29sIHRvIGxpYmJwZi4NCj4gLSBSZW1vdmUgQy1z dHlsZSBtYWNyb3Mgb3V0cHV0IGZyb20gdGhpcyBwYXRjaC4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6 IFF1ZW50aW4gTW9ubmV0IDxxdWVudGluLm1vbm5ldEBuZXRyb25vbWUuY29tPg0KPiBSZXZpZXdl ZC1ieTogSmFrdWIgS2ljaW5za2kgPGpha3ViLmtpY2luc2tpQG5ldHJvbm9tZS5jb20+DQo+IFJl dmlld2VkLWJ5OiBTdGFuaXNsYXYgRm9taWNoZXYgPHNkZkBnb29nbGUuY29tPg0KPiAtLS0NCj4g IHRvb2xzL2JwZi9icGZ0b29sL2ZlYXR1cmUuYyAgIHwgNDggKysrKysrKysrKysrKysrKystDQo+ ICB0b29scy9saWIvYnBmL0J1aWxkICAgICAgICAgICB8ICAyICstDQo+ICB0b29scy9saWIvYnBm L2xpYmJwZi5oICAgICAgICB8IDExICsrKysNCj4gIHRvb2xzL2xpYi9icGYvbGliYnBmLm1hcCAg ICAgIHwgIDUgKysNCj4gIHRvb2xzL2xpYi9icGYvbGliYnBmX3Byb2Jlcy5jIHwgOTUgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gIDUgZmlsZXMgY2hhbmdlZCwgMTU5IGlu c2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMv bGliL2JwZi9saWJicGZfcHJvYmVzLmMNCj4gDQo+IGRpZmYgLS1naXQgYS90b29scy9icGYvYnBm dG9vbC9mZWF0dXJlLmMgYi90b29scy9icGYvYnBmdG9vbC9mZWF0dXJlLmMNCj4gaW5kZXggNGEy ODY3NDM5YWI3Li5kNjUwOGRkZTQ4MDggMTAwNjQ0DQo+IC0tLSBhL3Rvb2xzL2JwZi9icGZ0b29s L2ZlYXR1cmUuYw0KPiArKysgYi90b29scy9icGYvYnBmdG9vbC9mZWF0dXJlLmMNCj4gQEAgLTEs NiArMSw3IEBADQo+ICAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBP UiBCU0QtMi1DbGF1c2UpDQo+ICAvKiBDb3B5cmlnaHQgKGMpIDIwMTkgTmV0cm9ub21lIFN5c3Rl bXMsIEluYy4gKi8NCj4gIA0KPiArI2luY2x1ZGUgPGN0eXBlLmg+DQo+ICAjaW5jbHVkZSA8ZXJy bm8uaD4NCj4gICNpbmNsdWRlIDxzdHJpbmcuaD4NCj4gICNpbmNsdWRlIDx1bmlzdGQuaD4NCj4g QEAgLTExLDYgKzEyLDcgQEANCj4gICNpbmNsdWRlIDxsaW51eC9saW1pdHMuaD4NCj4gIA0KPiAg I2luY2x1ZGUgPGJwZi5oPg0KPiArI2luY2x1ZGUgPGxpYmJwZi5oPg0KPiAgDQo+ICAjaW5jbHVk ZSAibWFpbi5oIg0KPiAgDQo+IEBAIC04Myw2ICs4NSwxNyBAQCBwcmludF9zdGFydF9zZWN0aW9u KGNvbnN0IGNoYXIgKmpzb25fdGl0bGUsIGNvbnN0IGNoYXIgKnBsYWluX3RpdGxlKQ0KPiAgCX0N Cj4gIH0NCj4gIA0KPiArc3RhdGljIHZvaWQNCj4gK3ByaW50X2VuZF90aGVuX3N0YXJ0X3NlY3Rp b24oY29uc3QgY2hhciAqanNvbl90aXRsZSwgY29uc3QgY2hhciAqcGxhaW5fdGl0bGUpDQo+ICt7 DQo+ICsJaWYgKGpzb25fb3V0cHV0KQ0KPiArCQlqc29ud19lbmRfb2JqZWN0KGpzb25fd3RyKTsN Cj4gKwllbHNlDQo+ICsJCXByaW50ZigiXG4iKTsNCj4gKw0KPiArCXByaW50X3N0YXJ0X3NlY3Rp b24oanNvbl90aXRsZSwgcGxhaW5fdGl0bGUpOw0KPiArfQ0KPiArDQo+ICAvKiBQcm9iaW5nIGZ1 bmN0aW9ucyAqLw0KPiAgDQo+ICBzdGF0aWMgaW50IHJlYWRfcHJvY2ZzKGNvbnN0IGNoYXIgKnBh dGgpDQo+IEBAIC00MDMsOSArNDE2LDMzIEBAIHN0YXRpYyBib29sIHByb2JlX2JwZl9zeXNjYWxs KHZvaWQpDQo+ICAJcmV0dXJuIHJlczsNCj4gIH0NCj4gIA0KPiArc3RhdGljIHZvaWQgcHJvYmVf cHJvZ190eXBlKGVudW0gYnBmX3Byb2dfdHlwZSBwcm9nX3R5cGUsIGJvb2wgKnN1cHBvcnRlZF90 eXBlcykNCj4gK3sNCj4gKwljb25zdCBjaGFyICpwbGFpbl9jb21tZW50ID0gImVCUEYgcHJvZ3Jh bV90eXBlICI7DQo+ICsJY2hhciBmZWF0X25hbWVbMTI4XSwgcGxhaW5fZGVzY1sxMjhdOw0KPiAr CXNpemVfdCBtYXhsZW47DQo+ICsJYm9vbCByZXM7DQo+ICsNCj4gKwlyZXMgPSBicGZfcHJvYmVf cHJvZ190eXBlKHByb2dfdHlwZSwgMCk7DQo+ICsNCj4gKwlzdXBwb3J0ZWRfdHlwZXNbcHJvZ190 eXBlXSB8PSByZXM7DQo+ICsNCj4gKwltYXhsZW4gPSBzaXplb2YocGxhaW5fZGVzYykgLSBzdHJs ZW4ocGxhaW5fY29tbWVudCkgLSAxOw0KPiArCWlmIChzdHJsZW4ocHJvZ190eXBlX25hbWVbcHJv Z190eXBlXSkgPiBtYXhsZW4pIHsNCj4gKwkJcF9pbmZvKCJwcm9ncmFtIHR5cGUgbmFtZSB0b28g bG9uZyIpOw0KPiArCQlyZXR1cm47DQo+ICsJfQ0KPiArDQo+ICsJc3ByaW50ZihmZWF0X25hbWUs ICJoYXZlXyVzX3Byb2dfdHlwZSIsIHByb2dfdHlwZV9uYW1lW3Byb2dfdHlwZV0pOw0KPiArCXNw cmludGYocGxhaW5fZGVzYywgIiVzJXMiLCBwbGFpbl9jb21tZW50LCBwcm9nX3R5cGVfbmFtZVtw cm9nX3R5cGVdKTsNCj4gKwlwcmludF9ib29sX2ZlYXR1cmUoZmVhdF9uYW1lLCBwbGFpbl9kZXNj LCByZXMpOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMgaW50IGRvX3Byb2JlKGludCBhcmdjLCBjaGFy ICoqYXJndikNCj4gIHsNCj4gIAllbnVtIHByb2JlX2NvbXBvbmVudCB0YXJnZXQgPSBDT01QT05F TlRfVU5TUEVDOw0KPiArCWJvb2wgc3VwcG9ydGVkX3R5cGVzWzEyOF0gPSB7fTsNCj4gKwl1bnNp Z25lZCBpbnQgaTsNCj4gIA0KPiAgCS8qIERldGVjdGlvbiBhc3N1bWVzIHVzZXIgaGFzIHN1ZmZp Y2llbnQgcHJpdmlsZWdlcyAoQ0FQX1NZU19BRE1JTikuDQo+ICAJICogTGV0J3MgYXBwcm94aW1h dGUsIGFuZCByZXN0cmljdCB1c2FnZSB0byByb290IHVzZXIgb25seS4NCj4gQEAgLTQ2MCw4ICs0 OTcsMTcgQEAgc3RhdGljIGludCBkb19wcm9iZShpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQo+ICAJ cHJpbnRfc3RhcnRfc2VjdGlvbigic3lzY2FsbF9jb25maWciLA0KPiAgCQkJICAgICJTY2Fubmlu ZyBzeXN0ZW0gY2FsbCBhdmFpbGFiaWxpdHkuLi4iKTsNCj4gIA0KPiAtCXByb2JlX2JwZl9zeXNj YWxsKCk7DQo+ICsJaWYgKCFwcm9iZV9icGZfc3lzY2FsbCgpKQ0KPiArCQkvKiBicGYoKSBzeXNj YWxsIHVuYXZhaWxhYmxlLCBkb24ndCBwcm9iZSBvdGhlciBCUEYgZmVhdHVyZXMgKi8NCj4gKwkJ Z290byBleGl0X2Nsb3NlX2pzb247DQo+ICsNCj4gKwlwcmludF9lbmRfdGhlbl9zdGFydF9zZWN0 aW9uKCJwcm9ncmFtX3R5cGVzIiwNCj4gKwkJCQkgICAgICJTY2FubmluZyBlQlBGIHByb2dyYW0g dHlwZXMuLi4iKTsNCj4gKw0KPiArCWZvciAoaSA9IEJQRl9QUk9HX1RZUEVfVU5TUEVDICsgMTsg aSA8IEFSUkFZX1NJWkUocHJvZ190eXBlX25hbWUpOyBpKyspDQo+ICsJCXByb2JlX3Byb2dfdHlw ZShpLCBzdXBwb3J0ZWRfdHlwZXMpOw0KPiAgDQo+ICtleGl0X2Nsb3NlX2pzb246DQo+ICAJaWYg KGpzb25fb3V0cHV0KSB7DQo+ICAJCS8qIEVuZCBjdXJyZW50ICJzZWN0aW9uIiBvZiBwcm9iZXMg Ki8NCj4gIAkJanNvbndfZW5kX29iamVjdChqc29uX3d0cik7DQo+IGRpZmYgLS1naXQgYS90b29s cy9saWIvYnBmL0J1aWxkIGIvdG9vbHMvbGliL2JwZi9CdWlsZA0KPiBpbmRleCAxOTdiNDBmNWI1 YzYuLmJmZDliZmM4MmMzYiAxMDA2NDQNCj4gLS0tIGEvdG9vbHMvbGliL2JwZi9CdWlsZA0KPiAr KysgYi90b29scy9saWIvYnBmL0J1aWxkDQo+IEBAIC0xICsxIEBADQo+IC1saWJicGYteSA6PSBs aWJicGYubyBicGYubyBubGF0dHIubyBidGYubyBsaWJicGZfZXJybm8ubyBzdHJfZXJyb3IubyBu ZXRsaW5rLm8gYnBmX3Byb2dfbGluZm8ubw0KPiArbGliYnBmLXkgOj0gbGliYnBmLm8gYnBmLm8g bmxhdHRyLm8gYnRmLm8gbGliYnBmX2Vycm5vLm8gc3RyX2Vycm9yLm8gbmV0bGluay5vIGJwZl9w cm9nX2xpbmZvLm8gbGliYnBmX3Byb2Jlcy5vDQo+IGRpZmYgLS1naXQgYS90b29scy9saWIvYnBm L2xpYmJwZi5oIGIvdG9vbHMvbGliL2JwZi9saWJicGYuaA0KPiBpbmRleCA1ZjY4ZDdiNzUyMTUu LjhlNjM4MjExMDlhYiAxMDA2NDQNCj4gLS0tIGEvdG9vbHMvbGliL2JwZi9saWJicGYuaA0KPiAr KysgYi90b29scy9saWIvYnBmL2xpYmJwZi5oDQo+IEBAIC0zNTUsNiArMzU1LDE3IEBAIExJQkJQ Rl9BUEkgY29uc3Qgc3RydWN0IGJwZl9saW5lX2luZm8gKg0KPiAgYnBmX3Byb2dfbGluZm9fX2xm aW5kKGNvbnN0IHN0cnVjdCBicGZfcHJvZ19saW5mbyAqcHJvZ19saW5mbywNCj4gIAkJICAgICAg X191MzIgaW5zbl9vZmYsIF9fdTMyIG5yX3NraXApOw0KPiAgDQo+ICsvKg0KPiArICogUHJvYmUg Zm9yIHN1cHBvcnRlZCBzeXN0ZW0gZmVhdHVyZXMNCj4gKyAqDQo+ICsgKiBOb3RlIHRoYXQgcnVu bmluZyBtYW55IG9mIHRoZXNlIHByb2JlcyBpbiBhIHNob3J0IGFtb3VudCBvZiB0aW1lIGNhbiBj YXVzZQ0KPiArICogdGhlIGtlcm5lbCB0byByZWFjaCB0aGUgbWF4aW1hbCBzaXplIG9mIGxvY2th YmxlIG1lbW9yeSBhbGxvd2VkIGZvciB0aGUNCj4gKyAqIHVzZXIsIGNhdXNpbmcgc3Vic2VxdWVu dCBwcm9iZXMgdG8gZmFpbC4gSW4gdGhpcyBjYXNlLCB0aGUgY2FsbGVyIG1heSB3YW50DQo+ICsg KiB0byBhZGp1c3QgdGhhdCBsaW1pdCB3aXRoIHNldHJsaW1pdCgpLg0KPiArICovDQo+ICtMSUJC UEZfQVBJIGJvb2wgYnBmX3Byb2JlX3Byb2dfdHlwZShlbnVtIGJwZl9wcm9nX3R5cGUgcHJvZ190 eXBlLA0KPiArCQkJCSAgICBfX3UzMiBpZmluZGV4KTsNCj4gKw0KPiAgI2lmZGVmIF9fY3BsdXNw bHVzDQo+ICB9IC8qIGV4dGVybiAiQyIgKi8NCj4gICNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvdG9v bHMvbGliL2JwZi9saWJicGYubWFwIGIvdG9vbHMvbGliL2JwZi9saWJicGYubWFwDQo+IGluZGV4 IGNkMDJjZDRlMmNjMy4uYzdlYzNmZmEyNGU5IDEwMDY0NA0KPiAtLS0gYS90b29scy9saWIvYnBm L2xpYmJwZi5tYXANCj4gKysrIGIvdG9vbHMvbGliL2JwZi9saWJicGYubWFwDQo+IEBAIC0xMjQs MyArMTI0LDggQEAgTElCQlBGXzAuMC4xIHsNCj4gIAlsb2NhbDoNCj4gIAkJKjsNCj4gIH07DQo+ ICsNCj4gK0xJQkJQRl8wLjAuMiB7DQo+ICsJZ2xvYmFsOg0KPiArCQlicGZfcHJvYmVfcHJvZ190 eXBlOw0KPiArfSBMSUJCUEZfMC4wLjE7DQo+IGRpZmYgLS1naXQgYS90b29scy9saWIvYnBmL2xp YmJwZl9wcm9iZXMuYyBiL3Rvb2xzL2xpYi9icGYvbGliYnBmX3Byb2Jlcy5jDQo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMDU2YzBjMTg2ZjJhDQo+IC0tLSAv ZGV2L251bGwNCj4gKysrIGIvdG9vbHMvbGliL2JwZi9saWJicGZfcHJvYmVzLmMNCj4gQEAgLTAs MCArMSw5NSBAQA0KPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChMR1BMLTIuMSBPUiBC U0QtMi1DbGF1c2UpDQo+ICsvKiBDb3B5cmlnaHQgKGMpIDIwMTkgTmV0cm9ub21lIFN5c3RlbXMs IEluYy4gKi8NCj4gKw0KPiArI2luY2x1ZGUgPGVycm5vLmg+DQo+ICsjaW5jbHVkZSA8dW5pc3Rk Lmg+DQo+ICsjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4NCj4gKw0KPiArI2luY2x1ZGUgPGxpbnV4 L2ZpbHRlci5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPg0KPiArDQo+ICsjaW5jbHVk ZSAiYnBmLmgiDQo+ICsjaW5jbHVkZSAibGliYnBmLmgiDQo+ICsNCj4gK3N0YXRpYyBpbnQgZ2V0 X2tlcm5lbF92ZXJzaW9uKHZvaWQpDQo+ICt7DQo+ICsJaW50IHZlcnNpb24sIHN1YnZlcnNpb24s IHBhdGNobGV2ZWw7DQo+ICsJc3RydWN0IHV0c25hbWUgdXRzbjsNCj4gKw0KPiArCS8qIFJldHVy biAwIG9uIGZhaWx1cmUsIGFuZCBhdHRlbXB0IHRvIHByb2JlIHdpdGggZW1wdHkga3ZlcnNpb24g Ki8NCj4gKwlpZiAodW5hbWUoJnV0c24pKQ0KPiArCQlyZXR1cm4gMDsNCj4gKw0KPiArCWlmIChz c2NhbmYodXRzbi5yZWxlYXNlLCAiJWQuJWQuJWQiLA0KPiArCQkgICAmdmVyc2lvbiwgJnN1YnZl cnNpb24sICZwYXRjaGxldmVsKSAhPSAzKQ0KPiArCQlyZXR1cm4gMDsNCj4gKw0KPiArCXJldHVy biAodmVyc2lvbiA8PCAxNikgKyAoc3VidmVyc2lvbiA8PCA4KSArIHBhdGNobGV2ZWw7DQo+ICt9 DQo+ICsNCj4gK3N0YXRpYyB2b2lkDQo+ICtwcm9iZV9sb2FkKGVudW0gYnBmX3Byb2dfdHlwZSBw cm9nX3R5cGUsIGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbnMsDQo+ICsJICAgc2l6ZV90IGlu c25zX2NudCwgY2hhciAqYnVmLCBzaXplX3QgYnVmX2xlbiwgX191MzIgaWZpbmRleCkNCj4gK3sN Cj4gKwlzdHJ1Y3QgYnBmX2xvYWRfcHJvZ3JhbV9hdHRyIHhhdHRyID0ge307DQo+ICsJaW50IGZk Ow0KPiArDQo+ICsJc3dpdGNoIChwcm9nX3R5cGUpIHsNCj4gKwljYXNlIEJQRl9QUk9HX1RZUEVf Q0dST1VQX1NPQ0tfQUREUjoNCj4gKwkJeGF0dHIuZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPSBCUEZf Q0dST1VQX0lORVQ0X0NPTk5FQ1Q7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgQlBGX1BST0dfVFlQ RV9LUFJPQkU6DQo+ICsJCXhhdHRyLmtlcm5fdmVyc2lvbiA9IGdldF9rZXJuZWxfdmVyc2lvbigp Ow0KPiArCQlicmVhazsNCj4gKwljYXNlIEJQRl9QUk9HX1RZUEVfVU5TUEVDOg0KPiArCWNhc2Ug QlBGX1BST0dfVFlQRV9TT0NLRVRfRklMVEVSOg0KPiArCWNhc2UgQlBGX1BST0dfVFlQRV9TQ0hF RF9DTFM6DQo+ICsJY2FzZSBCUEZfUFJPR19UWVBFX1NDSEVEX0FDVDoNCj4gKwljYXNlIEJQRl9Q Uk9HX1RZUEVfVFJBQ0VQT0lOVDoNCj4gKwljYXNlIEJQRl9QUk9HX1RZUEVfWERQOg0KPiArCWNh c2UgQlBGX1BST0dfVFlQRV9QRVJGX0VWRU5UOg0KPiArCWNhc2UgQlBGX1BST0dfVFlQRV9DR1JP VVBfU0tCOg0KPiArCWNhc2UgQlBGX1BST0dfVFlQRV9DR1JPVVBfU09DSzoNCj4gKwljYXNlIEJQ Rl9QUk9HX1RZUEVfTFdUX0lOOg0KPiArCWNhc2UgQlBGX1BST0dfVFlQRV9MV1RfT1VUOg0KPiAr CWNhc2UgQlBGX1BST0dfVFlQRV9MV1RfWE1JVDoNCj4gKwljYXNlIEJQRl9QUk9HX1RZUEVfU09D S19PUFM6DQo+ICsJY2FzZSBCUEZfUFJPR19UWVBFX1NLX1NLQjoNCj4gKwljYXNlIEJQRl9QUk9H X1RZUEVfQ0dST1VQX0RFVklDRToNCj4gKwljYXNlIEJQRl9QUk9HX1RZUEVfU0tfTVNHOg0KPiAr CWNhc2UgQlBGX1BST0dfVFlQRV9SQVdfVFJBQ0VQT0lOVDoNCj4gKwljYXNlIEJQRl9QUk9HX1RZ UEVfTFdUX1NFRzZMT0NBTDoNCj4gKwljYXNlIEJQRl9QUk9HX1RZUEVfTElSQ19NT0RFMjoNCj4g KwljYXNlIEJQRl9QUk9HX1RZUEVfU0tfUkVVU0VQT1JUOg0KPiArCWNhc2UgQlBGX1BST0dfVFlQ RV9GTE9XX0RJU1NFQ1RPUjoNCj4gKwlkZWZhdWx0Og0KPiArCQlicmVhazsNCj4gKwl9DQo+ICsN Cj4gKwl4YXR0ci5wcm9nX3R5cGUgPSBwcm9nX3R5cGU7DQo+ICsJeGF0dHIuaW5zbnMgPSBpbnNu czsNCj4gKwl4YXR0ci5pbnNuc19jbnQgPSBpbnNuc19jbnQ7DQo+ICsJeGF0dHIubGljZW5zZSA9 ICJHUEwiOw0KPiArCXhhdHRyLnByb2dfaWZpbmRleCA9IGlmaW5kZXg7DQo+ICsNCj4gKwlmZCA9 IGJwZl9sb2FkX3Byb2dyYW1feGF0dHIoJnhhdHRyLCBidWYsIGJ1Zl9sZW4pOw0KPiArCWlmIChm ZCA+PSAwKQ0KPiArCQljbG9zZShmZCk7DQo+ICt9DQo+ICsNCj4gK2Jvb2wgYnBmX3Byb2JlX3By b2dfdHlwZShlbnVtIGJwZl9wcm9nX3R5cGUgcHJvZ190eXBlLCBfX3UzMiBpZmluZGV4KQ0KPiAr ew0KPiArCXN0cnVjdCBicGZfaW5zbiBpbnNuc1syXSA9IHsNCj4gKwkJQlBGX01PVjY0X0lNTShC UEZfUkVHXzAsIDApLA0KPiArCQlCUEZfRVhJVF9JTlNOKCkNCj4gKwl9Ow0KPiArDQo+ICsJaWYg KGlmaW5kZXggJiYgcHJvZ190eXBlID09IEJQRl9QUk9HX1RZUEVfU0NIRURfQ0xTKQ0KPiArCQkv KiBuZnAgcmV0dXJucyAtRUlOVkFMIG9uIGV4aXQoMCkgd2l0aCBUQyBvZmZsb2FkICovDQo+ICsJ CWluc25zWzBdLmltbSA9IDI7DQo+ICsNCj4gKwllcnJubyA9IDA7DQo+ICsJcHJvYmVfbG9hZChw cm9nX3R5cGUsIGluc25zLCBBUlJBWV9TSVpFKGluc25zKSwgTlVMTCwgMCwgaWZpbmRleCk7DQo+ ICsNCj4gKwlyZXR1cm4gZXJybm8gIT0gRUlOVkFMICYmIGVycm5vICE9IEVPUE5PVFNVUFA7DQo+ ICt9DQo+IC0tIA0KPiAyLjE3LjENCj4gDQoNCi0tIA0KQW5kcmV5IElnbmF0b3YNCg==