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=-7.1 required=3.0 tests=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 B929EC10F11 for ; Wed, 24 Apr 2019 07:50:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 63E852148D for ; Wed, 24 Apr 2019 07:50:29 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=Mellanox.com header.i=@Mellanox.com header.b="I8QbyJal" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729910AbfDXHu2 (ORCPT ); Wed, 24 Apr 2019 03:50:28 -0400 Received: from mail-eopbgr80051.outbound.protection.outlook.com ([40.107.8.51]:45027 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729333AbfDXHu2 (ORCPT ); Wed, 24 Apr 2019 03:50:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=m+/YTfICBtsYj8s+rxeqATBQoUh2j+QtzvJ0ojwYkGw=; b=I8QbyJal5xL51pSY7MbRw7nJVnnh9UPV/U5KRx1ZZ0Qnbsyz79mtL6HKTpQmgzMVmeBO2kBgpi6Bf3h+CFgz4B7GJCkvgHadI3tmuE64wZB7JAFBqcK1FhafPbhadMkZ7pAzHE6qVpPJJceoQUnR25R7NFAJoCTO/LAjq3VvteU= Received: from HE1PR0502MB3641.eurprd05.prod.outlook.com (10.167.127.11) by HE1PR0502MB3050.eurprd05.prod.outlook.com (10.175.31.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1813.14; Wed, 24 Apr 2019 07:50:18 +0000 Received: from HE1PR0502MB3641.eurprd05.prod.outlook.com ([fe80::50cb:2948:19aa:a023]) by HE1PR0502MB3641.eurprd05.prod.outlook.com ([fe80::50cb:2948:19aa:a023%5]) with mapi id 15.20.1813.017; Wed, 24 Apr 2019 07:50:18 +0000 From: Vlad Buslov To: Saeed Mahameed CC: Vlad Buslov , "jhs@mojatatu.com" , "netdev@vger.kernel.org" , "davem@davemloft.net" , "jakub.kicinski@netronome.com" , "xiyou.wangcong@gmail.com" , "jiri@resnulli.us" Subject: Re: [PATCH net-next] net: sched: flower: refactor reoffload for concurrent access Thread-Topic: [PATCH net-next] net: sched: flower: refactor reoffload for concurrent access Thread-Index: AQHU+NwU0yiZNjiB30CuaaLcYjGQcaZIo+yAgAC60ICAAJmPgIAA+q4A Date: Wed, 24 Apr 2019 07:50:17 +0000 Message-ID: References: <20190422072135.4176-1-vladbu@mellanox.com> <19ac9266d24379b11294a50fa4e702dca296109d.camel@mellanox.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: LO2P265CA0205.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:9e::25) To HE1PR0502MB3641.eurprd05.prod.outlook.com (2603:10a6:7:85::11) authentication-results: spf=none (sender IP is ) smtp.mailfrom=vladbu@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [37.142.13.130] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 58768a99-a774-454d-8f5e-08d6c8897e5a x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(4618075)(2017052603328)(7193020);SRVR:HE1PR0502MB3050; x-ms-traffictypediagnostic: HE1PR0502MB3050: x-microsoft-antispam-prvs: x-forefront-prvs: 00179089FD x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39860400002)(346002)(376002)(396003)(136003)(366004)(189003)(199004)(6116002)(37006003)(6636002)(3846002)(5660300002)(68736007)(6246003)(81166006)(66066001)(53936002)(229853002)(8936002)(6486002)(316002)(14454004)(6436002)(8676002)(54906003)(81156014)(186003)(446003)(52116002)(2906002)(2616005)(486006)(11346002)(30864003)(476003)(76176011)(93886005)(6512007)(14444005)(36756003)(5024004)(6506007)(86362001)(386003)(99286004)(102836004)(71200400001)(66946007)(478600001)(66556008)(66446008)(64756008)(6862004)(66476007)(4326008)(7736002)(25786009)(71190400001)(305945005)(73956011)(256004)(97736004)(26005);DIR:OUT;SFP:1101;SCL:1;SRVR:HE1PR0502MB3050;H:HE1PR0502MB3641.eurprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: QqXisL8kJtVwXwfTo9SGfA6nkDQIz+Z0rih+V3RccjPP64gQ0UQYpSVLD520qtgj5H0ET+o09IwFN/cLJCgNpXEd793LZaqkEYDFqAXOJHFd4isiGGBUdLoeSaOVCM5AvnTFtYuOQKoKxZFobvT9u/Jh663fYhYNJBqHMHs8wbeDODinx0YFv9H3LjPE4RIup1HltlP59CjaZDfKXmL6ukNQUSqRMHwv15sf901GzsqhgzGvWL6OSZaKSBjDwjU6Ibbh0D2k8N5dVKaJE3iS7dly0NuXzi/aKKZE+68CuPyn6t0dpOpgtdim8wNTCnR38IEf+ncfUNh17AxHwTxrFdrl4vrIOoSPY4v4IOoGxW3FGcoTlQNEZFjwnB1szjhji2ZhkWZC/Vxs0x4QoVPXXY7r8B8peH2nX5qX2gA3oOY= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 58768a99-a774-454d-8f5e-08d6c8897e5a X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Apr 2019 07:50:17.9045 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0502MB3050 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org DQpPbiBUdWUgMjMgQXByIDIwMTkgYXQgMTk6NTIsIFNhZWVkIE1haGFtZWVkIDxzYWVlZG1AbWVs bGFub3guY29tPiB3cm90ZToNCj4gT24gVHVlLCAyMDE5LTA0LTIzIGF0IDA3OjQzICswMDAwLCBW bGFkIEJ1c2xvdiB3cm90ZToNCj4+IE9uIE1vbiAyMiBBcHIgMjAxOSBhdCAyMzozNCwgU2FlZWQg TWFoYW1lZWQgPHNhZWVkbUBtZWxsYW5veC5jb20+DQo+PiB3cm90ZToNCj4+ID4gT24gTW9uLCAy MDE5LTA0LTIyIGF0IDEwOjIxICswMzAwLCBWbGFkIEJ1c2xvdiB3cm90ZToNCj4+ID4gPiBSZWNl bnQgY2hhbmdlcyB0aGF0IGludHJvZHVjZWQgdW5sb2NrZWQgZmxvd2VyIGRpZCBub3QgcHJvcGVy bHkNCj4+ID4gPiBhY2NvdW50IGZvcg0KPj4gPiA+IGNhc2Ugd2hlbiByZW9mZmxvYWQgaXMgaW5p dGlhdGVkIGNvbmN1cnJlbnRseSB3aXRoIGZpbHRlcg0KPj4gPiA+IHVwZGF0ZXMuIFRvDQo+PiA+ ID4gZml4DQo+PiA+ID4gdGhlIGlzc3VlLCBleHRlbmQgZmxvd2VyIHdpdGggJ2h3X2ZpbHRlcnMn IGxpc3QgdGhhdCBpcyB1c2VkIHRvDQo+PiA+ID4gc3RvcmUNCj4+ID4gPiBmaWx0ZXJzIHRoYXQg ZG9uJ3QgaGF2ZSAnc2tpcF9odycgZmxhZyBzZXQuIEZpbHRlciBpcyBhZGRlZCB0bw0KPj4gPiA+ IHRoZQ0KPj4gPiA+IGxpc3QNCj4+ID4gPiB3aGVuIGl0IGlzIGluc2VydGVkIHRvIGhhcmR3YXJl IGFuZCBvbmx5IHJlbW92ZWQgZnJvbSBpdCBhZnRlcg0KPj4gPiA+IGJlaW5nDQo+PiA+ID4gdW5v ZmZsb2FkZWQgZnJvbSBhbGwgZHJpdmVycyB0aGF0IHBhcmVudCBibG9jayBpcyBhdHRhY2hlZCB0 by4NCj4+ID4gPiBUaGlzDQo+PiA+ID4gZW5zdXJlcw0KPj4gPiA+IHRoYXQgY29uY3VycmVudCBy ZW9mZmxvYWQgY2FuIHN0aWxsIGFjY2VzcyBmaWx0ZXIgdGhhdCBpcyBiZWluZw0KPj4gPiA+IGRl bGV0ZWQgYW5kDQo+PiA+ID4gcHJldmVudHMgcmFjZSBjb25kaXRpb24gd2hlbiBkcml2ZXIgY2Fs bGJhY2sgY2FuIGJlIHJlbW92ZWQgd2hlbg0KPj4gPiA+IGZpbHRlciBpcw0KPj4gPiA+IG5vIGxv bmdlciBhY2Nlc3NpYmxlIHRyb3VnaCBpZHIsIGJ1dCBpcyBzdGlsbCBwcmVzZW50IGluDQo+PiA+ ID4gaGFyZHdhcmUuDQo+PiA+ID4gDQo+PiA+ID4gUmVmYWN0b3IgZmxfY2hhbmdlKCkgdG8gcmVz cGVjdCBuZXcgZmlsdGVyIHJlZmVyZW5jZSBjb3VudGVyIGFuZA0KPj4gPiA+IHRvDQo+PiA+ID4g cmVsZWFzZQ0KPj4gPiA+IGZpbHRlciByZWZlcmVuY2Ugd2l0aCBfX2ZsX3B1dCgpIGluIGNhc2Ug b2YgZXJyb3IsIGluc3RlYWQgb2YNCj4+ID4gPiBkaXJlY3RseQ0KPj4gPiA+IGRlYWxsb2NhdGlu ZyBmaWx0ZXIgbWVtb3J5LiBUaGlzIGFsbG93cyBmb3IgY29uY3VycmVudCBhY2Nlc3MgdG8NCj4+ ID4gPiBmaWx0ZXINCj4+ID4gPiBmcm9tIGZsX3Jlb2ZmbG9hZCgpIGFuZCBwcm90ZWN0cyBpdCB3 aXRoIHJlZmVyZW5jZSBjb3VudGluZy4NCj4+ID4gPiBSZWZhY3Rvcg0KPj4gPiA+IGZsX3Jlb2Zm bG9hZCgpIHRvIGl0ZXJhdGUgb3ZlciBod19maWx0ZXJzIGxpc3QgaW5zdGVhZCBvZiBpZHIuDQo+ PiA+ID4gSW1wbGVtZW50DQo+PiA+ID4gZmxfZ2V0X25leHRfaHdfZmlsdGVyKCkgaGVscGVyIGZ1 bmN0aW9uIHRoYXQgaXMgdXNlZCB0byBpdGVyYXRlDQo+PiA+ID4gb3Zlcg0KPj4gPiA+IGh3X2Zp bHRlcnMgbGlzdCB3aXRoIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgc2tpcHMgZmlsdGVycyB0aGF0 DQo+PiA+ID4gYXJlDQo+PiA+ID4gYmVpbmcNCj4+ID4gPiBjb25jdXJyZW50bHkgZGVsZXRlZC4N Cj4+ID4gPiANCj4+ID4gPiBGaXhlczogOTIxNDkxOTAwNjdkICgibmV0OiBzY2hlZDogZmxvd2Vy OiBzZXQgdW5sb2NrZWQgZmxhZyBmb3INCj4+ID4gPiBmbG93ZXIgcHJvdG8gb3BzIikNCj4+ID4g PiBTaWduZWQtb2ZmLWJ5OiBWbGFkIEJ1c2xvdiA8dmxhZGJ1QG1lbGxhbm94LmNvbT4NCj4+ID4g PiBSZXBvcnRlZC1ieTogSmFrdWIgS2ljaW5za2kgPGpha3ViLmtpY2luc2tpQG5ldHJvbm9tZS5j b20+DQo+PiA+ID4gLS0tDQo+PiA+ID4gIG5ldC9zY2hlZC9jbHNfZmxvd2VyLmMgfCA3NyArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0NCj4+ID4gPiAtLS0tDQo+PiA+ID4gLS0N Cj4+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDU3IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygt KQ0KPj4gPiA+IA0KPj4gPiA+IGRpZmYgLS1naXQgYS9uZXQvc2NoZWQvY2xzX2Zsb3dlci5jIGIv bmV0L3NjaGVkL2Nsc19mbG93ZXIuYw0KPj4gPiA+IGluZGV4IDRiNTU4NTM1ODY5OS4uNTI0Yjg2 NTYwYWYzIDEwMDY0NA0KPj4gPiA+IC0tLSBhL25ldC9zY2hlZC9jbHNfZmxvd2VyLmMNCj4+ID4g PiArKysgYi9uZXQvc2NoZWQvY2xzX2Zsb3dlci5jDQo+PiA+ID4gQEAgLTkwLDYgKzkwLDcgQEAg c3RydWN0IGNsc19mbF9oZWFkIHsNCj4+ID4gPiAgCXN0cnVjdCByaGFzaHRhYmxlIGh0Ow0KPj4g PiA+ICAJc3BpbmxvY2tfdCBtYXNrc19sb2NrOyAvKiBQcm90ZWN0IG1hc2tzIGxpc3QgKi8NCj4+ ID4gPiAgCXN0cnVjdCBsaXN0X2hlYWQgbWFza3M7DQo+PiA+ID4gKwlzdHJ1Y3QgbGlzdF9oZWFk IGh3X2ZpbHRlcnM7DQo+PiA+ID4gIAlzdHJ1Y3QgcmN1X3dvcmsgcndvcms7DQo+PiA+ID4gIAlz dHJ1Y3QgaWRyIGhhbmRsZV9pZHI7DQo+PiA+ID4gIH07DQo+PiA+ID4gQEAgLTEwMiw2ICsxMDMs NyBAQCBzdHJ1Y3QgY2xzX2ZsX2ZpbHRlciB7DQo+PiA+ID4gIAlzdHJ1Y3QgdGNmX3Jlc3VsdCBy ZXM7DQo+PiA+ID4gIAlzdHJ1Y3QgZmxfZmxvd19rZXkga2V5Ow0KPj4gPiA+ICAJc3RydWN0IGxp c3RfaGVhZCBsaXN0Ow0KPj4gPiA+ICsJc3RydWN0IGxpc3RfaGVhZCBod19saXN0Ow0KPj4gPiA+ ICAJdTMyIGhhbmRsZTsNCj4+ID4gPiAgCXUzMiBmbGFnczsNCj4+ID4gPiAgCXUzMiBpbl9od19j b3VudDsNCj4+ID4gPiBAQCAtMzE1LDYgKzMxNyw3IEBAIHN0YXRpYyBpbnQgZmxfaW5pdChzdHJ1 Y3QgdGNmX3Byb3RvICp0cCkNCj4+ID4gPiANCj4+ID4gPiAgCXNwaW5fbG9ja19pbml0KCZoZWFk LT5tYXNrc19sb2NrKTsNCj4+ID4gPiAgCUlOSVRfTElTVF9IRUFEX1JDVSgmaGVhZC0+bWFza3Mp Ow0KPj4gPiA+ICsJSU5JVF9MSVNUX0hFQUQoJmhlYWQtPmh3X2ZpbHRlcnMpOw0KPj4gPiA+ICAJ cmN1X2Fzc2lnbl9wb2ludGVyKHRwLT5yb290LCBoZWFkKTsNCj4+ID4gPiAgCWlkcl9pbml0KCZo ZWFkLT5oYW5kbGVfaWRyKTsNCj4+ID4gPiANCj4+ID4gPiBAQCAtMzUyLDYgKzM1NSwxNiBAQCBz dGF0aWMgYm9vbCBmbF9tYXNrX3B1dChzdHJ1Y3QgY2xzX2ZsX2hlYWQNCj4+ID4gPiAqaGVhZCwg c3RydWN0IGZsX2Zsb3dfbWFzayAqbWFzaykNCj4+ID4gPiAgCXJldHVybiB0cnVlOw0KPj4gPiA+ ICB9DQo+PiA+ID4gDQo+PiA+ID4gK3N0YXRpYyBzdHJ1Y3QgY2xzX2ZsX2hlYWQgKmZsX2hlYWRf ZGVyZWZlcmVuY2Uoc3RydWN0IHRjZl9wcm90bw0KPj4gPiA+ICp0cCkNCj4+ID4gPiArew0KPj4g PiA+ICsJLyogRmxvd2VyIGNsYXNzaWZpZXIgb25seSBjaGFuZ2VzIHJvb3QgcG9pbnRlciBkdXJp bmcgaW5pdCBhbmQNCj4+ID4gPiBkZXN0cm95Lg0KPj4gPiA+ICsJICogVXNlcnMgbXVzdCBvYnRh aW4gcmVmZXJlbmNlIHRvIHRjZl9wcm90byBpbnN0YW5jZSBiZWZvcmUNCj4+ID4gPiBjYWxsaW5n IGl0cw0KPj4gPiA+ICsJICogQVBJLCBzbyB0cC0+cm9vdCBwb2ludGVyIGlzIHByb3RlY3RlZCBm cm9tIGNvbmN1cnJlbnQgY2FsbA0KPj4gPiA+IHRvDQo+PiA+ID4gKwkgKiBmbF9kZXN0cm95KCkg YnkgcmVmZXJlbmNlIGNvdW50aW5nLg0KPj4gPiA+ICsJICovDQo+PiA+ID4gKwlyZXR1cm4gcmN1 X2RlcmVmZXJlbmNlX3Jhdyh0cC0+cm9vdCk7DQo+PiA+ID4gK30NCj4+ID4gPiArDQo+PiA+ID4g IHN0YXRpYyB2b2lkIF9fZmxfZGVzdHJveV9maWx0ZXIoc3RydWN0IGNsc19mbF9maWx0ZXIgKmYp DQo+PiA+ID4gIHsNCj4+ID4gPiAgCXRjZl9leHRzX2Rlc3Ryb3koJmYtPmV4dHMpOw0KPj4gPiA+ IEBAIC0zODIsNiArMzk1LDggQEAgc3RhdGljIHZvaWQgZmxfaHdfZGVzdHJveV9maWx0ZXIoc3Ry dWN0DQo+PiA+ID4gdGNmX3Byb3RvDQo+PiA+ID4gKnRwLCBzdHJ1Y3QgY2xzX2ZsX2ZpbHRlciAq ZiwNCj4+ID4gPiANCj4+ID4gPiAgCXRjX3NldHVwX2NiX2NhbGwoYmxvY2ssIFRDX1NFVFVQX0NM U0ZMT1dFUiwgJmNsc19mbG93ZXIsDQo+PiA+ID4gZmFsc2UpOw0KPj4gPiA+ICAJc3Bpbl9sb2Nr KCZ0cC0+bG9jayk7DQo+PiA+ID4gKwlpZiAoIWxpc3RfZW1wdHkoJmYtPmh3X2xpc3QpKQ0KPj4g PiA+ICsJCWxpc3RfZGVsX2luaXQoJmYtPmh3X2xpc3QpOw0KPj4gPiA+ICAJdGNmX2Jsb2NrX29m ZmxvYWRfZGVjKGJsb2NrLCAmZi0+ZmxhZ3MpOw0KPj4gPiA+ICAJc3Bpbl91bmxvY2soJnRwLT5s b2NrKTsNCj4+ID4gPiANCj4+ID4gPiBAQCAtMzkzLDYgKzQwOCw3IEBAIHN0YXRpYyBpbnQgZmxf aHdfcmVwbGFjZV9maWx0ZXIoc3RydWN0DQo+PiA+ID4gdGNmX3Byb3RvDQo+PiA+ID4gKnRwLA0K Pj4gPiA+ICAJCQkJc3RydWN0IGNsc19mbF9maWx0ZXIgKmYsIGJvb2wNCj4+ID4gPiBydG5sX2hl bGQsDQo+PiA+ID4gIAkJCQlzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spDQo+PiA+ID4g IHsNCj4+ID4gPiArCXN0cnVjdCBjbHNfZmxfaGVhZCAqaGVhZCA9IGZsX2hlYWRfZGVyZWZlcmVu Y2UodHApOw0KPj4gPiA+ICAJc3RydWN0IHRjX2Nsc19mbG93ZXJfb2ZmbG9hZCBjbHNfZmxvd2Vy ID0ge307DQo+PiA+ID4gIAlzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jayA9IHRwLT5jaGFpbi0+Ymxv Y2s7DQo+PiA+ID4gIAlib29sIHNraXBfc3cgPSB0Y19za2lwX3N3KGYtPmZsYWdzKTsNCj4+ID4g PiBAQCAtNDQ0LDYgKzQ2MCw5IEBAIHN0YXRpYyBpbnQgZmxfaHdfcmVwbGFjZV9maWx0ZXIoc3Ry dWN0DQo+PiA+ID4gdGNmX3Byb3RvDQo+PiA+ID4gKnRwLA0KPj4gPiA+ICAJCWdvdG8gZXJyb3V0 Ow0KPj4gPiA+ICAJfQ0KPj4gPiA+IA0KPj4gPiA+ICsJc3Bpbl9sb2NrKCZ0cC0+bG9jayk7DQo+ PiA+ID4gKwlsaXN0X2FkZCgmZi0+aHdfbGlzdCwgJmhlYWQtPmh3X2ZpbHRlcnMpOw0KPj4gPiA+ ICsJc3Bpbl91bmxvY2soJnRwLT5sb2NrKTsNCj4+ID4gPiAgZXJyb3V0Og0KPj4gPiA+ICAJaWYg KCFydG5sX2hlbGQpDQo+PiA+ID4gIAkJcnRubF91bmxvY2soKTsNCj4+ID4gPiBAQCAtNDc1LDIz ICs0OTQsMTEgQEAgc3RhdGljIHZvaWQgZmxfaHdfdXBkYXRlX3N0YXRzKHN0cnVjdA0KPj4gPiA+ IHRjZl9wcm90bw0KPj4gPiA+ICp0cCwgc3RydWN0IGNsc19mbF9maWx0ZXIgKmYsDQo+PiA+ID4g IAkJcnRubF91bmxvY2soKTsNCj4+ID4gPiAgfQ0KPj4gPiA+IA0KPj4gPiA+IC1zdGF0aWMgc3Ry dWN0IGNsc19mbF9oZWFkICpmbF9oZWFkX2RlcmVmZXJlbmNlKHN0cnVjdCB0Y2ZfcHJvdG8NCj4+ ID4gPiAqdHApDQo+PiA+ID4gLXsNCj4+ID4gPiAtCS8qIEZsb3dlciBjbGFzc2lmaWVyIG9ubHkg Y2hhbmdlcyByb290IHBvaW50ZXIgZHVyaW5nIGluaXQgYW5kDQo+PiA+ID4gZGVzdHJveS4NCj4+ ID4gPiAtCSAqIFVzZXJzIG11c3Qgb2J0YWluIHJlZmVyZW5jZSB0byB0Y2ZfcHJvdG8gaW5zdGFu Y2UgYmVmb3JlDQo+PiA+ID4gY2FsbGluZyBpdHMNCj4+ID4gPiAtCSAqIEFQSSwgc28gdHAtPnJv b3QgcG9pbnRlciBpcyBwcm90ZWN0ZWQgZnJvbSBjb25jdXJyZW50IGNhbGwNCj4+ID4gPiB0bw0K Pj4gPiA+IC0JICogZmxfZGVzdHJveSgpIGJ5IHJlZmVyZW5jZSBjb3VudGluZy4NCj4+ID4gPiAt CSAqLw0KPj4gPiA+IC0JcmV0dXJuIHJjdV9kZXJlZmVyZW5jZV9yYXcodHAtPnJvb3QpOw0KPj4g PiA+IC19DQo+PiA+ID4gLQ0KPj4gPiA+ICBzdGF0aWMgdm9pZCBfX2ZsX3B1dChzdHJ1Y3QgY2xz X2ZsX2ZpbHRlciAqZikNCj4+ID4gPiAgew0KPj4gPiA+ICAJaWYgKCFyZWZjb3VudF9kZWNfYW5k X3Rlc3QoJmYtPnJlZmNudCkpDQo+PiA+ID4gIAkJcmV0dXJuOw0KPj4gPiA+IA0KPj4gPiA+IC0J V0FSTl9PTighZi0+ZGVsZXRlZCk7DQo+PiA+ID4gLQ0KPj4gPiA+ICAJaWYgKHRjZl9leHRzX2dl dF9uZXQoJmYtPmV4dHMpKQ0KPj4gPiA+ICAJCXRjZl9xdWV1ZV93b3JrKCZmLT5yd29yaywgZmxf ZGVzdHJveV9maWx0ZXJfd29yayk7DQo+PiA+ID4gIAllbHNlDQo+PiA+ID4gQEAgLTE1MjIsNiAr MTUyOSw3IEBAIHN0YXRpYyBpbnQgZmxfY2hhbmdlKHN0cnVjdCBuZXQgKm5ldCwNCj4+ID4gPiBz dHJ1Y3QNCj4+ID4gPiBza19idWZmICppbl9za2IsDQo+PiA+ID4gIAkJZXJyID0gLUVOT0JVRlM7 DQo+PiA+ID4gIAkJZ290byBlcnJvdXRfdGI7DQo+PiA+ID4gIAl9DQo+PiA+ID4gKwlJTklUX0xJ U1RfSEVBRCgmZm5ldy0+aHdfbGlzdCk7DQo+PiA+ID4gIAlyZWZjb3VudF9zZXQoJmZuZXctPnJl ZmNudCwgMSk7DQo+PiA+ID4gDQo+PiA+ID4gIAllcnIgPSB0Y2ZfZXh0c19pbml0KCZmbmV3LT5l eHRzLCBuZXQsIFRDQV9GTE9XRVJfQUNULCAwKTsNCj4+ID4gPiBAQCAtMTU2OSw3ICsxNTc3LDYg QEAgc3RhdGljIGludCBmbF9jaGFuZ2Uoc3RydWN0IG5ldCAqbmV0LA0KPj4gPiA+IHN0cnVjdA0K Pj4gPiA+IHNrX2J1ZmYgKmluX3NrYiwNCj4+ID4gPiAgCQlnb3RvIGVycm91dF9odzsNCj4+ID4g PiAgCX0NCj4+ID4gPiANCj4+ID4gPiAtCXJlZmNvdW50X2luYygmZm5ldy0+cmVmY250KTsNCj4+ ID4gPiAgCWlmIChmb2xkKSB7DQo+PiA+ID4gIAkJLyogRm9sZCBmaWx0ZXIgd2FzIGRlbGV0ZWQg Y29uY3VycmVudGx5LiBSZXRyeSBsb29rdXAuDQo+PiA+ID4gKi8NCj4+ID4gPiAgCQlpZiAoZm9s ZC0+ZGVsZXRlZCkgew0KPj4gPiA+IEBAIC0xNTkxLDYgKzE1OTgsNyBAQCBzdGF0aWMgaW50IGZs X2NoYW5nZShzdHJ1Y3QgbmV0ICpuZXQsDQo+PiA+ID4gc3RydWN0DQo+PiA+ID4gc2tfYnVmZiAq aW5fc2tiLA0KPj4gPiA+ICAJCQlpbl9odCA9IHRydWU7DQo+PiA+ID4gIAkJfQ0KPj4gPiA+IA0K Pj4gPiA+ICsJCXJlZmNvdW50X2luYygmZm5ldy0+cmVmY250KTsNCj4+ID4gPiAgCQlyaGFzaHRh YmxlX3JlbW92ZV9mYXN0KCZmb2xkLT5tYXNrLT5odCwNCj4+ID4gPiAgCQkJCSAgICAgICAmZm9s ZC0+aHRfbm9kZSwNCj4+ID4gPiAgCQkJCSAgICAgICBmb2xkLT5tYXNrLT5maWx0ZXJfaHRfcGFy YW1zKTsNCj4+ID4gPiBAQCAtMTYzMSw2ICsxNjM5LDcgQEAgc3RhdGljIGludCBmbF9jaGFuZ2Uo c3RydWN0IG5ldCAqbmV0LA0KPj4gPiA+IHN0cnVjdA0KPj4gPiA+IHNrX2J1ZmYgKmluX3NrYiwN Cj4+ID4gPiAgCQlpZiAoZXJyKQ0KPj4gPiA+ICAJCQlnb3RvIGVycm91dF9odzsNCj4+ID4gPiAN Cj4+ID4gPiArCQlyZWZjb3VudF9pbmMoJmZuZXctPnJlZmNudCk7DQo+PiA+ID4gIAkJZm5ldy0+ aGFuZGxlID0gaGFuZGxlOw0KPj4gPiA+ICAJCWxpc3RfYWRkX3RhaWxfcmN1KCZmbmV3LT5saXN0 LCAmZm5ldy0+bWFzay0+ZmlsdGVycyk7DQo+PiA+ID4gIAkJc3Bpbl91bmxvY2soJnRwLT5sb2Nr KTsNCj4+ID4gPiBAQCAtMTY0MiwxOSArMTY1MSwyMCBAQCBzdGF0aWMgaW50IGZsX2NoYW5nZShz dHJ1Y3QgbmV0ICpuZXQsDQo+PiA+ID4gc3RydWN0DQo+PiA+ID4gc2tfYnVmZiAqaW5fc2tiLA0K Pj4gPiA+ICAJa2ZyZWUobWFzayk7DQo+PiA+ID4gIAlyZXR1cm4gMDsNCj4+ID4gPiANCj4+ID4g PiArZXJyb3V0X2h0Og0KPj4gPiA+ICsJc3Bpbl9sb2NrKCZ0cC0+bG9jayk7DQo+PiA+ID4gIGVy cm91dF9odzoNCj4+ID4gPiArCWZuZXctPmRlbGV0ZWQgPSB0cnVlOw0KPj4gPiA+ICAJc3Bpbl91 bmxvY2soJnRwLT5sb2NrKTsNCj4+ID4gPiAgCWlmICghdGNfc2tpcF9odyhmbmV3LT5mbGFncykp DQo+PiA+ID4gIAkJZmxfaHdfZGVzdHJveV9maWx0ZXIodHAsIGZuZXcsIHJ0bmxfaGVsZCwgTlVM TCk7DQo+PiA+ID4gLWVycm91dF9odDoNCj4+ID4gPiAgCWlmIChpbl9odCkNCj4+ID4gPiAgCQly aGFzaHRhYmxlX3JlbW92ZV9mYXN0KCZmbmV3LT5tYXNrLT5odCwgJmZuZXctPmh0X25vZGUsDQo+ PiA+ID4gIAkJCQkgICAgICAgZm5ldy0+bWFzay0+ZmlsdGVyX2h0X3BhcmFtcyk7DQo+PiA+ID4g IGVycm91dF9tYXNrOg0KPj4gPiA+ICAJZmxfbWFza19wdXQoaGVhZCwgZm5ldy0+bWFzayk7DQo+ PiA+ID4gIGVycm91dDoNCj4+ID4gPiAtCXRjZl9leHRzX2dldF9uZXQoJmZuZXctPmV4dHMpOw0K Pj4gPiA+IC0JdGNmX3F1ZXVlX3dvcmsoJmZuZXctPnJ3b3JrLCBmbF9kZXN0cm95X2ZpbHRlcl93 b3JrKTsNCj4+ID4gPiArCV9fZmxfcHV0KGZuZXcpOw0KPj4gPiA+ICBlcnJvdXRfdGI6DQo+PiA+ ID4gIAlrZnJlZSh0Yik7DQo+PiA+ID4gIGVycm91dF9tYXNrX2FsbG9jOg0KPj4gPiA+IEBAIC0x Njk5LDE2ICsxNzA5LDQ0IEBAIHN0YXRpYyB2b2lkIGZsX3dhbGsoc3RydWN0IHRjZl9wcm90byAq dHAsDQo+PiA+ID4gc3RydWN0IHRjZl93YWxrZXIgKmFyZywNCj4+ID4gPiAgCX0NCj4+ID4gPiAg fQ0KPj4gPiA+IA0KPj4gPiA+ICtzdGF0aWMgc3RydWN0IGNsc19mbF9maWx0ZXIgKg0KPj4gPiA+ ICtmbF9nZXRfbmV4dF9od19maWx0ZXIoc3RydWN0IHRjZl9wcm90byAqdHAsIHN0cnVjdCBjbHNf ZmxfZmlsdGVyDQo+PiA+ID4gKmYsDQo+PiA+ID4gYm9vbCBhZGQpDQo+PiA+ID4gK3sNCj4+ID4g PiArCXN0cnVjdCBjbHNfZmxfaGVhZCAqaGVhZCA9IGZsX2hlYWRfZGVyZWZlcmVuY2UodHApOw0K Pj4gPiA+ICsNCj4+ID4gPiArCXNwaW5fbG9jaygmdHAtPmxvY2spOw0KPj4gPiA+ICsJaWYgKCFm KSB7DQo+PiA+ID4gKwkJaWYgKGxpc3RfZW1wdHkoJmhlYWQtPmh3X2ZpbHRlcnMpKSB7DQo+PiA+ ID4gKwkJCXNwaW5fdW5sb2NrKCZ0cC0+bG9jayk7DQo+PiA+ID4gKwkJCXJldHVybiBOVUxMOw0K Pj4gPiA+ICsJCX0NCj4+ID4gDQo+PiA+IFNob3VsZG4ndCB0aGlzIGJlIGEgcHJlLWNvbmRpdGlv biB0byB0aGUgd2hvbGUgZnVuY3Rpb24gPyBpIG1lYW4NCj4+ID4gcmVnYXJkbGVzcyBvZiB3aGV0 aGVyICdmJyBpcyBOVUxMIG9yIG5vdCA/DQo+PiANCj4+IExpc3QgY2FuJ3QgYmUgZW1wdHkgaWYg d2UgYWxyZWFkeSBoYXZlIGFuIGVsZW1lbnQgb2YgdGhlIGxpc3QgKGYpLCBzbw0KPj4gd2h5IGNo ZWNrIHRoaXMgb24gZXZlcnkgaXRlcmF0aW9uPw0KPj4gDQo+DQo+IEJlY2F1c2UgeW91IHJlbGVh c2UgdGhlIGxvY2sgb24gZXZlcnkgaXRlcmF0aW9uLCB5b3UgY2FuJ3QganVzdCBhc3N1bWUNCj4g dGhhdCB0aGUgbGlzdCBpcyBzdGlsbCBpbnRhY3QuDQo+DQo+PiA+ID4gKw0KPj4gPiA+ICsJCWYg PSBsaXN0X2ZpcnN0X2VudHJ5KCZoZWFkLT5od19maWx0ZXJzLCBzdHJ1Y3QNCj4+ID4gPiBjbHNf ZmxfZmlsdGVyLA0KPj4gPiA+ICsJCQkJICAgICBod19saXN0KTsNCj4+ID4gPiArCX0gZWxzZSB7 DQo+PiA+ID4gKwkJZiA9IGxpc3RfbmV4dF9lbnRyeShmLCBod19saXN0KTsNCj4+ID4gPiArCX0N Cj4+ID4gPiArDQo+PiA+IA0KPj4gPiBNYXliZSBpZiB5b3UgdXNlICBsaXN0X2Zvcl9lYWNoX2Vu dHJ5X2NvbnRpbnVlIGJlbG93LCBtaWdodA0KPj4gPiBzaW1wbGlmeQ0KPj4gPiB0aGUgYWJvdmUg bG9naWMuIGl0IGlzIHdlaXJkIHRoYXQgeW91IG5lZWQgdG8gZmlndXJlIG91dCBuZXh0IGVudHJ5 DQo+PiA+IHRoZW4gY2FsbCBsaXN0X2Zvcl9lYWNoX2Zyb20sIGxpc3QgJ2NvbnRpbnVlJyB2YXJp YXRpb24gaXMgbWFkZSBmb3INCj4+ID4gc3VjaCB1c2UgY2FzZXMuDQo+PiANCj4+IGxpc3RfZm9y X2VhY2hfZW50cnlfY29udGludWUgcmVxdWlyZXMgaW5pdGlhbGl6ZWQgY3Vyc29yIGFuZCB3aWxs DQo+PiBza2lwDQo+PiBmaXJzdCBlbGVtZW50IGlmIHdlIG9idGFpbiBpbml0aWFsIGN1cnNvciB3 aXRoIGxpc3RfZmlyc3RfZW50cnkoKS4gV2UNCj4+IGNhbiBoYXZlIHR3byBsb29wcyAtIG9uZSB0 aGF0IHVzZXMgbGlzdF9mb3JfZWFjaF9lbnRyeSBmb3IgaW5pdGlhbA0KPj4gaXRlcmF0aW9uLCBh bmQgYW5vdGhlciBvbmUgdGhhdCB1c2VzIGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWUgZm9y DQo+PiBjYXNlIHdoZW4gZiE9TlVMTCwgYnV0IEkgZG9uJ3Qgc2VlIGhvdyB0aGF0IHdvdWxkIGJl IGFueSBzaW1wbGVyLg0KPj4gDQo+DQo+IHlvdSBjYW4gc2V0IHRoZSBpbml0aWFsIGN1cnNvciB0 byBsaXN0LT5oZWFkIGFuZCBub3QgZmlyc3QgZW50cnkuDQo+DQo+IEl0IHdvdWxkIGJlIHNpbXBs ZXIgaWYgeW91IGRvOg0KPg0KPiBpZiAobGlzdF9lbXB0eSgpKQ0KPiAgICAgcmV0dXJuIE5VTEw7 DQo+IHBvcyA9IGYgPyBmIDogbGlzdC0+aGVhZDsNCj4gbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250 aW51ZShwb3MsIC4uLik7DQoNCk9rYXkuDQoNCj4NCj4+ID4gPiArCWxpc3RfZm9yX2VhY2hfZW50 cnlfZnJvbShmLCAmaGVhZC0+aHdfZmlsdGVycywgaHdfbGlzdCkgew0KPj4gPiA+ICsJCWlmICgh KGFkZCAmJiBmLT5kZWxldGVkKSAmJiByZWZjb3VudF9pbmNfbm90X3plcm8oJmYtDQo+PiA+ID4g PiByZWZjbnQpKSB7DQo+PiA+ID4gKwkJCXNwaW5fdW5sb2NrKCZ0cC0+bG9jayk7DQo+PiA+ID4g KwkJCXJldHVybiBmOw0KPj4gPiA+ICsJCX0NCj4+ID4gPiArCX0NCj4+ID4gPiArDQo+PiA+ID4g KwlzcGluX3VubG9jaygmdHAtPmxvY2spOw0KPj4gPiA+ICsJcmV0dXJuIE5VTEw7DQo+PiA+ID4g K30NCj4+ID4gPiArDQo+PiA+ID4gIHN0YXRpYyBpbnQgZmxfcmVvZmZsb2FkKHN0cnVjdCB0Y2Zf cHJvdG8gKnRwLCBib29sIGFkZCwNCj4+ID4gPiB0Y19zZXR1cF9jYl90ICpjYiwNCj4+ID4gPiAg CQkJdm9pZCAqY2JfcHJpdiwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQ0KPj4gPiA+ ICB7DQo+PiA+ID4gIAlzdHJ1Y3QgdGNfY2xzX2Zsb3dlcl9vZmZsb2FkIGNsc19mbG93ZXIgPSB7 fTsNCj4+ID4gPiAgCXN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrID0gdHAtPmNoYWluLT5ibG9jazsN Cj4+ID4gPiAtCXVuc2lnbmVkIGxvbmcgaGFuZGxlID0gMDsNCj4+ID4gPiAtCXN0cnVjdCBjbHNf ZmxfZmlsdGVyICpmOw0KPj4gPiA+ICsJc3RydWN0IGNsc19mbF9maWx0ZXIgKmYgPSBOVUxMOw0K Pj4gPiA+ICAJaW50IGVycjsNCj4+ID4gPiANCj4+ID4gPiAtCXdoaWxlICgoZiA9IGZsX2dldF9u ZXh0X2ZpbHRlcih0cCwgJmhhbmRsZSkpKSB7DQo+PiA+ID4gKwl3aGlsZSAoKGYgPSBmbF9nZXRf bmV4dF9od19maWx0ZXIodHAsIGYsIGFkZCkpKSB7DQo+PiA+ID4gIAkJaWYgKHRjX3NraXBfaHco Zi0+ZmxhZ3MpKQ0KPj4gPiA+ICAJCQlnb3RvIG5leHRfZmxvdzsNCj4+ID4gDQo+PiA+IHRoaXMg Y2FuIG5ldmVyIGJlIHRydWUgYXMgaXQgaXMgYWxyZWFkeSBhIHByZS1jb25kaXRpb24gZm9yDQo+ PiA+IGZsX2h3X3JlcGxhY2VfZmlsdGVyIHdoaWNoIGFjdHVhbGx5IGFkZHMgIHRvIHRoZSBod19m aWx0ZXJzIGxpc3QsIGkNCj4+ID4gdGhpbmsgaXQgbmVlZHMgdG8gYmUgcmVtb3ZlZC4gaWYgaXQg aXMsIHRoZW4gaSB0aGluayBpdCBzaG91bGQgYmUNCj4+ID4gcGFydA0KPj4gPiBvZiBmbF9nZXRf bmV4dF9od19maWx0ZXIgYW5kIG5vdCB0aGUgY2FsbGVyIHJlc3BvbnNpYmlsaXR5Lg0KPj4gDQo+ PiBHb29kIGNhdGNoLg0KPj4gDQo+PiA+ID4gQEAgLTE3NTcsNyArMTc5NSw2IEBAIHN0YXRpYyBp bnQgZmxfcmVvZmZsb2FkKHN0cnVjdCB0Y2ZfcHJvdG8NCj4+ID4gPiAqdHAsDQo+PiA+ID4gYm9v bCBhZGQsIHRjX3NldHVwX2NiX3QgKmNiLA0KPj4gPiA+ICAJCQkJCSAgYWRkKTsNCj4+ID4gPiAg CQlzcGluX3VubG9jaygmdHAtPmxvY2spOw0KPj4gPiA+ICBuZXh0X2Zsb3c6DQo+PiA+ID4gLQkJ aGFuZGxlKys7DQo+PiA+ID4gIAkJX19mbF9wdXQoZik7DQo+PiA+ID4gIAl9DQo+PiA+ID4gDQoN Cg==