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 C950CA05D3 for ; Mon, 25 Mar 2019 21:06:19 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 5A22F34F3; Mon, 25 Mar 2019 21:06:18 +0100 (CET) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80080.outbound.protection.outlook.com [40.107.8.80]) by dpdk.org (Postfix) with ESMTP id 14649A3 for ; Mon, 25 Mar 2019 21:06:17 +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=u+T/tXzyZ5MZ7WjE/eqQ85Iw2UHekLu4yM9XthSDKx8=; b=c9i8rA3rq9f/zyaRVxQNHabkwN/DOgo/vZtLMwLBk9y/etork0FrNc7mXdLpmJqpszG2UxTCT++2YDlm06kGDxQeh+tStJz0WQCA5lf6ulneRk4Jt0iZNawECzzlLIskqQ9gsnlYF64hHqpW5xy8DLJSTGoSuxTajghdaBnHi8Q= Received: from AM0PR08MB3379.eurprd08.prod.outlook.com (20.177.109.142) by AM0PR08MB4449.eurprd08.prod.outlook.com (20.179.35.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1730.18; Mon, 25 Mar 2019 20:06:14 +0000 Received: from AM0PR08MB3379.eurprd08.prod.outlook.com ([fe80::5406:d342:c4b0:c23a]) by AM0PR08MB3379.eurprd08.prod.outlook.com ([fe80::5406:d342:c4b0:c23a%2]) with mapi id 15.20.1730.019; Mon, 25 Mar 2019 20:06:14 +0000 From: Dharmik Thakkar To: Honnappa Nagarahalli CC: "Wang, Yipeng1" , "Gobriel, Sameh" , "Richardson, Bruce" , "De Lara Guarch, Pablo" , "Mcnamara, John" , "Kovacevic, Marko" , "dev@dpdk.org" , "Tai, Charlie" , nd Thread-Topic: [RFC 1/2] hash: add lock free support for extendable bucket Thread-Index: AQHU0I5AM81Un2IGzU6mnfOek3E+qqYAeyMAgABJ+QCACtsNgIAJnQcA Date: Mon, 25 Mar 2019 20:06:14 +0000 Message-ID: <5853EC52-D1C6-421D-AAD4-CECFA351A5D1@arm.com> 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=Dharmik.Thakkar@arm.com; x-originating-ip: [217.140.111.135] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3e44ab9b-965f-4471-4717-08d6b15d558c 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:AM0PR08MB4449; x-ms-traffictypediagnostic: AM0PR08MB4449: nodisclaimer: True x-microsoft-antispam-prvs: x-forefront-prvs: 0987ACA2E2 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(39860400002)(366004)(346002)(376002)(136003)(199004)(189003)(81166006)(81156014)(83716004)(33656002)(8676002)(105586002)(106356001)(256004)(14444005)(5660300002)(6512007)(68736007)(30864003)(6436002)(25786009)(6486002)(97736004)(7736002)(53546011)(4326008)(6246003)(2616005)(476003)(446003)(102836004)(54906003)(37006003)(316002)(76176011)(305945005)(99286004)(486006)(93886005)(36756003)(26005)(6116002)(3846002)(8936002)(6862004)(229853002)(478600001)(6506007)(11346002)(14454004)(66066001)(6636002)(53936002)(186003)(2906002)(82746002)(72206003)(86362001)(71200400001)(71190400001)(21314003); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR08MB4449; H:AM0PR08MB3379.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: Cn3b811dQOXE5AYYe24Ki8AzvHZ73Jva7lBb3tAoE6NRyk7bFRbwoZUcbgK7l5WyDHRKFxz1M+ryyYvad/pcIM+D97eE+o6DIwpFX94Hn5K2joMrbzhRa03VEqlch6p0pSsvq0YctCovS4BPTQy0y0dCGTF5VCTiKAESvdg/4cDmXtdfSREaLT7uMAQsjPM6jdA9UASa0VWVPgD9ZfPl5jscB+E/dXxeLUCp5ijjOJoVeuG8CjtBcV5d4rqtn5AmC3aRZPzEBebd5laKXNLSJWzxQZoNVL+HM7juhqotRrFxTimzvxiZaCbBBo2kfOkf1ozl50Elo7XKXpUqHd+zBvFsosLb90u2AxAydNFJ/mgLvT4mjJ6sUNu0r55plyaAvyx+4s5thR/DwKRMDfXi3d95lk4AAXWnQriiFVerF9k= Content-Type: text/plain; charset="UTF-8" Content-ID: <6B88C0216237EE44BBFC51944C8C2AE3@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3e44ab9b-965f-4471-4717-08d6b15d558c X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Mar 2019 20:06:14.4204 (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: AM0PR08MB4449 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: <20190325200614.ks3a2diS7IoUcWI-noC3-TwcAsYgAXUMNVbqfJqykkM@z> SGkgSG9ubmFwcGEsDQoNClRoYW5rIHlvdSBmb3IgdGhlIHJldmlldyBjb21tZW50cyENCg0KPiBP biBNYXIgMTQsIDIwMTksIGF0IDc6MzEgUE0sIEhvbm5hcHBhIE5hZ2FyYWhhbGxpIDxIb25uYXBw YS5OYWdhcmFoYWxsaUBhcm0uY29tPiB3cm90ZToNCj4gDQo+IDxzbmlwPg0KPiANCj4+Pj4gQEAg LTEwNzIsMTAgKzEwNzEsMjMgQEAgX19ydGVfaGFzaF9hZGRfa2V5X3dpdGhfaGFzaChjb25zdCBz dHJ1Y3QNCj4+IHJ0ZV9oYXNoICpoLCBjb25zdCB2b2lkICprZXksDQo+Pj4+IAlia3RfaWQgPSAo dWludDMyX3QpKCh1aW50cHRyX3QpZXh0X2JrdF9pZCkgLSAxOw0KPj4+PiAJLyogVXNlIHRoZSBm aXJzdCBsb2NhdGlvbiBvZiB0aGUgbmV3IGJ1Y2tldCAqLw0KPj4+PiAJKGgtPmJ1Y2tldHNfZXh0 W2JrdF9pZF0pLnNpZ19jdXJyZW50WzBdID0gc2hvcnRfc2lnOw0KPj4+PiAtCShoLT5idWNrZXRz X2V4dFtia3RfaWRdKS5rZXlfaWR4WzBdID0gbmV3X2lkeDsNCj4+Pj4gKwkvKiBLZXkgY2FuIGJl IG9mIGFyYml0cmFyeSBsZW5ndGgsIHNvIGl0IGlzDQo+Pj4+ICsJICogbm90IHBvc3NpYmxlIHRv IHN0b3JlIGl0IGF0b21pY2FsbHkuDQo+Pj4+ICsJICogSGVuY2UgdGhlIG5ldyBrZXkgZWxlbWVu dCdzIG1lbW9yeSBzdG9yZXMNCj4+Pj4gKwkgKiAoa2V5IGFzIHdlbGwgYXMgZGF0YSkgc2hvdWxk IGJlIGNvbXBsZXRlDQo+Pj4+ICsJICogYmVmb3JlIGl0IGlzIHJlZmVyZW5jZWQuDQo+Pj4+ICsJ ICovDQo+Pj4+ICsJX19hdG9taWNfc3RvcmVfbigmKGgtPmJ1Y2tldHNfZXh0W2JrdF9pZF0pLmtl eV9pZHhbMF0sDQo+Pj4+ICsJCQkgbmV3X2lkeCwNCj4+Pj4gKwkJCSBfX0FUT01JQ19SRUxFQVNF KTsNCj4+PiBbV2FuZywgWWlwZW5nXSBTaW5jZSBpdCBoYXMgbm90IGJlZW4gbGlua2VkIGFuZCBs YXRlciBvbiB0aGUgbGlua2luZw0KPj4+IGlzIHByb3RlY3RlZCBieSByZWxlYXNlLCBkbyB3ZSBy ZWFsbHkgbmVlZCBhdG9taWMgc3RvcmUgaGVyZT8NCj4+IEF0b21pYyBzdG9yZSBpcyB1c2VkIGhl cmUgdG8gbWFpbnRhaW4gdGhlIGNvZGUgY29uc2lzdGVuY3kuDQo+IEFncmVlIHRoZSByZWxlYXNl IG9yZGVyIGlzIG5vdCByZXF1aXJlZC4gUmVtb3ZpbmcgaXQgZG9lcyBub3QgaGVscCBtdWNoIGFz IGl0IGlzIG9ubHkgZm9yIHRoZSAxc3QgZWxlbWVudCBvZiBhIG5ldyBidWNrZXQuDQo+IA0KPj4+ IA0KPj4+PiAJLyogTGluayB0aGUgbmV3IGJ1Y2tldCB0byBzZWMgYnVja2V0IGxpbmtlZCBsaXN0 ICovDQo+Pj4+IAlsYXN0ID0gcnRlX2hhc2hfZ2V0X2xhc3RfYmt0KHNlY19ia3QpOw0KPj4+PiAt CWxhc3QtPm5leHQgPSAmaC0+YnVja2V0c19leHRbYmt0X2lkXTsNCj4+Pj4gKwkvKiBOZXcgYnVj a2V0J3MgbWVtb3J5IHN0b3JlcyAoa2V5IGFzIHdlbGwgYXMgZGF0YSkNCj4+Pj4gKwkgKiBzaG91 bGQgYmUgY29tcGxldGUgYmVmb3JlIGl0IGlzIHJlZmVyZW5jZWQNCj4+Pj4gKwkgKi8NCj4+Pj4g KwlfX2F0b21pY19zdG9yZV9uKCZsYXN0LT5uZXh0LA0KPj4+PiArCQkJICZoLT5idWNrZXRzX2V4 dFtia3RfaWRdLA0KPj4+PiArCQkJIF9fQVRPTUlDX1JFTEVBU0UpOw0KPiBUaGUgY29ycmVzcG9u ZGluZyBsb2FkLWFjcXVpcmUgaXMgbWlzc2luZyBpbiB0aGUgJ0ZPUl9FQUNIX0JVQ0tFVCcgbWFj cm8NCkl0IGlzIG5vdCByZXF1aXJlZC4gQWxzbywgdGhpcyBzdG9yZS1yZWxlYXNlIGNhbiBiZSBy ZW1vdmVkIGFzIHRoZXJlIHdvbuKAmXQgYmUgZGF0YSByYWNlIGNvbmRpdGlvbnMgYXMga2V5X2lk eCBhbmQgc2lnIGFyZSBzdG9yZWQgYXRvbWljYWxseS4gSSBoYXZlIHVwZGF0ZWQgaXQgaW4gdGhl IHBhdGNoLg0KPiANCj4+Pj4gCV9faGFzaF9yd193cml0ZXJfdW5sb2NrKGgpOw0KPj4+PiAJcmV0 dXJuIG5ld19pZHggLSAxOw0KPj4+PiANCj4+Pj4gQEAgLTEzNjYsNyArMTM3OCw4IEBAIHJlbW92 ZV9lbnRyeShjb25zdCBzdHJ1Y3QgcnRlX2hhc2ggKmgsIHN0cnVjdA0KPj4+PiBydGVfaGFzaF9i dWNrZXQgKmJrdCwgdW5zaWduZWQgaSkNCj4+Pj4gKiBlbXB0eSBzbG90Lg0KPj4+PiAqLw0KPj4+ PiBzdGF0aWMgaW5saW5lIHZvaWQNCj4+Pj4gLV9fcnRlX2hhc2hfY29tcGFjdF9sbChzdHJ1Y3Qg cnRlX2hhc2hfYnVja2V0ICpjdXJfYmt0LCBpbnQgcG9zKSB7DQo+Pj4+ICtfX3J0ZV9oYXNoX2Nv bXBhY3RfbGwoY29uc3Qgc3RydWN0IHJ0ZV9oYXNoICpoLA0KPj4+PiArCQkJc3RydWN0IHJ0ZV9o YXNoX2J1Y2tldCAqY3VyX2JrdCwgaW50IHBvcykgew0KPj4+PiAJaW50IGk7DQo+Pj4+IAlzdHJ1 Y3QgcnRlX2hhc2hfYnVja2V0ICpsYXN0X2JrdDsNCj4+Pj4gDQo+Pj4+IEBAIC0xMzc3LDEwICsx MzkwLDI3IEBAIF9fcnRlX2hhc2hfY29tcGFjdF9sbChzdHJ1Y3QNCj4+IHJ0ZV9oYXNoX2J1Y2tl dA0KPj4+PiAqY3VyX2JrdCwgaW50IHBvcykgew0KPj4+PiANCj4+Pj4gCWZvciAoaSA9IFJURV9I QVNIX0JVQ0tFVF9FTlRSSUVTIC0gMTsgaSA+PSAwOyBpLS0pIHsNCj4+Pj4gCQlpZiAobGFzdF9i a3QtPmtleV9pZHhbaV0gIT0gRU1QVFlfU0xPVCkgew0KPj4+PiAtCQkJY3VyX2JrdC0+a2V5X2lk eFtwb3NdID0gbGFzdF9ia3QtPmtleV9pZHhbaV07DQo+Pj4+IAkJCWN1cl9ia3QtPnNpZ19jdXJy ZW50W3Bvc10gPSBsYXN0X2JrdC0+c2lnX2N1cnJlbnRbaV07DQo+Pj4+ICsJCQlfX2F0b21pY19z dG9yZV9uKCZjdXJfYmt0LT5rZXlfaWR4W3Bvc10sDQo+Pj4+ICsJCQkJCSBsYXN0X2JrdC0+a2V5 X2lkeFtpXSwNCj4+Pj4gKwkJCQkJIF9fQVRPTUlDX1JFTEVBU0UpOw0KPj4+PiArCQkJaWYgKGgt PnJlYWR3cml0ZV9jb25jdXJfbGZfc3VwcG9ydCkgew0KPj4+PiArCQkJCS8qIEluZm9ybSB0aGUg cmVhZGVycyB0aGF0IHRoZSB0YWJsZSBoYXMNCj4+IGNoYW5nZWQNCj4+Pj4gKwkJCQkgKiBTaW5j ZSB0aGVyZSBpcyBvbmUgd3JpdGVyLCBsb2FkIGFjcXVpcmVzIG9uDQo+Pj4+ICsJCQkJICogdGJs X2NobmdfY250IGFyZSBub3QgcmVxdWlyZWQuDQo+Pj4+ICsJCQkJICovDQo+Pj4+ICsJCQkJX19h dG9taWNfc3RvcmVfbihoLT50YmxfY2huZ19jbnQsDQo+Pj4+ICsJCQkJCSAqaC0+dGJsX2Nobmdf Y250ICsgMSwNCj4+Pj4gKwkJCQkJIF9fQVRPTUlDX1JFTEVBU0UpOw0KPj4+PiArCQkJCS8qIFRo ZSBzdG9yZXMgdG8gc2lnX2FsdCBhbmQgc2lnX2N1cnJlbnQgc2hvdWxkDQo+Pj4+ICsJCQkJICog bm90IG1vdmUgYWJvdmUgdGhlIHN0b3JlIHRvIHRibF9jaG5nX2NudC4NCj4+Pj4gKwkJCQkgKi8N Cj4+Pj4gKwkJCQlfX2F0b21pY190aHJlYWRfZmVuY2UoX19BVE9NSUNfUkVMRUFTRSk7DQo+Pj4+ ICsJCQl9DQo+Pj4+IAkJCWxhc3RfYmt0LT5zaWdfY3VycmVudFtpXSA9IE5VTExfU0lHTkFUVVJF Ow0KPj4+PiAtCQkJbGFzdF9ia3QtPmtleV9pZHhbaV0gPSBFTVBUWV9TTE9UOw0KPj4+PiArCQkJ X19hdG9taWNfc3RvcmVfbigmbGFzdF9ia3QtPmtleV9pZHhbaV0sDQo+Pj4+ICsJCQkJCSBFTVBU WV9TTE9ULA0KPj4+PiArCQkJCQkgX19BVE9NSUNfUkVMRUFTRSk7DQo+Pj4+IAkJCXJldHVybjsN Cj4+Pj4gCQl9DQo+Pj4+IAl9DQo+Pj4+IEBAIC0xNDQ5LDcgKzE0NzksNyBAQCBfX3J0ZV9oYXNo X2RlbF9rZXlfd2l0aF9oYXNoKGNvbnN0IHN0cnVjdA0KPj4gcnRlX2hhc2ggKmgsIGNvbnN0IHZv aWQgKmtleSwNCj4+Pj4gCS8qIGxvb2sgZm9yIGtleSBpbiBwcmltYXJ5IGJ1Y2tldCAqLw0KPj4+ PiAJcmV0ID0gc2VhcmNoX2FuZF9yZW1vdmUoaCwga2V5LCBwcmltX2JrdCwgc2hvcnRfc2lnLCAm cG9zKTsNCj4+Pj4gCWlmIChyZXQgIT0gLTEpIHsNCj4+Pj4gLQkJX19ydGVfaGFzaF9jb21wYWN0 X2xsKHByaW1fYmt0LCBwb3MpOw0KPj4+PiArCQlfX3J0ZV9oYXNoX2NvbXBhY3RfbGwoaCwgcHJp bV9ia3QsIHBvcyk7DQo+Pj4+IAkJbGFzdF9ia3QgPSBwcmltX2JrdC0+bmV4dDsNCj4+Pj4gCQlw cmV2X2JrdCA9IHByaW1fYmt0Ow0KPj4+PiAJCWdvdG8gcmV0dXJuX2JrdDsNCj4+Pj4gQEAgLTE0 NjEsNyArMTQ5MSw3IEBAIF9fcnRlX2hhc2hfZGVsX2tleV93aXRoX2hhc2goY29uc3Qgc3RydWN0 DQo+PiBydGVfaGFzaCAqaCwgY29uc3Qgdm9pZCAqa2V5LA0KPj4+PiAJRk9SX0VBQ0hfQlVDS0VU KGN1cl9ia3QsIHNlY19ia3QpIHsNCj4+Pj4gCQlyZXQgPSBzZWFyY2hfYW5kX3JlbW92ZShoLCBr ZXksIGN1cl9ia3QsIHNob3J0X3NpZywgJnBvcyk7DQo+Pj4+IAkJaWYgKHJldCAhPSAtMSkgew0K Pj4+PiAtCQkJX19ydGVfaGFzaF9jb21wYWN0X2xsKGN1cl9ia3QsIHBvcyk7DQo+Pj4+ICsJCQlf X3J0ZV9oYXNoX2NvbXBhY3RfbGwoaCwgY3VyX2JrdCwgcG9zKTsNCj4+Pj4gCQkJbGFzdF9ia3Qg PSBzZWNfYmt0LT5uZXh0Ow0KPj4+PiAJCQlwcmV2X2JrdCA9IHNlY19ia3Q7DQo+Pj4+IAkJCWdv dG8gcmV0dXJuX2JrdDsNCj4+Pj4gQEAgLTE0ODgsMTEgKzE1MTgsMjEgQEAgX19ydGVfaGFzaF9k ZWxfa2V5X3dpdGhfaGFzaChjb25zdCBzdHJ1Y3QNCj4+IHJ0ZV9oYXNoICpoLCBjb25zdCB2b2lk ICprZXksDQo+Pj4+IAl9DQo+Pj4+IAkvKiBmb3VuZCBlbXB0eSBidWNrZXQgYW5kIHJlY3ljbGUg Ki8NCj4+Pj4gCWlmIChpID09IFJURV9IQVNIX0JVQ0tFVF9FTlRSSUVTKSB7DQo+Pj4+IC0JCXBy ZXZfYmt0LT5uZXh0ID0gbGFzdF9ia3QtPm5leHQgPSBOVUxMOw0KPj4+PiArCQlfX2F0b21pY19z dG9yZV9uKCZwcmV2X2JrdC0+bmV4dCwNCj4+Pj4gKwkJCQkgTlVMTCwNCj4+Pj4gKwkJCQkgX19B VE9NSUNfUkVMRUFTRSk7DQo+Pj4+IAkJdWludDMyX3QgaW5kZXggPSBsYXN0X2JrdCAtIGgtPmJ1 Y2tldHNfZXh0ICsgMTsNCj4+Pj4gLQkJcnRlX3Jpbmdfc3BfZW5xdWV1ZShoLT5mcmVlX2V4dF9i a3RzLCAodm9pZA0KPj4gKikodWludHB0cl90KWluZGV4KTsNCj4+Pj4gLQl9DQo+Pj4+ICsJCWlm ICghaC0+bm9fZnJlZV9vbl9kZWwpDQo+Pj4+ICsJCQlydGVfcmluZ19zcF9lbnF1ZXVlKGgtPmZy ZWVfZXh0X2JrdHMsICh2b2lkDQo+PiAqKSh1aW50cHRyX3QpaW5kZXgpOw0KPj4+PiArCQllbHNl IHsNCj4+Pj4gKwkJCXN0cnVjdCBydGVfaGFzaF9rZXkgKmtleV9zbG90ID0NCj4+Pj4gKwkJCQko c3RydWN0IHJ0ZV9oYXNoX2tleSAqKSgNCj4+Pj4gKwkJCQkoY2hhciAqKWgtPmtleV9zdG9yZSAr DQo+Pj4+ICsJCQkJcmV0ICogaC0+a2V5X2VudHJ5X3NpemUpOw0KPj4+PiArCQkJa2V5X3Nsb3Qt PmV4dF9ia3RfdG9fZnJlZSA9IGluZGV4Ow0KPj4+IFtXYW5nLCBZaXBlbmddIElzIHRoZXJlIGNo YW5jZSB0aGF0IGEga2V5X3Nsb3QgbWF5IGFscmVhZHkgaGF2ZSBvbmUNCj4+PiBwcmV2aW91cyBl eHRfYmt0IGFuZCBub3cgZ290IG92ZXJ3cml0dGVuLCBzbyB0aGF0IHRoZSBwcmV2aW91cyBvbmUg Z29uZQ0KPj4gZm9yZXZlcj8NCj4+IE5vLCBpdCBpcyBub3QgcG9zc2libGUuIFNpbmNlLCB0aGUg aW5kZXggaXMgYmVpbmcgc3RvcmVkIGluIGEga2V5X3Nsb3Qgd2hpY2ggaXMNCj4+IGFzc29jaWF0 ZWQgd2l0aCBhIGRlbGV0ZWQga2V5Lg0KPj4+PiANCj4+Pj4gKwkJfQ0KPj4+PiArCX0NCj4+Pj4g CV9faGFzaF9yd193cml0ZXJfdW5sb2NrKGgpOw0KPj4+PiAJcmV0dXJuIHJldDsNCj4+Pj4gfQ0K Pj4+PiBAQCAtMTU2Nyw2ICsxNjA3LDE0IEBAIHJ0ZV9oYXNoX2ZyZWVfa2V5X3dpdGhfcG9zaXRp b24oY29uc3Qgc3RydWN0DQo+PiBydGVfaGFzaCAqaCwNCj4+Pj4gCQkJCSh2b2lkICopKCh1aW50 cHRyX3QpcG9zaXRpb24pKTsNCj4+Pj4gCX0NCj4+Pj4gDQo+Pj4+ICsJY29uc3Qgc3RydWN0IHJ0 ZV9oYXNoX2tleSAqa2V5X3Nsb3QgPSAoY29uc3Qgc3RydWN0IHJ0ZV9oYXNoX2tleSAqKSgNCj4+ Pj4gKwkJCQkJCShjb25zdCBjaGFyICopaC0+a2V5X3N0b3JlICsNCj4+Pj4gKwkJCQkJCXBvc2l0 aW9uICogaC0+a2V5X2VudHJ5X3NpemUpOw0KPj4+PiArCXVpbnQzMl90IGluZGV4ID0ga2V5X3Ns b3QtPmV4dF9ia3RfdG9fZnJlZTsNCj4+Pj4gKwlpZiAoIWluZGV4KQ0KPj4+PiArCQkvKiBSZWN5 Y2xlIGVtcHR5IGV4dCBia3QgdG8gZnJlZSBsaXN0LiAqLw0KPj4+PiArCQlydGVfcmluZ19zcF9l bnF1ZXVlKGgtPmZyZWVfZXh0X2JrdHMsICh2b2lkDQo+PiAqKSh1aW50cHRyX3QpaW5kZXgpOw0K PiBTdWdnZXN0IG1vdmluZyB0aGlzIHRvIGJlZm9yZSBmcmVlaW5nIHRoZSBrZXlfaW5kZXggdG8g YXZvaWQgcmFjZSBjb25kaXRpb25zLg0KPiBrZXlfc2xvdC0+ZXh0X2JrdF90b19mcmVlIG5lZWRz IHRvIGJlIHNldCB0byAwIGFmdGVyIGZyZWVpbmcuDQpDb3JyZWN0LiBVcGRhdGVkIGluIHRoZSBw YXRjaC4NCj4gDQo+Pj4+ICsNCj4+Pj4gCXJldHVybiAwOw0KPj4+PiB9DQo+Pj4+IA0KPj4+PiBA QCAtMTg1NSw2ICsxOTAzLDkgQEAgX19ydGVfaGFzaF9sb29rdXBfYnVsa19sZihjb25zdCBzdHJ1 Y3QNCj4+IHJ0ZV9oYXNoICpoLCBjb25zdCB2b2lkICoqa2V5cywNCj4+Pj4gCQlydGVfcHJlZmV0 Y2gwKHNlY29uZGFyeV9ia3RbaV0pOw0KPj4+PiAJfQ0KPj4+PiANCj4+Pj4gKwlmb3IgKGkgPSAw OyBpIDwgbnVtX2tleXM7IGkrKykNCj4+Pj4gKwkJcG9zaXRpb25zW2ldID0gLUVOT0VOVDsNCj4+ PiBbV2FuZywgWWlwZW5nXSBTbyBpcyB0aGlzIGZvciBwZXJmb3JtYW5jZSByZWFzb24/DQo+PiBS ZXNldHRpbmcgcG9zaXRpb25zW10gb24gZWFjaCBpdGVyYXRpb24gb2YgZG/igKZ3aGlsZSgpIHJl cXVpcmUg4oCYaGl0c+KAmSB0byBiZSByZXNldA0KPj4gYXMgd2VsbCwgd2hpY2ggY2F1c2VzIHBl cmZvcm1hbmNlIGhpdC4NCj4+Pj4gKw0KPj4+PiAJZG8gew0KPj4+PiAJCS8qIExvYWQgdGhlIHRh YmxlIGNoYW5nZSBjb3VudGVyIGJlZm9yZSB0aGUgbG9va3VwDQo+Pj4+IAkJICogc3RhcnRzLiBB Y3F1aXJlIHNlbWFudGljcyB3aWxsIG1ha2Ugc3VyZSB0aGF0IEBAIC0xODk5LDcNCj4+ICsxOTUw LDYNCj4+Pj4gQEAgX19ydGVfaGFzaF9sb29rdXBfYnVsa19sZihjb25zdCBzdHJ1Y3QgcnRlX2hh c2ggKmgsIGNvbnN0IHZvaWQNCj4+Pj4gKiprZXlzLA0KPj4+PiANCj4+Pj4gCQkvKiBDb21wYXJl IGtleXMsIGZpcnN0IGhpdHMgaW4gcHJpbWFyeSBmaXJzdCAqLw0KPj4+PiAJCWZvciAoaSA9IDA7 IGkgPCBudW1fa2V5czsgaSsrKSB7DQo+Pj4+IC0JCQlwb3NpdGlvbnNbaV0gPSAtRU5PRU5UOw0K Pj4+PiAJCQl3aGlsZSAocHJpbV9oaXRtYXNrW2ldKSB7DQo+Pj4+IAkJCQl1aW50MzJfdCBoaXRf aW5kZXggPQ0KPj4+PiAJCQkJCQlfX2J1aWx0aW5fY3R6bChwcmltX2hpdG1hc2tbaV0pDQo+PiBA QCAtMTk3Miw2ICsyMDIyLDM2IEBADQo+Pj4+IF9fcnRlX2hhc2hfbG9va3VwX2J1bGtfbGYoY29u c3Qgc3RydWN0IHJ0ZV9oYXNoICpoLCBjb25zdCB2b2lkICoqa2V5cywNCj4+Pj4gCQkJY29udGlu dWU7DQo+Pj4+IAkJfQ0KPj4+PiANCj4+Pj4gKw0KPj4+PiArCQkvKiBhbGwgZm91bmQsIGRvIG5v dCBuZWVkIHRvIGdvIHRocm91Z2ggZXh0IGJrdCAqLw0KPj4+PiArCQlpZiAoaGl0cyA9PSAoKDFV TEwgPDwgbnVtX2tleXMpIC0gMSkpIHsNCj4+Pj4gKwkJCWlmIChoaXRfbWFzayAhPSBOVUxMKQ0K Pj4+PiArCQkJCSpoaXRfbWFzayA9IGhpdHM7DQo+Pj4gDQo+Pj4gW1dhbmcsIFlpcGVuZ10gSSB0 aGluayB5b3UgbmVlZCB0byBjaGVjayB0aGUgdmVyc2lvbiBjb3VudGVyIGJlZm9yZQ0KPj4+IHJl dHVybiwgYW5kIGhvdyBhYm91dCB0aGUgZmVuY2U/DQo+PiBJZiBhbGwgdGhlIGtleXMgYXJlIGZv dW5kLCB0aGVyZSBpcyBubyBuZWVkIHRvIGNoZWNrIHRoZSBjb3VudGVyLg0KPj4+PiArCQkJcmV0 dXJuOw0KPj4+PiArCQl9DQo+Pj4+ICsJCS8qIG5lZWQgdG8gY2hlY2sgZXh0IGJ1Y2tldHMgZm9y IG1hdGNoICovDQo+Pj4+ICsJCWlmIChoLT5leHRfdGFibGVfc3VwcG9ydCkgew0KPj4+PiArCQkJ Zm9yIChpID0gMDsgaSA8IG51bV9rZXlzOyBpKyspIHsNCj4+Pj4gKwkJCQlpZiAoKGhpdHMgJiAo MVVMTCA8PCBpKSkgIT0gMCkNCj4+Pj4gKwkJCQkJY29udGludWU7DQo+Pj4+ICsJCQkJbmV4dF9i a3QgPSBzZWNvbmRhcnlfYmt0W2ldLT5uZXh0Ow0KPj4+PiArCQkJCUZPUl9FQUNIX0JVQ0tFVChj dXJfYmt0LCBuZXh0X2JrdCkgew0KPj4+PiArCQkJCQlpZiAoZGF0YSAhPSBOVUxMKQ0KPj4+PiAr CQkJCQkJcmV0ID0gc2VhcmNoX29uZV9idWNrZXRfbGYoaCwNCj4+Pj4gKwkJCQkJCQlrZXlzW2ld LCBzaWdbaV0sDQo+Pj4+ICsJCQkJCQkJJmRhdGFbaV0sIGN1cl9ia3QpOw0KPj4+PiArCQkJCQll bHNlDQo+Pj4+ICsJCQkJCQlyZXQgPSBzZWFyY2hfb25lX2J1Y2tldF9sZihoLA0KPj4+PiArCQkJ CQkJCQlrZXlzW2ldLCBzaWdbaV0sDQo+Pj4+ICsJCQkJCQkJCU5VTEwsDQo+PiBjdXJfYmt0KTsN Cj4+Pj4gKwkJCQkJaWYgKHJldCAhPSAtMSkgew0KPj4+PiArCQkJCQkJcG9zaXRpb25zW2ldID0g cmV0Ow0KPj4+PiArCQkJCQkJaGl0cyB8PSAxVUxMIDw8IGk7DQo+Pj4+ICsJCQkJCQlicmVhazsN Cj4+Pj4gKwkJCQkJfQ0KPj4+PiArCQkJCX0NCj4+Pj4gKwkJCX0NCj4+Pj4gKwkJfQ0KPj4+PiAJ CS8qIFRoZSBsb2FkcyBvZiBzaWdfY3VycmVudCBpbiBjb21wYXJlX3NpZ25hdHVyZXMNCj4+Pj4g CQkgKiBzaG91bGQgbm90IG1vdmUgYmVsb3cgdGhlIGxvYWQgZnJvbSB0YmxfY2huZ19jbnQuDQo+ Pj4+IAkJICovDQo+Pj4+IEBAIC0xOTg4LDM0ICsyMDY4LDYgQEAgX19ydGVfaGFzaF9sb29rdXBf YnVsa19sZihjb25zdCBzdHJ1Y3QNCj4+IHJ0ZV9oYXNoICpoLCBjb25zdCB2b2lkICoqa2V5cywN Cj4+Pj4gCQkJCQlfX0FUT01JQ19BQ1FVSVJFKTsNCj4+Pj4gCX0gd2hpbGUgKGNudF9iICE9IGNu dF9hKTsNCj4+Pj4gDQo+Pj4+IC0JLyogYWxsIGZvdW5kLCBkbyBub3QgbmVlZCB0byBnbyB0aHJv dWdoIGV4dCBia3QgKi8NCj4+Pj4gLQlpZiAoKGhpdHMgPT0gKCgxVUxMIDw8IG51bV9rZXlzKSAt IDEpKSB8fCAhaC0+ZXh0X3RhYmxlX3N1cHBvcnQpIHsNCj4+Pj4gLQkJaWYgKGhpdF9tYXNrICE9 IE5VTEwpDQo+Pj4+IC0JCQkqaGl0X21hc2sgPSBoaXRzOw0KPj4+PiAtCQlfX2hhc2hfcndfcmVh ZGVyX3VubG9jayhoKTsNCj4+Pj4gLQkJcmV0dXJuOw0KPj4+PiAtCX0NCj4+Pj4gLQ0KPj4+PiAt CS8qIG5lZWQgdG8gY2hlY2sgZXh0IGJ1Y2tldHMgZm9yIG1hdGNoICovDQo+Pj4+IC0JZm9yIChp ID0gMDsgaSA8IG51bV9rZXlzOyBpKyspIHsNCj4+Pj4gLQkJaWYgKChoaXRzICYgKDFVTEwgPDwg aSkpICE9IDApDQo+Pj4+IC0JCQljb250aW51ZTsNCj4+Pj4gLQkJbmV4dF9ia3QgPSBzZWNvbmRh cnlfYmt0W2ldLT5uZXh0Ow0KPj4+PiAtCQlGT1JfRUFDSF9CVUNLRVQoY3VyX2JrdCwgbmV4dF9i a3QpIHsNCj4+Pj4gLQkJCWlmIChkYXRhICE9IE5VTEwpDQo+Pj4+IC0JCQkJcmV0ID0gc2VhcmNo X29uZV9idWNrZXRfbGYoaCwga2V5c1tpXSwNCj4+Pj4gLQkJCQkJCXNpZ1tpXSwgJmRhdGFbaV0s IGN1cl9ia3QpOw0KPj4+PiAtCQkJZWxzZQ0KPj4+PiAtCQkJCXJldCA9IHNlYXJjaF9vbmVfYnVj a2V0X2xmKGgsIGtleXNbaV0sDQo+Pj4+IC0JCQkJCQlzaWdbaV0sIE5VTEwsIGN1cl9ia3QpOw0K Pj4+PiAtCQkJaWYgKHJldCAhPSAtMSkgew0KPj4+PiAtCQkJCXBvc2l0aW9uc1tpXSA9IHJldDsN Cj4+Pj4gLQkJCQloaXRzIHw9IDFVTEwgPDwgaTsNCj4+Pj4gLQkJCQlicmVhazsNCj4+Pj4gLQkJ CX0NCj4+Pj4gLQkJfQ0KPj4+PiAtCX0NCj4+Pj4gLQ0KPj4+PiAJaWYgKGhpdF9tYXNrICE9IE5V TEwpDQo+Pj4+IAkJKmhpdF9tYXNrID0gaGl0czsNCj4+Pj4gfQ0KPj4+PiBkaWZmIC0tZ2l0IGEv bGliL2xpYnJ0ZV9oYXNoL3J0ZV9jdWNrb29faGFzaC5oDQo+Pj4+IGIvbGliL2xpYnJ0ZV9oYXNo L3J0ZV9jdWNrb29faGFzaC5oDQo+Pj4+IGluZGV4IGVhY2RhYThkNDY4NC4uMDYyY2MyZGQwMjk2 IDEwMDY0NA0KPj4+PiAtLS0gYS9saWIvbGlicnRlX2hhc2gvcnRlX2N1Y2tvb19oYXNoLmgNCj4+ Pj4gKysrIGIvbGliL2xpYnJ0ZV9oYXNoL3J0ZV9jdWNrb29faGFzaC5oDQo+Pj4+IEBAIC0xMjks NiArMTI5LDE0IEBAIHN0cnVjdCBsY29yZV9jYWNoZSB7DQo+Pj4+IA0KPj4+PiAvKiBTdHJ1Y3R1 cmUgdGhhdCBzdG9yZXMga2V5LXZhbHVlIHBhaXIgKi8gc3RydWN0IHJ0ZV9oYXNoX2tleSB7DQo+ Pj4+ICsJLyogU3RvcmVzIGluZGV4IG9mIGFuIGVtcHR5IGV4dCBia3QgdG8gYmUgcmVjeWNsZWQg b24gY2FsbGluZw0KPj4+PiArCSAqIHJ0ZV9oYXNoX2RlbF94eHggQVBJcy4gV2hlbiBsb2NrIGZy ZWUgcmVhZC13cmllIGNvbmN1cnJlbmN5IGlzDQo+Pj4gW1dhbmcsIFlpcGVuZ10gdHlwbw0KPj4g V2lsbCB1cGRhdGUgaXQgaW4gdGhlIG5leHQgdmVyc2lvbi4NCj4+Pj4gKwkgKiBlbmFibGVkLCBh biBlbXB0eSBleHQgYmt0IGNhbm5vdCBiZSBwdXQgaW50byBmcmVlIGxpc3QgaW1tZWRpYXRlbHkN Cj4+Pj4gKwkgKiAoYXMgcmVhZGVycyBtaWdodCBiZSB1c2luZyBpdCBzdGlsbCkuIEhlbmNlIGZy ZWVpbmcgb2YgdGhlIGV4dCBia3QNCj4+Pj4gKwkgKiBpcyBwaWdneS1iYWNrZWQgdG8gZnJlZWlu ZyBvZiB0aGUga2V5IGluZGV4Lg0KPj4+PiArCSAqLw0KPj4+IFtXYW5nLCBZaXBlbmddIEkgYW0g dGhpbmtpbmcgaWYgdGhpcyBicmVha3MgdGhlICJndWFyYW50ZWUiIHByb3ZpZGVkDQo+Pj4gYnkg ZXh0IHRhYmxlLCBTaW5jZSBhIHdob2xlIGJ1Y2tldCBjb3VsZCBub3QgYmUgcmV1c2VkIGlmIG9u ZSBrZXkgbm90DQo+Pj4gZnJlZWQuIElzIHRoZXJlIGFueSBmdW5kYW1lbnRhbCBpc3N1ZSB3aXRo IGEgbmV3IEFQSSB0byByZWN5Y2xlIGV4dCBidWNrZXQgb3INCj4+IHlvdSBqdXN0IGRvIG5vdCB3 YW50IHRvIGFkZCBhIG5ldyBBUEk/DQo+PiBXaXRoIGxvY2stZnJlZSBmZWF0dXJlLCDigJhkZWxl dGXigJkgYmVjb21lcyBhIHR3byBzdGVwIHByb2Nlc3Mgb2Yg4oCYZGVsZXRl4oCZIGFuZA0KPj4g 4oCYZnJlZeKAmS4gSW4gb3RoZXIgd29yZHMsIGl0IGNhbiBiZSB2aWV3ZWQgYnkgdGhlIGFwcGxp Y2F0aW9ucyBhcyBhICdwcm9sb25nZWQNCj4+IGRlbGV0ZeKAmS4gSeKAmW0gbm90IHN1cmUgaG93 IGFkZGluZyBhIG5ldyBBUEkgdG8gcmVjeWNsZSBleHQgYnVja2V0IHdpbGwgaGVscA0KPj4gc29s dmluZyB0aGUgaXNzdWUuDQo+Pj4+ICsJdWludDMyX3QgZXh0X2JrdF90b19mcmVlOw0KPj4+PiAr DQo+Pj4+IAl1bmlvbiB7DQo+Pj4+IAkJdWludHB0cl90IGlkYXRhOw0KPj4+PiAJCXZvaWQgKnBk YXRhOw0KPj4+PiAtLQ0KPj4+PiAyLjE3LjENCj4gDQoNCg==