From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50068.outbound.protection.outlook.com [40.107.5.68]) by dpdk.org (Postfix) with ESMTP id 6D7962C28 for ; Fri, 15 Mar 2019 01:31:55 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=L65tOoihNjG1hx2RBGxS6oCZSTX70/WvblnloDVZy98=; b=gfIjF7nPdg138V/dCDRd0k13xwx4nEO8V8175b0A5S6T6GwJeWBCVw2YxS9dwqCyViF0nuPhaqU3AkGivzmrTxxkljLcWN9Fk8gVTr8mXgLO01re6mkcPLUl2sgh6CcDwh1I/PClrBEVGkhnwtqOgjGKgT2wLu//9k55Yajtf1Y= Received: from AM6PR08MB3672.eurprd08.prod.outlook.com (20.177.115.76) by AM6PR08MB4422.eurprd08.prod.outlook.com (20.179.7.77) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1709.14; Fri, 15 Mar 2019 00:31:54 +0000 Received: from AM6PR08MB3672.eurprd08.prod.outlook.com ([fe80::4d90:78f1:e670:14d5]) by AM6PR08MB3672.eurprd08.prod.outlook.com ([fe80::4d90:78f1:e670:14d5%3]) with mapi id 15.20.1686.021; Fri, 15 Mar 2019 00:31:54 +0000 From: Honnappa Nagarahalli To: Dharmik Thakkar , "Wang, Yipeng1" CC: "Gobriel, Sameh" , "Richardson, Bruce" , "De Lara Guarch, Pablo" , "Mcnamara, John" , "Kovacevic, Marko" , "dev@dpdk.org" , "Tai, Charlie" , nd , nd Thread-Topic: [RFC 1/2] hash: add lock free support for extendable bucket Thread-Index: AQHU0I5AM81Un2IGzU6mnfOek3E+qqYAeyMAgABJ+QCACtsNgA== Date: Fri, 15 Mar 2019 00:31:54 +0000 Message-ID: References: <20190302002334.7911-1-dharmik.thakkar@arm.com> <20190302002334.7911-2-dharmik.thakkar@arm.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Honnappa.Nagarahalli@arm.com; x-originating-ip: [217.140.111.135] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3a7d51f1-c00a-4db4-1958-08d6a8dd9fc3 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM6PR08MB4422; x-ms-traffictypediagnostic: AM6PR08MB4422: nodisclaimer: True x-microsoft-antispam-prvs: x-forefront-prvs: 09778E995A x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(376002)(136003)(366004)(396003)(346002)(39860400002)(199004)(189003)(74316002)(305945005)(55016002)(14444005)(7696005)(256004)(25786009)(72206003)(7736002)(6246003)(2906002)(14454004)(99286004)(6436002)(53936002)(76176011)(11346002)(446003)(97736004)(102836004)(5660300002)(106356001)(52536014)(26005)(186003)(105586002)(6116002)(3846002)(71190400001)(68736007)(93886005)(71200400001)(8936002)(66066001)(9686003)(81166006)(81156014)(316002)(229853002)(8676002)(478600001)(486006)(6506007)(110136005)(86362001)(4326008)(54906003)(476003)(33656002)(21314003); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR08MB4422; H:AM6PR08MB3672.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: FPZ9fplKbeUVfezQlCXcvL4UcAZeR8bwqCbNtTmlVGFwEsA+fGFaXc+NxL0y6FIsx+Xqkw7TVixdreKESGPEO7GeTbSe8owICHNWeDokom8LYUJD9JA6hmsu9FjOl38fCCaHHuIhZsUuOkeWSW5WNI/7IzrRnPeAWQWmchVe97xkEu97TbiIDTM26cW1CcY0RQqhFDCOeTG4dVHGrNlfTSSYPsrxvTyC5+40LN3d1w+FcXXV06KJk51hlmlgCC8VEfgXowY1xTvBmUYc/HbgNseFlXWx9uSg7k9On0LQbqPw9+6MncpKzvCasCzS4V5lSGlJN/ultjszvkwW0qxbAN2K0/yUtqu1m7D4by44thB957ojJpJa7ZOu/KLW+m6TZUWxCihb1BSYEjzh+pCAPSjoTcfvSz2GhoIl0JvscaA= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3a7d51f1-c00a-4db4-1958-08d6a8dd9fc3 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Mar 2019 00:31:54.0395 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4422 Subject: Re: [dpdk-dev] [RFC 1/2] hash: add lock free support for extendable bucket X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 15 Mar 2019 00:31:55 -0000 PHNuaXA+DQoNCj4gPj4gQEAgLTEwNzIsMTAgKzEwNzEsMjMgQEAgX19ydGVfaGFzaF9hZGRfa2V5 X3dpdGhfaGFzaChjb25zdCBzdHJ1Y3QNCj4gcnRlX2hhc2ggKmgsIGNvbnN0IHZvaWQgKmtleSwN Cj4gPj4gCWJrdF9pZCA9ICh1aW50MzJfdCkoKHVpbnRwdHJfdClleHRfYmt0X2lkKSAtIDE7DQo+ ID4+IAkvKiBVc2UgdGhlIGZpcnN0IGxvY2F0aW9uIG9mIHRoZSBuZXcgYnVja2V0ICovDQo+ID4+ IAkoaC0+YnVja2V0c19leHRbYmt0X2lkXSkuc2lnX2N1cnJlbnRbMF0gPSBzaG9ydF9zaWc7DQo+ ID4+IC0JKGgtPmJ1Y2tldHNfZXh0W2JrdF9pZF0pLmtleV9pZHhbMF0gPSBuZXdfaWR4Ow0KPiA+ PiArCS8qIEtleSBjYW4gYmUgb2YgYXJiaXRyYXJ5IGxlbmd0aCwgc28gaXQgaXMNCj4gPj4gKwkg KiBub3QgcG9zc2libGUgdG8gc3RvcmUgaXQgYXRvbWljYWxseS4NCj4gPj4gKwkgKiBIZW5jZSB0 aGUgbmV3IGtleSBlbGVtZW50J3MgbWVtb3J5IHN0b3Jlcw0KPiA+PiArCSAqIChrZXkgYXMgd2Vs bCBhcyBkYXRhKSBzaG91bGQgYmUgY29tcGxldGUNCj4gPj4gKwkgKiBiZWZvcmUgaXQgaXMgcmVm ZXJlbmNlZC4NCj4gPj4gKwkgKi8NCj4gPj4gKwlfX2F0b21pY19zdG9yZV9uKCYoaC0+YnVja2V0 c19leHRbYmt0X2lkXSkua2V5X2lkeFswXSwNCj4gPj4gKwkJCSBuZXdfaWR4LA0KPiA+PiArCQkJ IF9fQVRPTUlDX1JFTEVBU0UpOw0KPiA+IFtXYW5nLCBZaXBlbmddIFNpbmNlIGl0IGhhcyBub3Qg YmVlbiBsaW5rZWQgYW5kIGxhdGVyIG9uIHRoZSBsaW5raW5nDQo+ID4gaXMgcHJvdGVjdGVkIGJ5 IHJlbGVhc2UsIGRvIHdlIHJlYWxseSBuZWVkIGF0b21pYyBzdG9yZSBoZXJlPw0KPiBBdG9taWMg c3RvcmUgaXMgdXNlZCBoZXJlIHRvIG1haW50YWluIHRoZSBjb2RlIGNvbnNpc3RlbmN5Lg0KQWdy ZWUgdGhlIHJlbGVhc2Ugb3JkZXIgaXMgbm90IHJlcXVpcmVkLiBSZW1vdmluZyBpdCBkb2VzIG5v dCBoZWxwIG11Y2ggYXMgaXQgaXMgb25seSBmb3IgdGhlIDFzdCBlbGVtZW50IG9mIGEgbmV3IGJ1 Y2tldC4NCg0KPiA+DQo+ID4+IAkvKiBMaW5rIHRoZSBuZXcgYnVja2V0IHRvIHNlYyBidWNrZXQg bGlua2VkIGxpc3QgKi8NCj4gPj4gCWxhc3QgPSBydGVfaGFzaF9nZXRfbGFzdF9ia3Qoc2VjX2Jr dCk7DQo+ID4+IC0JbGFzdC0+bmV4dCA9ICZoLT5idWNrZXRzX2V4dFtia3RfaWRdOw0KPiA+PiAr CS8qIE5ldyBidWNrZXQncyBtZW1vcnkgc3RvcmVzIChrZXkgYXMgd2VsbCBhcyBkYXRhKQ0KPiA+ PiArCSAqIHNob3VsZCBiZSBjb21wbGV0ZSBiZWZvcmUgaXQgaXMgcmVmZXJlbmNlZA0KPiA+PiAr CSAqLw0KPiA+PiArCV9fYXRvbWljX3N0b3JlX24oJmxhc3QtPm5leHQsDQo+ID4+ICsJCQkgJmgt PmJ1Y2tldHNfZXh0W2JrdF9pZF0sDQo+ID4+ICsJCQkgX19BVE9NSUNfUkVMRUFTRSk7DQpUaGUg Y29ycmVzcG9uZGluZyBsb2FkLWFjcXVpcmUgaXMgbWlzc2luZyBpbiB0aGUgJ0ZPUl9FQUNIX0JV Q0tFVCcgbWFjcm8NCg0KPiA+PiAJX19oYXNoX3J3X3dyaXRlcl91bmxvY2soaCk7DQo+ID4+IAly ZXR1cm4gbmV3X2lkeCAtIDE7DQo+ID4+DQo+ID4+IEBAIC0xMzY2LDcgKzEzNzgsOCBAQCByZW1v dmVfZW50cnkoY29uc3Qgc3RydWN0IHJ0ZV9oYXNoICpoLCBzdHJ1Y3QNCj4gPj4gcnRlX2hhc2hf YnVja2V0ICpia3QsIHVuc2lnbmVkIGkpDQo+ID4+ICogZW1wdHkgc2xvdC4NCj4gPj4gKi8NCj4g Pj4gc3RhdGljIGlubGluZSB2b2lkDQo+ID4+IC1fX3J0ZV9oYXNoX2NvbXBhY3RfbGwoc3RydWN0 IHJ0ZV9oYXNoX2J1Y2tldCAqY3VyX2JrdCwgaW50IHBvcykgew0KPiA+PiArX19ydGVfaGFzaF9j b21wYWN0X2xsKGNvbnN0IHN0cnVjdCBydGVfaGFzaCAqaCwNCj4gPj4gKwkJCXN0cnVjdCBydGVf aGFzaF9idWNrZXQgKmN1cl9ia3QsIGludCBwb3MpIHsNCj4gPj4gCWludCBpOw0KPiA+PiAJc3Ry dWN0IHJ0ZV9oYXNoX2J1Y2tldCAqbGFzdF9ia3Q7DQo+ID4+DQo+ID4+IEBAIC0xMzc3LDEwICsx MzkwLDI3IEBAIF9fcnRlX2hhc2hfY29tcGFjdF9sbChzdHJ1Y3QNCj4gcnRlX2hhc2hfYnVja2V0 DQo+ID4+ICpjdXJfYmt0LCBpbnQgcG9zKSB7DQo+ID4+DQo+ID4+IAlmb3IgKGkgPSBSVEVfSEFT SF9CVUNLRVRfRU5UUklFUyAtIDE7IGkgPj0gMDsgaS0tKSB7DQo+ID4+IAkJaWYgKGxhc3RfYmt0 LT5rZXlfaWR4W2ldICE9IEVNUFRZX1NMT1QpIHsNCj4gPj4gLQkJCWN1cl9ia3QtPmtleV9pZHhb cG9zXSA9IGxhc3RfYmt0LT5rZXlfaWR4W2ldOw0KPiA+PiAJCQljdXJfYmt0LT5zaWdfY3VycmVu dFtwb3NdID0gbGFzdF9ia3QtPnNpZ19jdXJyZW50W2ldOw0KPiA+PiArCQkJX19hdG9taWNfc3Rv cmVfbigmY3VyX2JrdC0+a2V5X2lkeFtwb3NdLA0KPiA+PiArCQkJCQkgbGFzdF9ia3QtPmtleV9p ZHhbaV0sDQo+ID4+ICsJCQkJCSBfX0FUT01JQ19SRUxFQVNFKTsNCj4gPj4gKwkJCWlmIChoLT5y ZWFkd3JpdGVfY29uY3VyX2xmX3N1cHBvcnQpIHsNCj4gPj4gKwkJCQkvKiBJbmZvcm0gdGhlIHJl YWRlcnMgdGhhdCB0aGUgdGFibGUgaGFzDQo+IGNoYW5nZWQNCj4gPj4gKwkJCQkgKiBTaW5jZSB0 aGVyZSBpcyBvbmUgd3JpdGVyLCBsb2FkIGFjcXVpcmVzIG9uDQo+ID4+ICsJCQkJICogdGJsX2No bmdfY250IGFyZSBub3QgcmVxdWlyZWQuDQo+ID4+ICsJCQkJICovDQo+ID4+ICsJCQkJX19hdG9t aWNfc3RvcmVfbihoLT50YmxfY2huZ19jbnQsDQo+ID4+ICsJCQkJCSAqaC0+dGJsX2NobmdfY250 ICsgMSwNCj4gPj4gKwkJCQkJIF9fQVRPTUlDX1JFTEVBU0UpOw0KPiA+PiArCQkJCS8qIFRoZSBz dG9yZXMgdG8gc2lnX2FsdCBhbmQgc2lnX2N1cnJlbnQgc2hvdWxkDQo+ID4+ICsJCQkJICogbm90 IG1vdmUgYWJvdmUgdGhlIHN0b3JlIHRvIHRibF9jaG5nX2NudC4NCj4gPj4gKwkJCQkgKi8NCj4g Pj4gKwkJCQlfX2F0b21pY190aHJlYWRfZmVuY2UoX19BVE9NSUNfUkVMRUFTRSk7DQo+ID4+ICsJ CQl9DQo+ID4+IAkJCWxhc3RfYmt0LT5zaWdfY3VycmVudFtpXSA9IE5VTExfU0lHTkFUVVJFOw0K PiA+PiAtCQkJbGFzdF9ia3QtPmtleV9pZHhbaV0gPSBFTVBUWV9TTE9UOw0KPiA+PiArCQkJX19h dG9taWNfc3RvcmVfbigmbGFzdF9ia3QtPmtleV9pZHhbaV0sDQo+ID4+ICsJCQkJCSBFTVBUWV9T TE9ULA0KPiA+PiArCQkJCQkgX19BVE9NSUNfUkVMRUFTRSk7DQo+ID4+IAkJCXJldHVybjsNCj4g Pj4gCQl9DQo+ID4+IAl9DQo+ID4+IEBAIC0xNDQ5LDcgKzE0NzksNyBAQCBfX3J0ZV9oYXNoX2Rl bF9rZXlfd2l0aF9oYXNoKGNvbnN0IHN0cnVjdA0KPiBydGVfaGFzaCAqaCwgY29uc3Qgdm9pZCAq a2V5LA0KPiA+PiAJLyogbG9vayBmb3Iga2V5IGluIHByaW1hcnkgYnVja2V0ICovDQo+ID4+IAly ZXQgPSBzZWFyY2hfYW5kX3JlbW92ZShoLCBrZXksIHByaW1fYmt0LCBzaG9ydF9zaWcsICZwb3Mp Ow0KPiA+PiAJaWYgKHJldCAhPSAtMSkgew0KPiA+PiAtCQlfX3J0ZV9oYXNoX2NvbXBhY3RfbGwo cHJpbV9ia3QsIHBvcyk7DQo+ID4+ICsJCV9fcnRlX2hhc2hfY29tcGFjdF9sbChoLCBwcmltX2Jr dCwgcG9zKTsNCj4gPj4gCQlsYXN0X2JrdCA9IHByaW1fYmt0LT5uZXh0Ow0KPiA+PiAJCXByZXZf Ymt0ID0gcHJpbV9ia3Q7DQo+ID4+IAkJZ290byByZXR1cm5fYmt0Ow0KPiA+PiBAQCAtMTQ2MSw3 ICsxNDkxLDcgQEAgX19ydGVfaGFzaF9kZWxfa2V5X3dpdGhfaGFzaChjb25zdCBzdHJ1Y3QNCj4g cnRlX2hhc2ggKmgsIGNvbnN0IHZvaWQgKmtleSwNCj4gPj4gCUZPUl9FQUNIX0JVQ0tFVChjdXJf Ymt0LCBzZWNfYmt0KSB7DQo+ID4+IAkJcmV0ID0gc2VhcmNoX2FuZF9yZW1vdmUoaCwga2V5LCBj dXJfYmt0LCBzaG9ydF9zaWcsICZwb3MpOw0KPiA+PiAJCWlmIChyZXQgIT0gLTEpIHsNCj4gPj4g LQkJCV9fcnRlX2hhc2hfY29tcGFjdF9sbChjdXJfYmt0LCBwb3MpOw0KPiA+PiArCQkJX19ydGVf aGFzaF9jb21wYWN0X2xsKGgsIGN1cl9ia3QsIHBvcyk7DQo+ID4+IAkJCWxhc3RfYmt0ID0gc2Vj X2JrdC0+bmV4dDsNCj4gPj4gCQkJcHJldl9ia3QgPSBzZWNfYmt0Ow0KPiA+PiAJCQlnb3RvIHJl dHVybl9ia3Q7DQo+ID4+IEBAIC0xNDg4LDExICsxNTE4LDIxIEBAIF9fcnRlX2hhc2hfZGVsX2tl eV93aXRoX2hhc2goY29uc3Qgc3RydWN0DQo+IHJ0ZV9oYXNoICpoLCBjb25zdCB2b2lkICprZXks DQo+ID4+IAl9DQo+ID4+IAkvKiBmb3VuZCBlbXB0eSBidWNrZXQgYW5kIHJlY3ljbGUgKi8NCj4g Pj4gCWlmIChpID09IFJURV9IQVNIX0JVQ0tFVF9FTlRSSUVTKSB7DQo+ID4+IC0JCXByZXZfYmt0 LT5uZXh0ID0gbGFzdF9ia3QtPm5leHQgPSBOVUxMOw0KPiA+PiArCQlfX2F0b21pY19zdG9yZV9u KCZwcmV2X2JrdC0+bmV4dCwNCj4gPj4gKwkJCQkgTlVMTCwNCj4gPj4gKwkJCQkgX19BVE9NSUNf UkVMRUFTRSk7DQo+ID4+IAkJdWludDMyX3QgaW5kZXggPSBsYXN0X2JrdCAtIGgtPmJ1Y2tldHNf ZXh0ICsgMTsNCj4gPj4gLQkJcnRlX3Jpbmdfc3BfZW5xdWV1ZShoLT5mcmVlX2V4dF9ia3RzLCAo dm9pZA0KPiAqKSh1aW50cHRyX3QpaW5kZXgpOw0KPiA+PiAtCX0NCj4gPj4gKwkJaWYgKCFoLT5u b19mcmVlX29uX2RlbCkNCj4gPj4gKwkJCXJ0ZV9yaW5nX3NwX2VucXVldWUoaC0+ZnJlZV9leHRf Ymt0cywgKHZvaWQNCj4gKikodWludHB0cl90KWluZGV4KTsNCj4gPj4gKwkJZWxzZSB7DQo+ID4+ ICsJCQlzdHJ1Y3QgcnRlX2hhc2hfa2V5ICprZXlfc2xvdCA9DQo+ID4+ICsJCQkJKHN0cnVjdCBy dGVfaGFzaF9rZXkgKikoDQo+ID4+ICsJCQkJKGNoYXIgKiloLT5rZXlfc3RvcmUgKw0KPiA+PiAr CQkJCXJldCAqIGgtPmtleV9lbnRyeV9zaXplKTsNCj4gPj4gKwkJCWtleV9zbG90LT5leHRfYmt0 X3RvX2ZyZWUgPSBpbmRleDsNCj4gPiBbV2FuZywgWWlwZW5nXSBJcyB0aGVyZSBjaGFuY2UgdGhh dCBhIGtleV9zbG90IG1heSBhbHJlYWR5IGhhdmUgb25lDQo+ID4gcHJldmlvdXMgZXh0X2JrdCBh bmQgbm93IGdvdCBvdmVyd3JpdHRlbiwgc28gdGhhdCB0aGUgcHJldmlvdXMgb25lIGdvbmUNCj4g Zm9yZXZlcj8NCj4gTm8sIGl0IGlzIG5vdCBwb3NzaWJsZS4gU2luY2UsIHRoZSBpbmRleCBpcyBi ZWluZyBzdG9yZWQgaW4gYSBrZXlfc2xvdCB3aGljaCBpcw0KPiBhc3NvY2lhdGVkIHdpdGggYSBk ZWxldGVkIGtleS4NCj4gPj4NCj4gPj4gKwkJfQ0KPiA+PiArCX0NCj4gPj4gCV9faGFzaF9yd193 cml0ZXJfdW5sb2NrKGgpOw0KPiA+PiAJcmV0dXJuIHJldDsNCj4gPj4gfQ0KPiA+PiBAQCAtMTU2 Nyw2ICsxNjA3LDE0IEBAIHJ0ZV9oYXNoX2ZyZWVfa2V5X3dpdGhfcG9zaXRpb24oY29uc3Qgc3Ry dWN0DQo+IHJ0ZV9oYXNoICpoLA0KPiA+PiAJCQkJKHZvaWQgKikoKHVpbnRwdHJfdClwb3NpdGlv bikpOw0KPiA+PiAJfQ0KPiA+Pg0KPiA+PiArCWNvbnN0IHN0cnVjdCBydGVfaGFzaF9rZXkgKmtl eV9zbG90ID0gKGNvbnN0IHN0cnVjdCBydGVfaGFzaF9rZXkgKikoDQo+ID4+ICsJCQkJCQkoY29u c3QgY2hhciAqKWgtPmtleV9zdG9yZSArDQo+ID4+ICsJCQkJCQlwb3NpdGlvbiAqIGgtPmtleV9l bnRyeV9zaXplKTsNCj4gPj4gKwl1aW50MzJfdCBpbmRleCA9IGtleV9zbG90LT5leHRfYmt0X3Rv X2ZyZWU7DQo+ID4+ICsJaWYgKCFpbmRleCkNCj4gPj4gKwkJLyogUmVjeWNsZSBlbXB0eSBleHQg Ymt0IHRvIGZyZWUgbGlzdC4gKi8NCj4gPj4gKwkJcnRlX3Jpbmdfc3BfZW5xdWV1ZShoLT5mcmVl X2V4dF9ia3RzLCAodm9pZA0KPiAqKSh1aW50cHRyX3QpaW5kZXgpOw0KU3VnZ2VzdCBtb3Zpbmcg dGhpcyB0byBiZWZvcmUgZnJlZWluZyB0aGUga2V5X2luZGV4IHRvIGF2b2lkIHJhY2UgY29uZGl0 aW9ucy4NCmtleV9zbG90LT5leHRfYmt0X3RvX2ZyZWUgbmVlZHMgdG8gYmUgc2V0IHRvIDAgYWZ0 ZXIgZnJlZWluZy4NCg0KPiA+PiArDQo+ID4+IAlyZXR1cm4gMDsNCj4gPj4gfQ0KPiA+Pg0KPiA+ PiBAQCAtMTg1NSw2ICsxOTAzLDkgQEAgX19ydGVfaGFzaF9sb29rdXBfYnVsa19sZihjb25zdCBz dHJ1Y3QNCj4gcnRlX2hhc2ggKmgsIGNvbnN0IHZvaWQgKiprZXlzLA0KPiA+PiAJCXJ0ZV9wcmVm ZXRjaDAoc2Vjb25kYXJ5X2JrdFtpXSk7DQo+ID4+IAl9DQo+ID4+DQo+ID4+ICsJZm9yIChpID0g MDsgaSA8IG51bV9rZXlzOyBpKyspDQo+ID4+ICsJCXBvc2l0aW9uc1tpXSA9IC1FTk9FTlQ7DQo+ ID4gW1dhbmcsIFlpcGVuZ10gU28gaXMgdGhpcyBmb3IgcGVyZm9ybWFuY2UgcmVhc29uPw0KPiBS ZXNldHRpbmcgcG9zaXRpb25zW10gb24gZWFjaCBpdGVyYXRpb24gb2YgZG/igKZ3aGlsZSgpIHJl cXVpcmUg4oCYaGl0c+KAmSB0byBiZSByZXNldA0KPiBhcyB3ZWxsLCB3aGljaCBjYXVzZXMgcGVy Zm9ybWFuY2UgaGl0Lg0KPiA+PiArDQo+ID4+IAlkbyB7DQo+ID4+IAkJLyogTG9hZCB0aGUgdGFi bGUgY2hhbmdlIGNvdW50ZXIgYmVmb3JlIHRoZSBsb29rdXANCj4gPj4gCQkgKiBzdGFydHMuIEFj cXVpcmUgc2VtYW50aWNzIHdpbGwgbWFrZSBzdXJlIHRoYXQgQEAgLTE4OTksNw0KPiArMTk1MCw2 DQo+ID4+IEBAIF9fcnRlX2hhc2hfbG9va3VwX2J1bGtfbGYoY29uc3Qgc3RydWN0IHJ0ZV9oYXNo ICpoLCBjb25zdCB2b2lkDQo+ID4+ICoqa2V5cywNCj4gPj4NCj4gPj4gCQkvKiBDb21wYXJlIGtl eXMsIGZpcnN0IGhpdHMgaW4gcHJpbWFyeSBmaXJzdCAqLw0KPiA+PiAJCWZvciAoaSA9IDA7IGkg PCBudW1fa2V5czsgaSsrKSB7DQo+ID4+IC0JCQlwb3NpdGlvbnNbaV0gPSAtRU5PRU5UOw0KPiA+ PiAJCQl3aGlsZSAocHJpbV9oaXRtYXNrW2ldKSB7DQo+ID4+IAkJCQl1aW50MzJfdCBoaXRfaW5k ZXggPQ0KPiA+PiAJCQkJCQlfX2J1aWx0aW5fY3R6bChwcmltX2hpdG1hc2tbaV0pDQo+IEBAIC0x OTcyLDYgKzIwMjIsMzYgQEANCj4gPj4gX19ydGVfaGFzaF9sb29rdXBfYnVsa19sZihjb25zdCBz dHJ1Y3QgcnRlX2hhc2ggKmgsIGNvbnN0IHZvaWQgKiprZXlzLA0KPiA+PiAJCQljb250aW51ZTsN Cj4gPj4gCQl9DQo+ID4+DQo+ID4+ICsNCj4gPj4gKwkJLyogYWxsIGZvdW5kLCBkbyBub3QgbmVl ZCB0byBnbyB0aHJvdWdoIGV4dCBia3QgKi8NCj4gPj4gKwkJaWYgKGhpdHMgPT0gKCgxVUxMIDw8 IG51bV9rZXlzKSAtIDEpKSB7DQo+ID4+ICsJCQlpZiAoaGl0X21hc2sgIT0gTlVMTCkNCj4gPj4g KwkJCQkqaGl0X21hc2sgPSBoaXRzOw0KPiA+DQo+ID4gW1dhbmcsIFlpcGVuZ10gSSB0aGluayB5 b3UgbmVlZCB0byBjaGVjayB0aGUgdmVyc2lvbiBjb3VudGVyIGJlZm9yZQ0KPiA+IHJldHVybiwg YW5kIGhvdyBhYm91dCB0aGUgZmVuY2U/DQo+IElmIGFsbCB0aGUga2V5cyBhcmUgZm91bmQsIHRo ZXJlIGlzIG5vIG5lZWQgdG8gY2hlY2sgdGhlIGNvdW50ZXIuDQo+ID4+ICsJCQlyZXR1cm47DQo+ ID4+ICsJCX0NCj4gPj4gKwkJLyogbmVlZCB0byBjaGVjayBleHQgYnVja2V0cyBmb3IgbWF0Y2gg Ki8NCj4gPj4gKwkJaWYgKGgtPmV4dF90YWJsZV9zdXBwb3J0KSB7DQo+ID4+ICsJCQlmb3IgKGkg PSAwOyBpIDwgbnVtX2tleXM7IGkrKykgew0KPiA+PiArCQkJCWlmICgoaGl0cyAmICgxVUxMIDw8 IGkpKSAhPSAwKQ0KPiA+PiArCQkJCQljb250aW51ZTsNCj4gPj4gKwkJCQluZXh0X2JrdCA9IHNl Y29uZGFyeV9ia3RbaV0tPm5leHQ7DQo+ID4+ICsJCQkJRk9SX0VBQ0hfQlVDS0VUKGN1cl9ia3Qs IG5leHRfYmt0KSB7DQo+ID4+ICsJCQkJCWlmIChkYXRhICE9IE5VTEwpDQo+ID4+ICsJCQkJCQly ZXQgPSBzZWFyY2hfb25lX2J1Y2tldF9sZihoLA0KPiA+PiArCQkJCQkJCWtleXNbaV0sIHNpZ1tp XSwNCj4gPj4gKwkJCQkJCQkmZGF0YVtpXSwgY3VyX2JrdCk7DQo+ID4+ICsJCQkJCWVsc2UNCj4g Pj4gKwkJCQkJCXJldCA9IHNlYXJjaF9vbmVfYnVja2V0X2xmKGgsDQo+ID4+ICsJCQkJCQkJCWtl eXNbaV0sIHNpZ1tpXSwNCj4gPj4gKwkJCQkJCQkJTlVMTCwNCj4gY3VyX2JrdCk7DQo+ID4+ICsJ CQkJCWlmIChyZXQgIT0gLTEpIHsNCj4gPj4gKwkJCQkJCXBvc2l0aW9uc1tpXSA9IHJldDsNCj4g Pj4gKwkJCQkJCWhpdHMgfD0gMVVMTCA8PCBpOw0KPiA+PiArCQkJCQkJYnJlYWs7DQo+ID4+ICsJ CQkJCX0NCj4gPj4gKwkJCQl9DQo+ID4+ICsJCQl9DQo+ID4+ICsJCX0NCj4gPj4gCQkvKiBUaGUg bG9hZHMgb2Ygc2lnX2N1cnJlbnQgaW4gY29tcGFyZV9zaWduYXR1cmVzDQo+ID4+IAkJICogc2hv dWxkIG5vdCBtb3ZlIGJlbG93IHRoZSBsb2FkIGZyb20gdGJsX2NobmdfY250Lg0KPiA+PiAJCSAq Lw0KPiA+PiBAQCAtMTk4OCwzNCArMjA2OCw2IEBAIF9fcnRlX2hhc2hfbG9va3VwX2J1bGtfbGYo Y29uc3Qgc3RydWN0DQo+IHJ0ZV9oYXNoICpoLCBjb25zdCB2b2lkICoqa2V5cywNCj4gPj4gCQkJ CQlfX0FUT01JQ19BQ1FVSVJFKTsNCj4gPj4gCX0gd2hpbGUgKGNudF9iICE9IGNudF9hKTsNCj4g Pj4NCj4gPj4gLQkvKiBhbGwgZm91bmQsIGRvIG5vdCBuZWVkIHRvIGdvIHRocm91Z2ggZXh0IGJr dCAqLw0KPiA+PiAtCWlmICgoaGl0cyA9PSAoKDFVTEwgPDwgbnVtX2tleXMpIC0gMSkpIHx8ICFo LT5leHRfdGFibGVfc3VwcG9ydCkgew0KPiA+PiAtCQlpZiAoaGl0X21hc2sgIT0gTlVMTCkNCj4g Pj4gLQkJCSpoaXRfbWFzayA9IGhpdHM7DQo+ID4+IC0JCV9faGFzaF9yd19yZWFkZXJfdW5sb2Nr KGgpOw0KPiA+PiAtCQlyZXR1cm47DQo+ID4+IC0JfQ0KPiA+PiAtDQo+ID4+IC0JLyogbmVlZCB0 byBjaGVjayBleHQgYnVja2V0cyBmb3IgbWF0Y2ggKi8NCj4gPj4gLQlmb3IgKGkgPSAwOyBpIDwg bnVtX2tleXM7IGkrKykgew0KPiA+PiAtCQlpZiAoKGhpdHMgJiAoMVVMTCA8PCBpKSkgIT0gMCkN Cj4gPj4gLQkJCWNvbnRpbnVlOw0KPiA+PiAtCQluZXh0X2JrdCA9IHNlY29uZGFyeV9ia3RbaV0t Pm5leHQ7DQo+ID4+IC0JCUZPUl9FQUNIX0JVQ0tFVChjdXJfYmt0LCBuZXh0X2JrdCkgew0KPiA+ PiAtCQkJaWYgKGRhdGEgIT0gTlVMTCkNCj4gPj4gLQkJCQlyZXQgPSBzZWFyY2hfb25lX2J1Y2tl dF9sZihoLCBrZXlzW2ldLA0KPiA+PiAtCQkJCQkJc2lnW2ldLCAmZGF0YVtpXSwgY3VyX2JrdCk7 DQo+ID4+IC0JCQllbHNlDQo+ID4+IC0JCQkJcmV0ID0gc2VhcmNoX29uZV9idWNrZXRfbGYoaCwg a2V5c1tpXSwNCj4gPj4gLQkJCQkJCXNpZ1tpXSwgTlVMTCwgY3VyX2JrdCk7DQo+ID4+IC0JCQlp ZiAocmV0ICE9IC0xKSB7DQo+ID4+IC0JCQkJcG9zaXRpb25zW2ldID0gcmV0Ow0KPiA+PiAtCQkJ CWhpdHMgfD0gMVVMTCA8PCBpOw0KPiA+PiAtCQkJCWJyZWFrOw0KPiA+PiAtCQkJfQ0KPiA+PiAt CQl9DQo+ID4+IC0JfQ0KPiA+PiAtDQo+ID4+IAlpZiAoaGl0X21hc2sgIT0gTlVMTCkNCj4gPj4g CQkqaGl0X21hc2sgPSBoaXRzOw0KPiA+PiB9DQo+ID4+IGRpZmYgLS1naXQgYS9saWIvbGlicnRl X2hhc2gvcnRlX2N1Y2tvb19oYXNoLmgNCj4gPj4gYi9saWIvbGlicnRlX2hhc2gvcnRlX2N1Y2tv b19oYXNoLmgNCj4gPj4gaW5kZXggZWFjZGFhOGQ0Njg0Li4wNjJjYzJkZDAyOTYgMTAwNjQ0DQo+ ID4+IC0tLSBhL2xpYi9saWJydGVfaGFzaC9ydGVfY3Vja29vX2hhc2guaA0KPiA+PiArKysgYi9s aWIvbGlicnRlX2hhc2gvcnRlX2N1Y2tvb19oYXNoLmgNCj4gPj4gQEAgLTEyOSw2ICsxMjksMTQg QEAgc3RydWN0IGxjb3JlX2NhY2hlIHsNCj4gPj4NCj4gPj4gLyogU3RydWN0dXJlIHRoYXQgc3Rv cmVzIGtleS12YWx1ZSBwYWlyICovIHN0cnVjdCBydGVfaGFzaF9rZXkgew0KPiA+PiArCS8qIFN0 b3JlcyBpbmRleCBvZiBhbiBlbXB0eSBleHQgYmt0IHRvIGJlIHJlY3ljbGVkIG9uIGNhbGxpbmcN Cj4gPj4gKwkgKiBydGVfaGFzaF9kZWxfeHh4IEFQSXMuIFdoZW4gbG9jayBmcmVlIHJlYWQtd3Jp ZSBjb25jdXJyZW5jeSBpcw0KPiA+IFtXYW5nLCBZaXBlbmddIHR5cG8NCj4gV2lsbCB1cGRhdGUg aXQgaW4gdGhlIG5leHQgdmVyc2lvbi4NCj4gPj4gKwkgKiBlbmFibGVkLCBhbiBlbXB0eSBleHQg Ymt0IGNhbm5vdCBiZSBwdXQgaW50byBmcmVlIGxpc3QgaW1tZWRpYXRlbHkNCj4gPj4gKwkgKiAo YXMgcmVhZGVycyBtaWdodCBiZSB1c2luZyBpdCBzdGlsbCkuIEhlbmNlIGZyZWVpbmcgb2YgdGhl IGV4dCBia3QNCj4gPj4gKwkgKiBpcyBwaWdneS1iYWNrZWQgdG8gZnJlZWluZyBvZiB0aGUga2V5 IGluZGV4Lg0KPiA+PiArCSAqLw0KPiA+IFtXYW5nLCBZaXBlbmddIEkgYW0gdGhpbmtpbmcgaWYg dGhpcyBicmVha3MgdGhlICJndWFyYW50ZWUiIHByb3ZpZGVkDQo+ID4gYnkgZXh0IHRhYmxlLCBT aW5jZSBhIHdob2xlIGJ1Y2tldCBjb3VsZCBub3QgYmUgcmV1c2VkIGlmIG9uZSBrZXkgbm90DQo+ ID4gZnJlZWQuIElzIHRoZXJlIGFueSBmdW5kYW1lbnRhbCBpc3N1ZSB3aXRoIGEgbmV3IEFQSSB0 byByZWN5Y2xlIGV4dCBidWNrZXQgb3INCj4geW91IGp1c3QgZG8gbm90IHdhbnQgdG8gYWRkIGEg bmV3IEFQST8NCj4gV2l0aCBsb2NrLWZyZWUgZmVhdHVyZSwg4oCYZGVsZXRl4oCZIGJlY29tZXMg YSB0d28gc3RlcCBwcm9jZXNzIG9mIOKAmGRlbGV0ZeKAmSBhbmQNCj4g4oCYZnJlZeKAmS4gSW4g b3RoZXIgd29yZHMsIGl0IGNhbiBiZSB2aWV3ZWQgYnkgdGhlIGFwcGxpY2F0aW9ucyBhcyBhICdw cm9sb25nZWQNCj4gZGVsZXRl4oCZLiBJ4oCZbSBub3Qgc3VyZSBob3cgYWRkaW5nIGEgbmV3IEFQ SSB0byByZWN5Y2xlIGV4dCBidWNrZXQgd2lsbCBoZWxwDQo+IHNvbHZpbmcgdGhlIGlzc3VlLg0K PiA+PiArCXVpbnQzMl90IGV4dF9ia3RfdG9fZnJlZTsNCj4gPj4gKw0KPiA+PiAJdW5pb24gew0K PiA+PiAJCXVpbnRwdHJfdCBpZGF0YTsNCj4gPj4gCQl2b2lkICpwZGF0YTsNCj4gPj4gLS0NCj4g Pj4gMi4xNy4xDQoNCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id F14D8A0096 for ; Fri, 15 Mar 2019 01:31:57 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id ED2A5324D; Fri, 15 Mar 2019 01:31:56 +0100 (CET) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50068.outbound.protection.outlook.com [40.107.5.68]) by dpdk.org (Postfix) with ESMTP id 6D7962C28 for ; Fri, 15 Mar 2019 01:31:55 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=L65tOoihNjG1hx2RBGxS6oCZSTX70/WvblnloDVZy98=; b=gfIjF7nPdg138V/dCDRd0k13xwx4nEO8V8175b0A5S6T6GwJeWBCVw2YxS9dwqCyViF0nuPhaqU3AkGivzmrTxxkljLcWN9Fk8gVTr8mXgLO01re6mkcPLUl2sgh6CcDwh1I/PClrBEVGkhnwtqOgjGKgT2wLu//9k55Yajtf1Y= Received: from AM6PR08MB3672.eurprd08.prod.outlook.com (20.177.115.76) by AM6PR08MB4422.eurprd08.prod.outlook.com (20.179.7.77) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1709.14; Fri, 15 Mar 2019 00:31:54 +0000 Received: from AM6PR08MB3672.eurprd08.prod.outlook.com ([fe80::4d90:78f1:e670:14d5]) by AM6PR08MB3672.eurprd08.prod.outlook.com ([fe80::4d90:78f1:e670:14d5%3]) with mapi id 15.20.1686.021; Fri, 15 Mar 2019 00:31:54 +0000 From: Honnappa Nagarahalli To: Dharmik Thakkar , "Wang, Yipeng1" CC: "Gobriel, Sameh" , "Richardson, Bruce" , "De Lara Guarch, Pablo" , "Mcnamara, John" , "Kovacevic, Marko" , "dev@dpdk.org" , "Tai, Charlie" , nd , nd Thread-Topic: [RFC 1/2] hash: add lock free support for extendable bucket Thread-Index: AQHU0I5AM81Un2IGzU6mnfOek3E+qqYAeyMAgABJ+QCACtsNgA== Date: Fri, 15 Mar 2019 00:31:54 +0000 Message-ID: References: <20190302002334.7911-1-dharmik.thakkar@arm.com> <20190302002334.7911-2-dharmik.thakkar@arm.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Honnappa.Nagarahalli@arm.com; x-originating-ip: [217.140.111.135] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3a7d51f1-c00a-4db4-1958-08d6a8dd9fc3 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM6PR08MB4422; x-ms-traffictypediagnostic: AM6PR08MB4422: nodisclaimer: True x-microsoft-antispam-prvs: x-forefront-prvs: 09778E995A x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(376002)(136003)(366004)(396003)(346002)(39860400002)(199004)(189003)(74316002)(305945005)(55016002)(14444005)(7696005)(256004)(25786009)(72206003)(7736002)(6246003)(2906002)(14454004)(99286004)(6436002)(53936002)(76176011)(11346002)(446003)(97736004)(102836004)(5660300002)(106356001)(52536014)(26005)(186003)(105586002)(6116002)(3846002)(71190400001)(68736007)(93886005)(71200400001)(8936002)(66066001)(9686003)(81166006)(81156014)(316002)(229853002)(8676002)(478600001)(486006)(6506007)(110136005)(86362001)(4326008)(54906003)(476003)(33656002)(21314003); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR08MB4422; H:AM6PR08MB3672.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: FPZ9fplKbeUVfezQlCXcvL4UcAZeR8bwqCbNtTmlVGFwEsA+fGFaXc+NxL0y6FIsx+Xqkw7TVixdreKESGPEO7GeTbSe8owICHNWeDokom8LYUJD9JA6hmsu9FjOl38fCCaHHuIhZsUuOkeWSW5WNI/7IzrRnPeAWQWmchVe97xkEu97TbiIDTM26cW1CcY0RQqhFDCOeTG4dVHGrNlfTSSYPsrxvTyC5+40LN3d1w+FcXXV06KJk51hlmlgCC8VEfgXowY1xTvBmUYc/HbgNseFlXWx9uSg7k9On0LQbqPw9+6MncpKzvCasCzS4V5lSGlJN/ultjszvkwW0qxbAN2K0/yUtqu1m7D4by44thB957ojJpJa7ZOu/KLW+m6TZUWxCihb1BSYEjzh+pCAPSjoTcfvSz2GhoIl0JvscaA= Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3a7d51f1-c00a-4db4-1958-08d6a8dd9fc3 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Mar 2019 00:31:54.0395 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4422 Subject: Re: [dpdk-dev] [RFC 1/2] hash: add lock free support for extendable bucket X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Message-ID: <20190315003154.LHJc_V3PgFsT4iK4ORqY8cxZpXGvj1JzbLw5PupC5jk@z> PHNuaXA+DQoNCj4gPj4gQEAgLTEwNzIsMTAgKzEwNzEsMjMgQEAgX19ydGVfaGFzaF9hZGRfa2V5 X3dpdGhfaGFzaChjb25zdCBzdHJ1Y3QNCj4gcnRlX2hhc2ggKmgsIGNvbnN0IHZvaWQgKmtleSwN Cj4gPj4gCWJrdF9pZCA9ICh1aW50MzJfdCkoKHVpbnRwdHJfdClleHRfYmt0X2lkKSAtIDE7DQo+ ID4+IAkvKiBVc2UgdGhlIGZpcnN0IGxvY2F0aW9uIG9mIHRoZSBuZXcgYnVja2V0ICovDQo+ID4+ IAkoaC0+YnVja2V0c19leHRbYmt0X2lkXSkuc2lnX2N1cnJlbnRbMF0gPSBzaG9ydF9zaWc7DQo+ ID4+IC0JKGgtPmJ1Y2tldHNfZXh0W2JrdF9pZF0pLmtleV9pZHhbMF0gPSBuZXdfaWR4Ow0KPiA+ PiArCS8qIEtleSBjYW4gYmUgb2YgYXJiaXRyYXJ5IGxlbmd0aCwgc28gaXQgaXMNCj4gPj4gKwkg KiBub3QgcG9zc2libGUgdG8gc3RvcmUgaXQgYXRvbWljYWxseS4NCj4gPj4gKwkgKiBIZW5jZSB0 aGUgbmV3IGtleSBlbGVtZW50J3MgbWVtb3J5IHN0b3Jlcw0KPiA+PiArCSAqIChrZXkgYXMgd2Vs bCBhcyBkYXRhKSBzaG91bGQgYmUgY29tcGxldGUNCj4gPj4gKwkgKiBiZWZvcmUgaXQgaXMgcmVm ZXJlbmNlZC4NCj4gPj4gKwkgKi8NCj4gPj4gKwlfX2F0b21pY19zdG9yZV9uKCYoaC0+YnVja2V0 c19leHRbYmt0X2lkXSkua2V5X2lkeFswXSwNCj4gPj4gKwkJCSBuZXdfaWR4LA0KPiA+PiArCQkJ IF9fQVRPTUlDX1JFTEVBU0UpOw0KPiA+IFtXYW5nLCBZaXBlbmddIFNpbmNlIGl0IGhhcyBub3Qg YmVlbiBsaW5rZWQgYW5kIGxhdGVyIG9uIHRoZSBsaW5raW5nDQo+ID4gaXMgcHJvdGVjdGVkIGJ5 IHJlbGVhc2UsIGRvIHdlIHJlYWxseSBuZWVkIGF0b21pYyBzdG9yZSBoZXJlPw0KPiBBdG9taWMg c3RvcmUgaXMgdXNlZCBoZXJlIHRvIG1haW50YWluIHRoZSBjb2RlIGNvbnNpc3RlbmN5Lg0KQWdy ZWUgdGhlIHJlbGVhc2Ugb3JkZXIgaXMgbm90IHJlcXVpcmVkLiBSZW1vdmluZyBpdCBkb2VzIG5v dCBoZWxwIG11Y2ggYXMgaXQgaXMgb25seSBmb3IgdGhlIDFzdCBlbGVtZW50IG9mIGEgbmV3IGJ1 Y2tldC4NCg0KPiA+DQo+ID4+IAkvKiBMaW5rIHRoZSBuZXcgYnVja2V0IHRvIHNlYyBidWNrZXQg bGlua2VkIGxpc3QgKi8NCj4gPj4gCWxhc3QgPSBydGVfaGFzaF9nZXRfbGFzdF9ia3Qoc2VjX2Jr dCk7DQo+ID4+IC0JbGFzdC0+bmV4dCA9ICZoLT5idWNrZXRzX2V4dFtia3RfaWRdOw0KPiA+PiAr CS8qIE5ldyBidWNrZXQncyBtZW1vcnkgc3RvcmVzIChrZXkgYXMgd2VsbCBhcyBkYXRhKQ0KPiA+ PiArCSAqIHNob3VsZCBiZSBjb21wbGV0ZSBiZWZvcmUgaXQgaXMgcmVmZXJlbmNlZA0KPiA+PiAr CSAqLw0KPiA+PiArCV9fYXRvbWljX3N0b3JlX24oJmxhc3QtPm5leHQsDQo+ID4+ICsJCQkgJmgt PmJ1Y2tldHNfZXh0W2JrdF9pZF0sDQo+ID4+ICsJCQkgX19BVE9NSUNfUkVMRUFTRSk7DQpUaGUg Y29ycmVzcG9uZGluZyBsb2FkLWFjcXVpcmUgaXMgbWlzc2luZyBpbiB0aGUgJ0ZPUl9FQUNIX0JV Q0tFVCcgbWFjcm8NCg0KPiA+PiAJX19oYXNoX3J3X3dyaXRlcl91bmxvY2soaCk7DQo+ID4+IAly ZXR1cm4gbmV3X2lkeCAtIDE7DQo+ID4+DQo+ID4+IEBAIC0xMzY2LDcgKzEzNzgsOCBAQCByZW1v dmVfZW50cnkoY29uc3Qgc3RydWN0IHJ0ZV9oYXNoICpoLCBzdHJ1Y3QNCj4gPj4gcnRlX2hhc2hf YnVja2V0ICpia3QsIHVuc2lnbmVkIGkpDQo+ID4+ICogZW1wdHkgc2xvdC4NCj4gPj4gKi8NCj4g Pj4gc3RhdGljIGlubGluZSB2b2lkDQo+ID4+IC1fX3J0ZV9oYXNoX2NvbXBhY3RfbGwoc3RydWN0 IHJ0ZV9oYXNoX2J1Y2tldCAqY3VyX2JrdCwgaW50IHBvcykgew0KPiA+PiArX19ydGVfaGFzaF9j b21wYWN0X2xsKGNvbnN0IHN0cnVjdCBydGVfaGFzaCAqaCwNCj4gPj4gKwkJCXN0cnVjdCBydGVf aGFzaF9idWNrZXQgKmN1cl9ia3QsIGludCBwb3MpIHsNCj4gPj4gCWludCBpOw0KPiA+PiAJc3Ry dWN0IHJ0ZV9oYXNoX2J1Y2tldCAqbGFzdF9ia3Q7DQo+ID4+DQo+ID4+IEBAIC0xMzc3LDEwICsx MzkwLDI3IEBAIF9fcnRlX2hhc2hfY29tcGFjdF9sbChzdHJ1Y3QNCj4gcnRlX2hhc2hfYnVja2V0 DQo+ID4+ICpjdXJfYmt0LCBpbnQgcG9zKSB7DQo+ID4+DQo+ID4+IAlmb3IgKGkgPSBSVEVfSEFT SF9CVUNLRVRfRU5UUklFUyAtIDE7IGkgPj0gMDsgaS0tKSB7DQo+ID4+IAkJaWYgKGxhc3RfYmt0 LT5rZXlfaWR4W2ldICE9IEVNUFRZX1NMT1QpIHsNCj4gPj4gLQkJCWN1cl9ia3QtPmtleV9pZHhb cG9zXSA9IGxhc3RfYmt0LT5rZXlfaWR4W2ldOw0KPiA+PiAJCQljdXJfYmt0LT5zaWdfY3VycmVu dFtwb3NdID0gbGFzdF9ia3QtPnNpZ19jdXJyZW50W2ldOw0KPiA+PiArCQkJX19hdG9taWNfc3Rv cmVfbigmY3VyX2JrdC0+a2V5X2lkeFtwb3NdLA0KPiA+PiArCQkJCQkgbGFzdF9ia3QtPmtleV9p ZHhbaV0sDQo+ID4+ICsJCQkJCSBfX0FUT01JQ19SRUxFQVNFKTsNCj4gPj4gKwkJCWlmIChoLT5y ZWFkd3JpdGVfY29uY3VyX2xmX3N1cHBvcnQpIHsNCj4gPj4gKwkJCQkvKiBJbmZvcm0gdGhlIHJl YWRlcnMgdGhhdCB0aGUgdGFibGUgaGFzDQo+IGNoYW5nZWQNCj4gPj4gKwkJCQkgKiBTaW5jZSB0 aGVyZSBpcyBvbmUgd3JpdGVyLCBsb2FkIGFjcXVpcmVzIG9uDQo+ID4+ICsJCQkJICogdGJsX2No bmdfY250IGFyZSBub3QgcmVxdWlyZWQuDQo+ID4+ICsJCQkJICovDQo+ID4+ICsJCQkJX19hdG9t aWNfc3RvcmVfbihoLT50YmxfY2huZ19jbnQsDQo+ID4+ICsJCQkJCSAqaC0+dGJsX2NobmdfY250 ICsgMSwNCj4gPj4gKwkJCQkJIF9fQVRPTUlDX1JFTEVBU0UpOw0KPiA+PiArCQkJCS8qIFRoZSBz dG9yZXMgdG8gc2lnX2FsdCBhbmQgc2lnX2N1cnJlbnQgc2hvdWxkDQo+ID4+ICsJCQkJICogbm90 IG1vdmUgYWJvdmUgdGhlIHN0b3JlIHRvIHRibF9jaG5nX2NudC4NCj4gPj4gKwkJCQkgKi8NCj4g Pj4gKwkJCQlfX2F0b21pY190aHJlYWRfZmVuY2UoX19BVE9NSUNfUkVMRUFTRSk7DQo+ID4+ICsJ CQl9DQo+ID4+IAkJCWxhc3RfYmt0LT5zaWdfY3VycmVudFtpXSA9IE5VTExfU0lHTkFUVVJFOw0K PiA+PiAtCQkJbGFzdF9ia3QtPmtleV9pZHhbaV0gPSBFTVBUWV9TTE9UOw0KPiA+PiArCQkJX19h dG9taWNfc3RvcmVfbigmbGFzdF9ia3QtPmtleV9pZHhbaV0sDQo+ID4+ICsJCQkJCSBFTVBUWV9T TE9ULA0KPiA+PiArCQkJCQkgX19BVE9NSUNfUkVMRUFTRSk7DQo+ID4+IAkJCXJldHVybjsNCj4g Pj4gCQl9DQo+ID4+IAl9DQo+ID4+IEBAIC0xNDQ5LDcgKzE0NzksNyBAQCBfX3J0ZV9oYXNoX2Rl bF9rZXlfd2l0aF9oYXNoKGNvbnN0IHN0cnVjdA0KPiBydGVfaGFzaCAqaCwgY29uc3Qgdm9pZCAq a2V5LA0KPiA+PiAJLyogbG9vayBmb3Iga2V5IGluIHByaW1hcnkgYnVja2V0ICovDQo+ID4+IAly ZXQgPSBzZWFyY2hfYW5kX3JlbW92ZShoLCBrZXksIHByaW1fYmt0LCBzaG9ydF9zaWcsICZwb3Mp Ow0KPiA+PiAJaWYgKHJldCAhPSAtMSkgew0KPiA+PiAtCQlfX3J0ZV9oYXNoX2NvbXBhY3RfbGwo cHJpbV9ia3QsIHBvcyk7DQo+ID4+ICsJCV9fcnRlX2hhc2hfY29tcGFjdF9sbChoLCBwcmltX2Jr dCwgcG9zKTsNCj4gPj4gCQlsYXN0X2JrdCA9IHByaW1fYmt0LT5uZXh0Ow0KPiA+PiAJCXByZXZf Ymt0ID0gcHJpbV9ia3Q7DQo+ID4+IAkJZ290byByZXR1cm5fYmt0Ow0KPiA+PiBAQCAtMTQ2MSw3 ICsxNDkxLDcgQEAgX19ydGVfaGFzaF9kZWxfa2V5X3dpdGhfaGFzaChjb25zdCBzdHJ1Y3QNCj4g cnRlX2hhc2ggKmgsIGNvbnN0IHZvaWQgKmtleSwNCj4gPj4gCUZPUl9FQUNIX0JVQ0tFVChjdXJf Ymt0LCBzZWNfYmt0KSB7DQo+ID4+IAkJcmV0ID0gc2VhcmNoX2FuZF9yZW1vdmUoaCwga2V5LCBj dXJfYmt0LCBzaG9ydF9zaWcsICZwb3MpOw0KPiA+PiAJCWlmIChyZXQgIT0gLTEpIHsNCj4gPj4g LQkJCV9fcnRlX2hhc2hfY29tcGFjdF9sbChjdXJfYmt0LCBwb3MpOw0KPiA+PiArCQkJX19ydGVf aGFzaF9jb21wYWN0X2xsKGgsIGN1cl9ia3QsIHBvcyk7DQo+ID4+IAkJCWxhc3RfYmt0ID0gc2Vj X2JrdC0+bmV4dDsNCj4gPj4gCQkJcHJldl9ia3QgPSBzZWNfYmt0Ow0KPiA+PiAJCQlnb3RvIHJl dHVybl9ia3Q7DQo+ID4+IEBAIC0xNDg4LDExICsxNTE4LDIxIEBAIF9fcnRlX2hhc2hfZGVsX2tl eV93aXRoX2hhc2goY29uc3Qgc3RydWN0DQo+IHJ0ZV9oYXNoICpoLCBjb25zdCB2b2lkICprZXks DQo+ID4+IAl9DQo+ID4+IAkvKiBmb3VuZCBlbXB0eSBidWNrZXQgYW5kIHJlY3ljbGUgKi8NCj4g Pj4gCWlmIChpID09IFJURV9IQVNIX0JVQ0tFVF9FTlRSSUVTKSB7DQo+ID4+IC0JCXByZXZfYmt0 LT5uZXh0ID0gbGFzdF9ia3QtPm5leHQgPSBOVUxMOw0KPiA+PiArCQlfX2F0b21pY19zdG9yZV9u KCZwcmV2X2JrdC0+bmV4dCwNCj4gPj4gKwkJCQkgTlVMTCwNCj4gPj4gKwkJCQkgX19BVE9NSUNf UkVMRUFTRSk7DQo+ID4+IAkJdWludDMyX3QgaW5kZXggPSBsYXN0X2JrdCAtIGgtPmJ1Y2tldHNf ZXh0ICsgMTsNCj4gPj4gLQkJcnRlX3Jpbmdfc3BfZW5xdWV1ZShoLT5mcmVlX2V4dF9ia3RzLCAo dm9pZA0KPiAqKSh1aW50cHRyX3QpaW5kZXgpOw0KPiA+PiAtCX0NCj4gPj4gKwkJaWYgKCFoLT5u b19mcmVlX29uX2RlbCkNCj4gPj4gKwkJCXJ0ZV9yaW5nX3NwX2VucXVldWUoaC0+ZnJlZV9leHRf Ymt0cywgKHZvaWQNCj4gKikodWludHB0cl90KWluZGV4KTsNCj4gPj4gKwkJZWxzZSB7DQo+ID4+ ICsJCQlzdHJ1Y3QgcnRlX2hhc2hfa2V5ICprZXlfc2xvdCA9DQo+ID4+ICsJCQkJKHN0cnVjdCBy dGVfaGFzaF9rZXkgKikoDQo+ID4+ICsJCQkJKGNoYXIgKiloLT5rZXlfc3RvcmUgKw0KPiA+PiAr CQkJCXJldCAqIGgtPmtleV9lbnRyeV9zaXplKTsNCj4gPj4gKwkJCWtleV9zbG90LT5leHRfYmt0 X3RvX2ZyZWUgPSBpbmRleDsNCj4gPiBbV2FuZywgWWlwZW5nXSBJcyB0aGVyZSBjaGFuY2UgdGhh dCBhIGtleV9zbG90IG1heSBhbHJlYWR5IGhhdmUgb25lDQo+ID4gcHJldmlvdXMgZXh0X2JrdCBh bmQgbm93IGdvdCBvdmVyd3JpdHRlbiwgc28gdGhhdCB0aGUgcHJldmlvdXMgb25lIGdvbmUNCj4g Zm9yZXZlcj8NCj4gTm8sIGl0IGlzIG5vdCBwb3NzaWJsZS4gU2luY2UsIHRoZSBpbmRleCBpcyBi ZWluZyBzdG9yZWQgaW4gYSBrZXlfc2xvdCB3aGljaCBpcw0KPiBhc3NvY2lhdGVkIHdpdGggYSBk ZWxldGVkIGtleS4NCj4gPj4NCj4gPj4gKwkJfQ0KPiA+PiArCX0NCj4gPj4gCV9faGFzaF9yd193 cml0ZXJfdW5sb2NrKGgpOw0KPiA+PiAJcmV0dXJuIHJldDsNCj4gPj4gfQ0KPiA+PiBAQCAtMTU2 Nyw2ICsxNjA3LDE0IEBAIHJ0ZV9oYXNoX2ZyZWVfa2V5X3dpdGhfcG9zaXRpb24oY29uc3Qgc3Ry dWN0DQo+IHJ0ZV9oYXNoICpoLA0KPiA+PiAJCQkJKHZvaWQgKikoKHVpbnRwdHJfdClwb3NpdGlv bikpOw0KPiA+PiAJfQ0KPiA+Pg0KPiA+PiArCWNvbnN0IHN0cnVjdCBydGVfaGFzaF9rZXkgKmtl eV9zbG90ID0gKGNvbnN0IHN0cnVjdCBydGVfaGFzaF9rZXkgKikoDQo+ID4+ICsJCQkJCQkoY29u c3QgY2hhciAqKWgtPmtleV9zdG9yZSArDQo+ID4+ICsJCQkJCQlwb3NpdGlvbiAqIGgtPmtleV9l bnRyeV9zaXplKTsNCj4gPj4gKwl1aW50MzJfdCBpbmRleCA9IGtleV9zbG90LT5leHRfYmt0X3Rv X2ZyZWU7DQo+ID4+ICsJaWYgKCFpbmRleCkNCj4gPj4gKwkJLyogUmVjeWNsZSBlbXB0eSBleHQg Ymt0IHRvIGZyZWUgbGlzdC4gKi8NCj4gPj4gKwkJcnRlX3Jpbmdfc3BfZW5xdWV1ZShoLT5mcmVl X2V4dF9ia3RzLCAodm9pZA0KPiAqKSh1aW50cHRyX3QpaW5kZXgpOw0KU3VnZ2VzdCBtb3Zpbmcg dGhpcyB0byBiZWZvcmUgZnJlZWluZyB0aGUga2V5X2luZGV4IHRvIGF2b2lkIHJhY2UgY29uZGl0 aW9ucy4NCmtleV9zbG90LT5leHRfYmt0X3RvX2ZyZWUgbmVlZHMgdG8gYmUgc2V0IHRvIDAgYWZ0 ZXIgZnJlZWluZy4NCg0KPiA+PiArDQo+ID4+IAlyZXR1cm4gMDsNCj4gPj4gfQ0KPiA+Pg0KPiA+ PiBAQCAtMTg1NSw2ICsxOTAzLDkgQEAgX19ydGVfaGFzaF9sb29rdXBfYnVsa19sZihjb25zdCBz dHJ1Y3QNCj4gcnRlX2hhc2ggKmgsIGNvbnN0IHZvaWQgKiprZXlzLA0KPiA+PiAJCXJ0ZV9wcmVm ZXRjaDAoc2Vjb25kYXJ5X2JrdFtpXSk7DQo+ID4+IAl9DQo+ID4+DQo+ID4+ICsJZm9yIChpID0g MDsgaSA8IG51bV9rZXlzOyBpKyspDQo+ID4+ICsJCXBvc2l0aW9uc1tpXSA9IC1FTk9FTlQ7DQo+ ID4gW1dhbmcsIFlpcGVuZ10gU28gaXMgdGhpcyBmb3IgcGVyZm9ybWFuY2UgcmVhc29uPw0KPiBS ZXNldHRpbmcgcG9zaXRpb25zW10gb24gZWFjaCBpdGVyYXRpb24gb2YgZG/igKZ3aGlsZSgpIHJl cXVpcmUg4oCYaGl0c+KAmSB0byBiZSByZXNldA0KPiBhcyB3ZWxsLCB3aGljaCBjYXVzZXMgcGVy Zm9ybWFuY2UgaGl0Lg0KPiA+PiArDQo+ID4+IAlkbyB7DQo+ID4+IAkJLyogTG9hZCB0aGUgdGFi bGUgY2hhbmdlIGNvdW50ZXIgYmVmb3JlIHRoZSBsb29rdXANCj4gPj4gCQkgKiBzdGFydHMuIEFj cXVpcmUgc2VtYW50aWNzIHdpbGwgbWFrZSBzdXJlIHRoYXQgQEAgLTE4OTksNw0KPiArMTk1MCw2 DQo+ID4+IEBAIF9fcnRlX2hhc2hfbG9va3VwX2J1bGtfbGYoY29uc3Qgc3RydWN0IHJ0ZV9oYXNo ICpoLCBjb25zdCB2b2lkDQo+ID4+ICoqa2V5cywNCj4gPj4NCj4gPj4gCQkvKiBDb21wYXJlIGtl eXMsIGZpcnN0IGhpdHMgaW4gcHJpbWFyeSBmaXJzdCAqLw0KPiA+PiAJCWZvciAoaSA9IDA7IGkg PCBudW1fa2V5czsgaSsrKSB7DQo+ID4+IC0JCQlwb3NpdGlvbnNbaV0gPSAtRU5PRU5UOw0KPiA+ PiAJCQl3aGlsZSAocHJpbV9oaXRtYXNrW2ldKSB7DQo+ID4+IAkJCQl1aW50MzJfdCBoaXRfaW5k ZXggPQ0KPiA+PiAJCQkJCQlfX2J1aWx0aW5fY3R6bChwcmltX2hpdG1hc2tbaV0pDQo+IEBAIC0x OTcyLDYgKzIwMjIsMzYgQEANCj4gPj4gX19ydGVfaGFzaF9sb29rdXBfYnVsa19sZihjb25zdCBz dHJ1Y3QgcnRlX2hhc2ggKmgsIGNvbnN0IHZvaWQgKiprZXlzLA0KPiA+PiAJCQljb250aW51ZTsN Cj4gPj4gCQl9DQo+ID4+DQo+ID4+ICsNCj4gPj4gKwkJLyogYWxsIGZvdW5kLCBkbyBub3QgbmVl ZCB0byBnbyB0aHJvdWdoIGV4dCBia3QgKi8NCj4gPj4gKwkJaWYgKGhpdHMgPT0gKCgxVUxMIDw8 IG51bV9rZXlzKSAtIDEpKSB7DQo+ID4+ICsJCQlpZiAoaGl0X21hc2sgIT0gTlVMTCkNCj4gPj4g KwkJCQkqaGl0X21hc2sgPSBoaXRzOw0KPiA+DQo+ID4gW1dhbmcsIFlpcGVuZ10gSSB0aGluayB5 b3UgbmVlZCB0byBjaGVjayB0aGUgdmVyc2lvbiBjb3VudGVyIGJlZm9yZQ0KPiA+IHJldHVybiwg YW5kIGhvdyBhYm91dCB0aGUgZmVuY2U/DQo+IElmIGFsbCB0aGUga2V5cyBhcmUgZm91bmQsIHRo ZXJlIGlzIG5vIG5lZWQgdG8gY2hlY2sgdGhlIGNvdW50ZXIuDQo+ID4+ICsJCQlyZXR1cm47DQo+ ID4+ICsJCX0NCj4gPj4gKwkJLyogbmVlZCB0byBjaGVjayBleHQgYnVja2V0cyBmb3IgbWF0Y2gg Ki8NCj4gPj4gKwkJaWYgKGgtPmV4dF90YWJsZV9zdXBwb3J0KSB7DQo+ID4+ICsJCQlmb3IgKGkg PSAwOyBpIDwgbnVtX2tleXM7IGkrKykgew0KPiA+PiArCQkJCWlmICgoaGl0cyAmICgxVUxMIDw8 IGkpKSAhPSAwKQ0KPiA+PiArCQkJCQljb250aW51ZTsNCj4gPj4gKwkJCQluZXh0X2JrdCA9IHNl Y29uZGFyeV9ia3RbaV0tPm5leHQ7DQo+ID4+ICsJCQkJRk9SX0VBQ0hfQlVDS0VUKGN1cl9ia3Qs IG5leHRfYmt0KSB7DQo+ID4+ICsJCQkJCWlmIChkYXRhICE9IE5VTEwpDQo+ID4+ICsJCQkJCQly ZXQgPSBzZWFyY2hfb25lX2J1Y2tldF9sZihoLA0KPiA+PiArCQkJCQkJCWtleXNbaV0sIHNpZ1tp XSwNCj4gPj4gKwkJCQkJCQkmZGF0YVtpXSwgY3VyX2JrdCk7DQo+ID4+ICsJCQkJCWVsc2UNCj4g Pj4gKwkJCQkJCXJldCA9IHNlYXJjaF9vbmVfYnVja2V0X2xmKGgsDQo+ID4+ICsJCQkJCQkJCWtl eXNbaV0sIHNpZ1tpXSwNCj4gPj4gKwkJCQkJCQkJTlVMTCwNCj4gY3VyX2JrdCk7DQo+ID4+ICsJ CQkJCWlmIChyZXQgIT0gLTEpIHsNCj4gPj4gKwkJCQkJCXBvc2l0aW9uc1tpXSA9IHJldDsNCj4g Pj4gKwkJCQkJCWhpdHMgfD0gMVVMTCA8PCBpOw0KPiA+PiArCQkJCQkJYnJlYWs7DQo+ID4+ICsJ CQkJCX0NCj4gPj4gKwkJCQl9DQo+ID4+ICsJCQl9DQo+ID4+ICsJCX0NCj4gPj4gCQkvKiBUaGUg bG9hZHMgb2Ygc2lnX2N1cnJlbnQgaW4gY29tcGFyZV9zaWduYXR1cmVzDQo+ID4+IAkJICogc2hv dWxkIG5vdCBtb3ZlIGJlbG93IHRoZSBsb2FkIGZyb20gdGJsX2NobmdfY250Lg0KPiA+PiAJCSAq Lw0KPiA+PiBAQCAtMTk4OCwzNCArMjA2OCw2IEBAIF9fcnRlX2hhc2hfbG9va3VwX2J1bGtfbGYo Y29uc3Qgc3RydWN0DQo+IHJ0ZV9oYXNoICpoLCBjb25zdCB2b2lkICoqa2V5cywNCj4gPj4gCQkJ CQlfX0FUT01JQ19BQ1FVSVJFKTsNCj4gPj4gCX0gd2hpbGUgKGNudF9iICE9IGNudF9hKTsNCj4g Pj4NCj4gPj4gLQkvKiBhbGwgZm91bmQsIGRvIG5vdCBuZWVkIHRvIGdvIHRocm91Z2ggZXh0IGJr dCAqLw0KPiA+PiAtCWlmICgoaGl0cyA9PSAoKDFVTEwgPDwgbnVtX2tleXMpIC0gMSkpIHx8ICFo LT5leHRfdGFibGVfc3VwcG9ydCkgew0KPiA+PiAtCQlpZiAoaGl0X21hc2sgIT0gTlVMTCkNCj4g Pj4gLQkJCSpoaXRfbWFzayA9IGhpdHM7DQo+ID4+IC0JCV9faGFzaF9yd19yZWFkZXJfdW5sb2Nr KGgpOw0KPiA+PiAtCQlyZXR1cm47DQo+ID4+IC0JfQ0KPiA+PiAtDQo+ID4+IC0JLyogbmVlZCB0 byBjaGVjayBleHQgYnVja2V0cyBmb3IgbWF0Y2ggKi8NCj4gPj4gLQlmb3IgKGkgPSAwOyBpIDwg bnVtX2tleXM7IGkrKykgew0KPiA+PiAtCQlpZiAoKGhpdHMgJiAoMVVMTCA8PCBpKSkgIT0gMCkN Cj4gPj4gLQkJCWNvbnRpbnVlOw0KPiA+PiAtCQluZXh0X2JrdCA9IHNlY29uZGFyeV9ia3RbaV0t Pm5leHQ7DQo+ID4+IC0JCUZPUl9FQUNIX0JVQ0tFVChjdXJfYmt0LCBuZXh0X2JrdCkgew0KPiA+ PiAtCQkJaWYgKGRhdGEgIT0gTlVMTCkNCj4gPj4gLQkJCQlyZXQgPSBzZWFyY2hfb25lX2J1Y2tl dF9sZihoLCBrZXlzW2ldLA0KPiA+PiAtCQkJCQkJc2lnW2ldLCAmZGF0YVtpXSwgY3VyX2JrdCk7 DQo+ID4+IC0JCQllbHNlDQo+ID4+IC0JCQkJcmV0ID0gc2VhcmNoX29uZV9idWNrZXRfbGYoaCwg a2V5c1tpXSwNCj4gPj4gLQkJCQkJCXNpZ1tpXSwgTlVMTCwgY3VyX2JrdCk7DQo+ID4+IC0JCQlp ZiAocmV0ICE9IC0xKSB7DQo+ID4+IC0JCQkJcG9zaXRpb25zW2ldID0gcmV0Ow0KPiA+PiAtCQkJ CWhpdHMgfD0gMVVMTCA8PCBpOw0KPiA+PiAtCQkJCWJyZWFrOw0KPiA+PiAtCQkJfQ0KPiA+PiAt CQl9DQo+ID4+IC0JfQ0KPiA+PiAtDQo+ID4+IAlpZiAoaGl0X21hc2sgIT0gTlVMTCkNCj4gPj4g CQkqaGl0X21hc2sgPSBoaXRzOw0KPiA+PiB9DQo+ID4+IGRpZmYgLS1naXQgYS9saWIvbGlicnRl X2hhc2gvcnRlX2N1Y2tvb19oYXNoLmgNCj4gPj4gYi9saWIvbGlicnRlX2hhc2gvcnRlX2N1Y2tv b19oYXNoLmgNCj4gPj4gaW5kZXggZWFjZGFhOGQ0Njg0Li4wNjJjYzJkZDAyOTYgMTAwNjQ0DQo+ ID4+IC0tLSBhL2xpYi9saWJydGVfaGFzaC9ydGVfY3Vja29vX2hhc2guaA0KPiA+PiArKysgYi9s aWIvbGlicnRlX2hhc2gvcnRlX2N1Y2tvb19oYXNoLmgNCj4gPj4gQEAgLTEyOSw2ICsxMjksMTQg QEAgc3RydWN0IGxjb3JlX2NhY2hlIHsNCj4gPj4NCj4gPj4gLyogU3RydWN0dXJlIHRoYXQgc3Rv cmVzIGtleS12YWx1ZSBwYWlyICovIHN0cnVjdCBydGVfaGFzaF9rZXkgew0KPiA+PiArCS8qIFN0 b3JlcyBpbmRleCBvZiBhbiBlbXB0eSBleHQgYmt0IHRvIGJlIHJlY3ljbGVkIG9uIGNhbGxpbmcN Cj4gPj4gKwkgKiBydGVfaGFzaF9kZWxfeHh4IEFQSXMuIFdoZW4gbG9jayBmcmVlIHJlYWQtd3Jp ZSBjb25jdXJyZW5jeSBpcw0KPiA+IFtXYW5nLCBZaXBlbmddIHR5cG8NCj4gV2lsbCB1cGRhdGUg aXQgaW4gdGhlIG5leHQgdmVyc2lvbi4NCj4gPj4gKwkgKiBlbmFibGVkLCBhbiBlbXB0eSBleHQg Ymt0IGNhbm5vdCBiZSBwdXQgaW50byBmcmVlIGxpc3QgaW1tZWRpYXRlbHkNCj4gPj4gKwkgKiAo YXMgcmVhZGVycyBtaWdodCBiZSB1c2luZyBpdCBzdGlsbCkuIEhlbmNlIGZyZWVpbmcgb2YgdGhl IGV4dCBia3QNCj4gPj4gKwkgKiBpcyBwaWdneS1iYWNrZWQgdG8gZnJlZWluZyBvZiB0aGUga2V5 IGluZGV4Lg0KPiA+PiArCSAqLw0KPiA+IFtXYW5nLCBZaXBlbmddIEkgYW0gdGhpbmtpbmcgaWYg dGhpcyBicmVha3MgdGhlICJndWFyYW50ZWUiIHByb3ZpZGVkDQo+ID4gYnkgZXh0IHRhYmxlLCBT aW5jZSBhIHdob2xlIGJ1Y2tldCBjb3VsZCBub3QgYmUgcmV1c2VkIGlmIG9uZSBrZXkgbm90DQo+ ID4gZnJlZWQuIElzIHRoZXJlIGFueSBmdW5kYW1lbnRhbCBpc3N1ZSB3aXRoIGEgbmV3IEFQSSB0 byByZWN5Y2xlIGV4dCBidWNrZXQgb3INCj4geW91IGp1c3QgZG8gbm90IHdhbnQgdG8gYWRkIGEg bmV3IEFQST8NCj4gV2l0aCBsb2NrLWZyZWUgZmVhdHVyZSwg4oCYZGVsZXRl4oCZIGJlY29tZXMg YSB0d28gc3RlcCBwcm9jZXNzIG9mIOKAmGRlbGV0ZeKAmSBhbmQNCj4g4oCYZnJlZeKAmS4gSW4g b3RoZXIgd29yZHMsIGl0IGNhbiBiZSB2aWV3ZWQgYnkgdGhlIGFwcGxpY2F0aW9ucyBhcyBhICdw cm9sb25nZWQNCj4gZGVsZXRl4oCZLiBJ4oCZbSBub3Qgc3VyZSBob3cgYWRkaW5nIGEgbmV3IEFQ SSB0byByZWN5Y2xlIGV4dCBidWNrZXQgd2lsbCBoZWxwDQo+IHNvbHZpbmcgdGhlIGlzc3VlLg0K PiA+PiArCXVpbnQzMl90IGV4dF9ia3RfdG9fZnJlZTsNCj4gPj4gKw0KPiA+PiAJdW5pb24gew0K PiA+PiAJCXVpbnRwdHJfdCBpZGF0YTsNCj4gPj4gCQl2b2lkICpwZGF0YTsNCj4gPj4gLS0NCj4g Pj4gMi4xNy4xDQoNCg==