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 Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by smtp.lore.kernel.org (Postfix) with ESMTP id 05F68F419B6 for ; Wed, 15 Apr 2026 13:40:13 +0000 (UTC) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9F4734042F; Wed, 15 Apr 2026 15:40:12 +0200 (CEST) Received: from dkmailrelay1.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id A4CA5402F0 for ; Wed, 15 Apr 2026 15:40:11 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesys.local [192.168.4.10]) by dkmailrelay1.smartsharesystems.com (Postfix) with ESMTP id 5B1CC20912; Wed, 15 Apr 2026 15:40:11 +0200 (CEST) Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Subject: RE: [PATCH v3] mempool: improve cache behaviour and performance Date: Wed, 15 Apr 2026 15:40:06 +0200 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35F657ED@smartserver.smartshare.dk> In-Reply-To: <20260409110558.961159-1-mb@smartsharesystems.com> X-MimeOLE: Produced By Microsoft Exchange V6.5 X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH v3] mempool: improve cache behaviour and performance Thread-Index: AdzIENlb4IgzAF7bS26sxIwys180UgEzGFnQ References: <20260408141315.904381-1-mb@smartsharesystems.com> <20260409110558.961159-1-mb@smartsharesystems.com> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: , "Andrew Rybchenko" , "Bruce Richardson" , "Jingjing Wu" , "Praveen Shetty" , "Hemant Agrawal" , "Sachin Saxena" X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org PiBGcm9tOiBNb3J0ZW4gQnLDuHJ1cCBbbWFpbHRvOm1iQHNtYXJ0c2hhcmVzeXN0ZW1zLmNvbV0N Cj4gU2VudDogVGh1cnNkYXksIDkgQXByaWwgMjAyNiAxMy4wNg0KPiANCj4gVGhpcyBwYXRjaCBy ZWZhY3RvcnMgdGhlIG1lbXBvb2wgY2FjaGUgdG8gZWxpbWluYXRlIHNvbWUgdW5leHBlY3RlZA0K PiBiZWhhdmlvdXIgYW5kIHJlZHVjZSB0aGUgbWVtcG9vbCBjYWNoZSBtaXNzIHJhdGUuDQo+IA0K PiAxLg0KPiBUaGUgYWN0dWFsIGNhY2hlIHNpemUgd2FzIDEuNSB0aW1lcyB0aGUgY2FjaGUgc2l6 ZSBzcGVjaWZpZWQgYXQgcnVuLQ0KPiB0aW1lDQo+IG1lbXBvb2wgY3JlYXRpb24uDQo+IFRoaXMg d2FzIG9idmlvdXNseSBub3QgZXhwZWN0ZWQgYnkgYXBwbGljYXRpb24gZGV2ZWxvcGVycy4NCj4g DQo+IDIuDQo+IEluIGdldCBvcGVyYXRpb25zLCB0aGUgY2hlY2sgZm9yIHdoZW4gdG8gdXNlIHRo ZSBjYWNoZSBhcyBib3VuY2UgYnVmZmVyDQo+IGRpZCBub3QgcmVzcGVjdCB0aGUgcnVuLXRpbWUg Y29uZmlndXJlZCBjYWNoZSBzaXplLA0KPiBidXQgY29tcGFyZWQgdG8gdGhlIGJ1aWxkIHRpbWUg bWF4aW11bSBwb3NzaWJsZSBjYWNoZSBzaXplDQo+IChSVEVfTUVNUE9PTF9DQUNIRV9NQVhfU0la RSwgZGVmYXVsdCA1MTIpLg0KPiBFLmcuIHdpdGggYSBjb25maWd1cmVkIGNhY2hlIHNpemUgb2Yg MzIgb2JqZWN0cywgZ2V0dGluZyAyNTYgb2JqZWN0cw0KPiB3b3VsZCBmaXJzdCBmZXRjaCAzMiAr IDI1NiA9IDI4OCBvYmplY3RzIGludG8gdGhlIGNhY2hlLA0KPiBhbmQgdGhlbiBtb3ZlIHRoZSAy NTYgb2JqZWN0cyBmcm9tIHRoZSBjYWNoZSB0byB0aGUgZGVzdGluYXRpb24gbWVtb3J5LA0KPiBp bnN0ZWFkIG9mIGZldGNoaW5nIHRoZSAyNTYgb2JqZWN0cyBkaXJlY3RseSB0byB0aGUgZGVzdGlu YXRpb24gbWVtb3J5Lg0KPiBUaGlzIGhhZCBhIHBlcmZvcm1hbmNlIGNvc3QuDQo+IEhvd2V2ZXIs IHRoaXMgaXMgdW5saWtlbHkgdG8gb2NjdXIgaW4gcmVhbCBhcHBsaWNhdGlvbnMsIHNvIGl0IGlz IG5vdA0KPiBpbXBvcnRhbnQgaW4gaXRzZWxmLg0KPiANCj4gMy4NCj4gV2hlbiBwdXR0aW5nIG9i amVjdHMgaW50byBhIG1lbXBvb2wsIGFuZCB0aGUgbWVtcG9vbCBjYWNoZSBkaWQgbm90IGhhdmUN Cj4gZnJlZSBzcGFjZSBmb3Igc28gbWFueSBvYmplY3RzLA0KPiB0aGUgY2FjaGUgd2FzIGZsdXNo ZWQgY29tcGxldGVseSwgYW5kIHRoZSBuZXcgb2JqZWN0cyB3ZXJlIHRoZW4gcHV0DQo+IGludG8N Cj4gdGhlIGNhY2hlLg0KPiBJLmUuIHRoZSBjYWNoZSBkcmFpbiBsZXZlbCB3YXMgemVyby4NCj4g VGhpcyAoY29tcGxldGUgY2FjaGUgZmx1c2gpIG1lYW50IHRoYXQgYSBzdWJzZXF1ZW50IGdldCBv cGVyYXRpb24gKHdpdGgNCj4gdGhlIHNhbWUgbnVtYmVyIG9mIG9iamVjdHMpIGNvbXBsZXRlbHkg ZW1wdGllZCB0aGUgY2FjaGUsDQo+IHNvIGFub3RoZXIgc3Vic2VxdWVudCBnZXQgb3BlcmF0aW9u IHJlcXVpcmVkIHJlcGxlbmlzaGluZyB0aGUgY2FjaGUuDQo+IA0KPiBTaW1pbGFybHksDQo+IFdo ZW4gZ2V0dGluZyBvYmplY3RzIGZyb20gYSBtZW1wb29sLCBhbmQgdGhlIG1lbXBvb2wgY2FjaGUg ZGlkIG5vdCBob2xkDQo+IHNvDQo+IG1hbnkgb2JqZWN0cywNCj4gdGhlIGNhY2hlIHdhcyByZXBs ZW5pc2hlZCB0byBjYWNoZS0+c2l6ZSArIHJlbWFpbmluZyBvYmplY3RzLA0KPiBhbmQgdGhlbiAo dGhlIHJlbWFpbmluZyBwYXJ0IG9mKSB0aGUgcmVxdWVzdGVkIG9iamVjdHMgd2VyZSBmZXRjaGVk IHZpYQ0KPiB0aGUgY2FjaGUsDQo+IHdoaWNoIGxlZnQgdGhlIGNhY2hlIGZpbGxlZCAodG8gY2Fj aGUtPnNpemUpIGF0IGNvbXBsZXRpb24uDQo+IEkuZS4gdGhlIGNhY2hlIHJlZmlsbCBsZXZlbCB3 YXMgY2FjaGUtPnNpemUgKHBsdXMgc29tZSwgZGVwZW5kaW5nIG9uDQo+IHJlcXVlc3Qgc2l6ZSku DQo+IA0KPiAoMSkgd2FzIGltcHJvdmVkIGJ5IGdlbmVyYWxseSBjb21wYXJpbmcgdG8gY2FjaGUt PnNpemUgaW5zdGVhZCBvZg0KPiBjYWNoZS0+Zmx1c2h0aHJlc2gsIHdoZW4gY29uc2lkZXJpbmcg dGhlIGNhcGFjaXR5IG9mIHRoZSBjYWNoZS4NCj4gVGhlIGNhY2hlLT5mbHVzaHRocmVzaCBmaWVs ZCBpcyBrZXB0IGZvciBBUEkvQUJJIGNvbXBhdGliaWxpdHkNCj4gcHVycG9zZXMsDQo+IGFuZCBp bml0aWFsaXplZCB0byBjYWNoZS0+c2l6ZSBpbnN0ZWFkIG9mIGNhY2hlLT5zaXplICogMS41Lg0K PiANCj4gKDIpIHdhcyBpbXByb3ZlZCBieSBnZW5lcmFsbHkgY29tcGFyaW5nIHRvIGNhY2hlLT5z aXplIC8gMiBpbnN0ZWFkIG9mDQo+IFJURV9NRU1QT09MX0NBQ0hFX01BWF9TSVpFLCB3aGVuIGNo ZWNraW5nIHRoZSBib3VuY2UgYnVmZmVyIGxpbWl0Lg0KPiANCj4gKDMpIHdhcyBpbXByb3ZlZCBi eSBmbHVzaGluZyBhbmQgcmVwbGVuaXNoaW5nIHRoZSBjYWNoZSBieSBoYWxmIGl0cw0KPiBzaXpl LA0KPiBzbyBhIGZsdXNoL3JlZmlsbCBjYW4gYmUgZm9sbG93ZWQgcmFuZG9tbHkgYnkgZ2V0IG9y IHB1dCByZXF1ZXN0cy4NCj4gVGhpcyBhbHNvIHJlZHVjZWQgdGhlIG51bWJlciBvZiBvYmplY3Rz IGluIGVhY2ggZmx1c2gvcmVmaWxsIG9wZXJhdGlvbi4NCj4gDQo+IEFzIGEgY29uc2VxdWVuY2Ug b2YgdGhlc2UgY2hhbmdlcywgdGhlIHNpemUgb2YgdGhlIGFycmF5IGhvbGRpbmcgdGhlDQo+IG9i amVjdHMgaW4gdGhlIGNhY2hlIChjYWNoZS0+b2Jqc1tdKSBubyBsb25nZXIgbmVlZHMgdG8gYmUN Cj4gMiAqIFJURV9NRU1QT09MX0NBQ0hFX01BWF9TSVpFLCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8N Cj4gUlRFX01FTVBPT0xfQ0FDSEVfTUFYX1NJWkUgYXQgYW4gQVBJL0FCSSBicmVha2luZyByZWxl YXNlLg0KPiANCj4gUGVyZm9ybWFuY2UgZGF0YToNCj4gV2l0aCBhIHJlYWwgV0FOIE9wdGltaXph dGlvbiBhcHBsaWNhdGlvbiwgd2hlcmUgdGhlIG51bWJlciBvZiBhbGxvY2F0ZWQNCj4gcGFja2V0 cyB2YXJpZXMgKGFzIHRoZXkgYXJlIGhlbGQgaW4gZS5nLiBzaGFwZXIgcXVldWVzKSwgdGhlIG1l bXBvb2wNCj4gY2FjaGUgbWlzcyByYXRlIGRyb3BwZWQgZnJvbSBjYS4gMS8yMCBvYmplY3RzIHRv IGNhLiAxLzQ4IG9iamVjdHMuDQo+IFRoaXMgd2FzIGRlcGxveWVkIGluIHByb2R1Y3Rpb24gYXQg YW4gSVNQLCBhbmQgdXNpbmcgYW4gZWZmZWN0aXZlIGNhY2hlDQo+IHNpemUgb2YgMzg0IG9iamVj dHMuDQo+IA0KPiBJbiBhZGRpdGlvbiB0byB0aGUgTWVtcG9vbCBsaWJyYXJ5IGNoYW5nZXMsIHNv bWUgSW50ZWwgbmV0d29yayBkcml2ZXJzDQo+IGJ5cGFzc2luZyB0aGUgTWVtcG9vbCBBUEkgdG8g YWNjZXNzIHRoZSBtZW1wb29sIGNhY2hlIHdlcmUgdXBkYXRlZA0KPiBhY2NvcmRpbmdseS4NCj4g VGhlIEludGVsIGlkcGYgQVZYNTEyIGRyaXZlciB3YXMgbWlzc2luZyBzb21lIG1idWYgaW5zdHJ1 bWVudGF0aW9uIHdoZW4NCj4gYnlwYXNzaW5nIHRoZSBQYWNrZXQgQnVmZmVyIChtYnVmKSBBUEks IHNvIHRoaXMgd2FzIGFkZGVkLg0KPiANCj4gRnVydGhlcm1vcmUsIHRoZSBOWFAgZHBhYSBhbmQg ZHBhYTIgbWVtcG9vbCBkcml2ZXJzIHdlcmUgdXBkYXRlZA0KPiBhY2NvcmRpbmdseSwgc3BlY2lm aWNhbGx5IHRvIG5vdCBzZXQgdGhlIGZsdXNoIHRocmVzaG9sZC4NCj4gDQoNCkJ1Z3ppbGxhIElE OiAxMDI3DQpGaXhlczogZWE1ZGQyNzQ0YjkwICgibWVtcG9vbDogY2FjaGUgb3B0aW1pc2F0aW9u cyIpDQoNCj4gU2lnbmVkLW9mZi1ieTogTW9ydGVuIEJyw7hydXAgPG1iQHNtYXJ0c2hhcmVzeXN0 ZW1zLmNvbT4NCj4gLS0tDQo+IHYzOg0KPiAqIEZpeGVkIG15IGNvcHktcGFzdGUgYnVnIGluIGlk cGZfc3BsaXRxX3JlYXJtKCkuDQo+IHYyOg0KPiAqIEZpeGVkIGlzc3VlIGZvdW5kIGJ5IGFiaWRp ZmY6DQo+ICAgUmV2ZXJ0ZWQgY2FjaGUgb2JqZWN0cyBhcnJheSBzaXplIHJlZHVjdGlvbi4gQWRk ZWQgYSBub3RlIGluc3RlYWQuDQo+ICogQWRkZWQgbWlzc2luZyBtYnVmIGluc3RydW1lbnRhdGlv biB0byB0aGUgSW50ZWwgaWRwZiBBVlg1MTIgZHJpdmVyLg0KPiAqIFVwZGF0ZWQgaWRwZl9zcGxp dHFfcmVhcm0oKSBsaWtlIGlkcGZfc2luZ2xlcV9yZWFybSgpLg0KPiAqIEFkZGVkIGEgZmV3IG1v cmUgX19ydGVfYXNzdW1lKCksIGluc3BpcmVkIGJ5IEFJIHJldmlldyBmZWVkYmFjay4NCj4gKiBV cGRhdGVkIE5YUCBkcGFhIGFuZCBkcGFhMiBtZW1wb29sIGRyaXZlcnMgdG8gbm90IHNldCBtZW1w b29sIGNhY2hlDQo+ICAgZmx1c2ggdGhyZXNob2xkLg0KPiAqIEFkZGVkIHJlbGVhc2Ugbm90ZXMu DQo+ICogQWRkZWQgZGVwcmVjYXRpb24gbm90ZXMuDQo+IC0tLQ0KPiAgZG9jL2d1aWRlcy9yZWxf bm90ZXMvZGVwcmVjYXRpb24ucnN0ICAgICAgICAgIHwgIDcgKysNCj4gIGRvYy9ndWlkZXMvcmVs X25vdGVzL3JlbGVhc2VfMjZfMDcucnN0ICAgICAgICB8IDE4ICsrKysrDQo+ICBkcml2ZXJzL21l bXBvb2wvZHBhYS9kcGFhX21lbXBvb2wuYyAgICAgICAgICAgfCAxNCAtLS0tDQo+ICBkcml2ZXJz L21lbXBvb2wvZHBhYTIvZHBhYTJfaHdfbWVtcG9vbC5jICAgICAgfCAxNCAtLS0tDQo+ICBkcml2 ZXJzL25ldC9pbnRlbC9jb21tb24vdHguaCAgICAgICAgICAgICAgICAgfCAzOCArLS0tLS0tLS0N Cj4gIC4uLi9uZXQvaW50ZWwvaWRwZi9pZHBmX2NvbW1vbl9yeHR4X2F2eDUxMi5jICB8IDU4ICsr KysrKysrKystLS0NCj4gIGxpYi9tZW1wb29sL3J0ZV9tZW1wb29sLmMgICAgICAgICAgICAgICAg ICAgICB8IDE0ICstLS0NCj4gIGxpYi9tZW1wb29sL3J0ZV9tZW1wb29sLmggICAgICAgICAgICAg ICAgICAgICB8IDgxICsrKysrKysrKysrLS0tLS0tLS0NCj4gIDggZmlsZXMgY2hhbmdlZCwgMTIz IGluc2VydGlvbnMoKyksIDEyMSBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9kb2Mv Z3VpZGVzL3JlbF9ub3Rlcy9kZXByZWNhdGlvbi5yc3QNCj4gYi9kb2MvZ3VpZGVzL3JlbF9ub3Rl cy9kZXByZWNhdGlvbi5yc3QNCj4gaW5kZXggMzVjOWI0ZTA2Yy4uNDA3NjBmZmZiYiAxMDA2NDQN Cj4gLS0tIGEvZG9jL2d1aWRlcy9yZWxfbm90ZXMvZGVwcmVjYXRpb24ucnN0DQo+ICsrKyBiL2Rv Yy9ndWlkZXMvcmVsX25vdGVzL2RlcHJlY2F0aW9uLnJzdA0KPiBAQCAtMTU0LDMgKzE1NCwxMCBA QCBEZXByZWNhdGlvbiBOb3RpY2VzDQo+ICAqIGJ1cy92bWJ1czogU3RhcnRpbmcgRFBESyAyNS4x MSwgYWxsIHRoZSB2bWJ1cyBBUEkgZGVmaW5lZCBpbg0KPiAgICBgYGRyaXZlcnMvYnVzL3ZtYnVz L3J0ZV9idXNfdm1idXMuaGBgIHdpbGwgYmVjb21lIGludGVybmFsIHRvIERQREsuDQo+ICAgIFRo b3NlIEFQSSBmdW5jdGlvbnMgYXJlIHVzZWQgaW50ZXJuYWxseSBieSBEUERLIGNvcmUgYW5kIG5l dHZzYyBQTUQuDQo+ICsNCj4gKyogbWVtcG9vbDogVGhlIGBgZmx1c2h0aHJlc2hgYCBmaWVsZCBp biBgYHN0cnVjdCBydGVfbWVtcG9vbF9jYWNoZWBgDQo+ICsgIGlzIG9ic29sZXRlLCBhbmQgd2ls bCBiZSByZW1vdmVkIGluIERQREsgMjYuMTEuDQo+ICsNCj4gKyogbWVtcG9vbDogVGhlIG9iamVj dCBhcnJheSBpbiBgYHN0cnVjdCBydGVfbWVtcG9vbF9jYWNoZWBgIGlzDQo+IG92ZXJzaXplIGJ5 DQo+ICsgIGZhY3RvciB0d28sIGFuZCB3aWxsIGJlIHJlZHVjZWQgdG8gYGBSVEVfTUVNUE9PTF9D QUNIRV9NQVhfU0laRWBgIGluDQo+ICsgIERQREsgMjYuMTEuDQo+IGRpZmYgLS1naXQgYS9kb2Mv Z3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzI2XzA3LnJzdA0KPiBiL2RvYy9ndWlkZXMvcmVsX25v dGVzL3JlbGVhc2VfMjZfMDcucnN0DQo+IGluZGV4IDA2MGIyNmZmNjEuLmFiNDYxYmM0ZGEgMTAw NjQ0DQo+IC0tLSBhL2RvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjZfMDcucnN0DQo+ICsr KyBiL2RvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjZfMDcucnN0DQo+IEBAIC0yNCw2ICsy NCwyNCBAQCBEUERLIFJlbGVhc2UgMjYuMDcNCj4gIE5ldyBGZWF0dXJlcw0KPiAgLS0tLS0tLS0t LS0tDQo+IA0KPiArKiAqKkNoYW5nZWQgZWZmZWN0aXZlIHNpemUgb2YgbWVtcG9vbCBjYWNoZS4q Kg0KPiArDQo+ICsgICogVGhlIGVmZmVjdGl2ZSBzaXplIG9mIGEgbWVtcG9vbCBjYWNoZSB3YXMg Y2hhbmdlZCB0byBtYXRjaCB0aGUNCj4gc3BlY2lmaWVkIHNpemUgYXQgbWVtcG9vbCBjcmVhdGlv bjsgdGhlIGVmZmVjdGl2ZSBzaXplIHdhcyBwcmV2aW91c2x5DQo+IDUwICUgbGFyZ2VyIHRoYW4g cmVxdWVzdGVkLg0KPiArICAqIFRoZSBgYGZsdXNodGhyZXNoYGAgZmllbGQgb2YgdGhlIGBgc3Ry dWN0IHJ0ZV9tZW1wb29sX2NhY2hlYGANCj4gYmVjYW1lIG9ic29sZXRlLCBidXQgd2FzIGtlcHQg Zm9yIEFQSS9BQkkgY29tcGF0aWJpbGl0eSBwdXJwb3Nlcy4NCj4gKyAgKiBUaGUgZWZmZWN0aXZl IHNpemUgb2YgdGhlIGBgb2Jqc2BgIGFycmF5IGluIHRoZSBgYHN0cnVjdA0KPiBydGVfbWVtcG9v bF9jYWNoZWBgIHdhcyByZWR1Y2VkIHRvIGBgUlRFX01FTVBPT0xfQ0FDSEVfTUFYX1NJWkVgYCwg YnV0DQo+IGl0cyBzaXplIHdhcyBrZXB0IGZvciBBUEkvQUJJIGNvbXBhdGliaWxpdHkgcHVycG9z ZXMuDQo+ICsNCj4gKyogKipJbXByb3ZlZCBtZW1wb29sIGNhY2hlIGZsdXNoL3JlZmlsbCBhbGdv cml0aG0uKioNCj4gKw0KPiArICAqIFRoZSBtZW1wb29sIGNhY2hlIGZsdXNoL3JlZmlsbCBhbGdv cml0aG0gd2FzIGltcHJvdmVkLCB0byByZWR1Y2UNCj4gdGhlIG1lbXBvb2wgY2FjaGUgbWlzcyBy YXRlLg0KPiArDQo+ICsqICoqVXBkYXRlZCBJbnRlbCBjb21tb24gZHJpdmVyLioqDQo+ICsNCj4g KyAgKiBBZGRlZCBtaXNzaW5nIG1idWYgaGlzdG9yeSBtYXJraW5nIHRvIHZlY3Rvcml6ZWQgVHgg cGF0aCBmb3INCj4gTUJVRl9GQVNUX0ZSRUUuDQo+ICsNCj4gKyogKipVcGRhdGVkIEludGVsIGlk cGYgZHJpdmVyLioqDQo+ICsNCj4gKyAgKiBBZGRlZCBtaXNzaW5nIG1idWYgaGlzdG9yeSBtYXJr aW5nIHRvIEFWWDUxMiB2ZWN0b3JpemVkIFJ4IHBhdGguDQo+ICsNCj4gIC4uIFRoaXMgc2VjdGlv biBzaG91bGQgY29udGFpbiBuZXcgZmVhdHVyZXMgYWRkZWQgaW4gdGhpcyByZWxlYXNlLg0KPiAg ICAgU2FtcGxlIGZvcm1hdDoNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lbXBvb2wvZHBh YS9kcGFhX21lbXBvb2wuYw0KPiBiL2RyaXZlcnMvbWVtcG9vbC9kcGFhL2RwYWFfbWVtcG9vbC5j DQo+IGluZGV4IDJmOTM5NWIzZjQuLjJmODU1NWEwMjYgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMv bWVtcG9vbC9kcGFhL2RwYWFfbWVtcG9vbC5jDQo+ICsrKyBiL2RyaXZlcnMvbWVtcG9vbC9kcGFh L2RwYWFfbWVtcG9vbC5jDQo+IEBAIC01OCw4ICs1OCw2IEBAIGRwYWFfbWJ1Zl9jcmVhdGVfcG9v bChzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wKQ0KPiAgCXN0cnVjdCBibWFuX3Bvb2xfcGFyYW1zIHBh cmFtcyA9IHsNCj4gIAkJLmZsYWdzID0gQk1BTl9QT09MX0ZMQUdfRFlOQU1JQ19CUElEDQo+ICAJ fTsNCj4gLQl1bnNpZ25lZCBpbnQgbGNvcmVfaWQ7DQo+IC0Jc3RydWN0IHJ0ZV9tZW1wb29sX2Nh Y2hlICpjYWNoZTsNCj4gDQo+ICAJTUVNUE9PTF9JTklUX0ZVTkNfVFJBQ0UoKTsNCj4gDQo+IEBA IC0xMjksMTggKzEyNyw2IEBAIGRwYWFfbWJ1Zl9jcmVhdGVfcG9vbChzdHJ1Y3QgcnRlX21lbXBv b2wgKm1wKQ0KPiAgCXJ0ZV9tZW1jcHkoYnBfaW5mbywgKHZvaWQgKikmcnRlX2RwYWFfYnBpZF9p bmZvW2JwaWRdLA0KPiAgCQkgICBzaXplb2Yoc3RydWN0IGRwYWFfYnBfaW5mbykpOw0KPiAgCW1w LT5wb29sX2RhdGEgPSAodm9pZCAqKWJwX2luZm87DQo+IC0JLyogVXBkYXRlIHBlciBjb3JlIG1l bXBvb2wgY2FjaGUgdGhyZXNob2xkIHRvIG9wdGltYWwgdmFsdWUgd2hpY2gNCj4gaXMNCj4gLQkg KiBudW1iZXIgb2YgYnVmZmVycyB0aGF0IGNhbiBiZSByZWxlYXNlZCB0byBIVyBidWZmZXIgcG9v bCBpbg0KPiAtCSAqIGEgc2luZ2xlIEFQSSBjYWxsLg0KPiAtCSAqLw0KPiAtCWZvciAobGNvcmVf aWQgPSAwOyBsY29yZV9pZCA8IFJURV9NQVhfTENPUkU7IGxjb3JlX2lkKyspIHsNCj4gLQkJY2Fj aGUgPSAmbXAtPmxvY2FsX2NhY2hlW2xjb3JlX2lkXTsNCj4gLQkJRFBBQV9NRU1QT09MX0RFQlVH KCJsQ29yZSAlZDogY2FjaGUtPmZsdXNodGhyZXNoICVkIC0+ICVkIiwNCj4gLQkJCWxjb3JlX2lk LCBjYWNoZS0+Zmx1c2h0aHJlc2gsDQo+IC0JCQkodWludDMyX3QpKGNhY2hlLT5zaXplICsgRFBB QV9NQlVGX01BWF9BQ1FfUkVMKSk7DQo+IC0JCWlmIChjYWNoZS0+Zmx1c2h0aHJlc2gpDQo+IC0J CQljYWNoZS0+Zmx1c2h0aHJlc2ggPSBjYWNoZS0+c2l6ZSArDQo+IERQQUFfTUJVRl9NQVhfQUNR X1JFTDsNCj4gLQl9DQo+IA0KPiAgCURQQUFfTUVNUE9PTF9JTkZPKCJCTUFOIHBvb2wgY3JlYXRl ZCBmb3IgYnBpZCA9JWQiLCBicGlkKTsNCj4gIAlyZXR1cm4gMDsNCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWVtcG9vbC9kcGFhMi9kcGFhMl9od19tZW1wb29sLmMNCj4gYi9kcml2ZXJzL21lbXBv b2wvZHBhYTIvZHBhYTJfaHdfbWVtcG9vbC5jDQo+IGluZGV4IDAyYjY3NDE4NTMuLmVlMDAxZDhj ZTAgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbWVtcG9vbC9kcGFhMi9kcGFhMl9od19tZW1wb29s LmMNCj4gKysrIGIvZHJpdmVycy9tZW1wb29sL2RwYWEyL2RwYWEyX2h3X21lbXBvb2wuYw0KPiBA QCAtNTQsOCArNTQsNiBAQCBydGVfaHdfbWJ1Zl9jcmVhdGVfcG9vbChzdHJ1Y3QgcnRlX21lbXBv b2wgKm1wKQ0KPiAgCXN0cnVjdCBkcGFhMl9icF9pbmZvICpicF9pbmZvOw0KPiAgCXN0cnVjdCBk cGJwX2F0dHIgZHBicF9hdHRyOw0KPiAgCXVpbnQzMl90IGJwaWQ7DQo+IC0JdW5zaWduZWQgaW50 IGxjb3JlX2lkOw0KPiAtCXN0cnVjdCBydGVfbWVtcG9vbF9jYWNoZSAqY2FjaGU7DQo+ICAJaW50 IHJldDsNCj4gDQo+ICAJYXZhaWxfZHBicCA9IGRwYWEyX2FsbG9jX2RwYnBfZGV2KCk7DQo+IEBA IC0xNTIsMTggKzE1MCw2IEBAIHJ0ZV9od19tYnVmX2NyZWF0ZV9wb29sKHN0cnVjdCBydGVfbWVt cG9vbCAqbXApDQo+ICAJRFBBQTJfTUVNUE9PTF9ERUJVRygiQlAgTGlzdCBjcmVhdGVkIGZvciBi cGlkID0lZCIsDQo+IGRwYnBfYXR0ci5icGlkKTsNCj4gDQo+ICAJaF9icF9saXN0ID0gYnBfbGlz dDsNCj4gLQkvKiBVcGRhdGUgcGVyIGNvcmUgbWVtcG9vbCBjYWNoZSB0aHJlc2hvbGQgdG8gb3B0 aW1hbCB2YWx1ZSB3aGljaA0KPiBpcw0KPiAtCSAqIG51bWJlciBvZiBidWZmZXJzIHRoYXQgY2Fu IGJlIHJlbGVhc2VkIHRvIEhXIGJ1ZmZlciBwb29sIGluDQo+IC0JICogYSBzaW5nbGUgQVBJIGNh bGwuDQo+IC0JICovDQo+IC0JZm9yIChsY29yZV9pZCA9IDA7IGxjb3JlX2lkIDwgUlRFX01BWF9M Q09SRTsgbGNvcmVfaWQrKykgew0KPiAtCQljYWNoZSA9ICZtcC0+bG9jYWxfY2FjaGVbbGNvcmVf aWRdOw0KPiAtCQlEUEFBMl9NRU1QT09MX0RFQlVHKCJsQ29yZSAlZDogY2FjaGUtPmZsdXNodGhy ZXNoICVkIC0+DQo+ICVkIiwNCj4gLQkJCWxjb3JlX2lkLCBjYWNoZS0+Zmx1c2h0aHJlc2gsDQo+ IC0JCQkodWludDMyX3QpKGNhY2hlLT5zaXplICsgRFBBQTJfTUJVRl9NQVhfQUNRX1JFTCkpOw0K PiAtCQlpZiAoY2FjaGUtPmZsdXNodGhyZXNoKQ0KPiAtCQkJY2FjaGUtPmZsdXNodGhyZXNoID0g Y2FjaGUtPnNpemUgKw0KPiBEUEFBMl9NQlVGX01BWF9BQ1FfUkVMOw0KPiAtCX0NCj4gDQo+ICAJ cmV0dXJuIDA7DQo+ICBlcnI0Og0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaW50ZWwvY29t bW9uL3R4LmgNCj4gYi9kcml2ZXJzL25ldC9pbnRlbC9jb21tb24vdHguaA0KPiBpbmRleCAyODNi ZDU4ZDVkLi5lZWIwOTgwZDQwIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL25ldC9pbnRlbC9jb21t b24vdHguaA0KPiArKysgYi9kcml2ZXJzL25ldC9pbnRlbC9jb21tb24vdHguaA0KPiBAQCAtMjg0 LDQzICsyODQsMTMgQEAgY2lfdHhfZnJlZV9idWZzX3ZlYyhzdHJ1Y3QgY2lfdHhfcXVldWUgKnR4 cSwNCj4gY2lfZGVzY19kb25lX2ZuIGRlc2NfZG9uZSwgYm9vbCBjdHgNCj4gIAkJCXR4cS0+ZmFz dF9mcmVlX21wIDoNCj4gIAkJCSh0eHEtPmZhc3RfZnJlZV9tcCA9IHR4ZXBbMF0ubWJ1Zi0+cG9v bCk7DQo+IA0KPiAtCWlmIChtcCAhPSBOVUxMICYmIChuICYgMzEpID09IDApIHsNCj4gLQkJdm9p ZCAqKmNhY2hlX29ianM7DQo+IC0JCXN0cnVjdCBydGVfbWVtcG9vbF9jYWNoZSAqY2FjaGUgPQ0K PiBydGVfbWVtcG9vbF9kZWZhdWx0X2NhY2hlKG1wLCBydGVfbGNvcmVfaWQoKSk7DQo+IC0NCj4g LQkJaWYgKGNhY2hlID09IE5VTEwpDQo+IC0JCQlnb3RvIG5vcm1hbDsNCj4gLQ0KPiAtCQljYWNo ZV9vYmpzID0gJmNhY2hlLT5vYmpzW2NhY2hlLT5sZW5dOw0KPiAtDQo+IC0JCWlmIChuID4gUlRF X01FTVBPT0xfQ0FDSEVfTUFYX1NJWkUpIHsNCj4gLQkJCXJ0ZV9tZW1wb29sX29wc19lbnF1ZXVl X2J1bGsobXAsICh2b2lkICopdHhlcCwgbik7DQo+IC0JCQlnb3RvIGRvbmU7DQo+IC0JCX0NCj4g LQ0KPiAtCQkvKiBUaGUgY2FjaGUgZm9sbG93cyB0aGUgZm9sbG93aW5nIGFsZ29yaXRobQ0KPiAt CQkgKiAgIDEuIEFkZCB0aGUgb2JqZWN0cyB0byB0aGUgY2FjaGUNCj4gLQkJICogICAyLiBBbnl0 aGluZyBncmVhdGVyIHRoYW4gdGhlIGNhY2hlIG1pbiB2YWx1ZSAoaWYgaXQNCj4gLQkJICogICBj cm9zc2VzIHRoZSBjYWNoZSBmbHVzaCB0aHJlc2hvbGQpIGlzIGZsdXNoZWQgdG8gdGhlDQo+IHJp bmcuDQo+IC0JCSAqLw0KPiAtCQkvKiBBZGQgZWxlbWVudHMgYmFjayBpbnRvIHRoZSBjYWNoZSAq Lw0KPiAtCQl1aW50MzJfdCBjb3BpZWQgPSAwOw0KPiAtCQkvKiBuIGlzIG11bHRpcGxlIG9mIDMy ICovDQo+IC0JCXdoaWxlIChjb3BpZWQgPCBuKSB7DQo+IC0JCQltZW1jcHkoJmNhY2hlX29ianNb Y29waWVkXSwgJnR4ZXBbY29waWVkXSwgMzIgKg0KPiBzaXplb2Yodm9pZCAqKSk7DQo+IC0JCQlj b3BpZWQgKz0gMzI7DQo+IC0JCX0NCj4gLQkJY2FjaGUtPmxlbiArPSBuOw0KPiAtDQo+IC0JCWlm IChjYWNoZS0+bGVuID49IGNhY2hlLT5mbHVzaHRocmVzaCkgew0KPiAtCQkJcnRlX21lbXBvb2xf b3BzX2VucXVldWVfYnVsayhtcCwgJmNhY2hlLT5vYmpzW2NhY2hlLQ0KPiA+c2l6ZV0sDQo+IC0J CQkJCWNhY2hlLT5sZW4gLSBjYWNoZS0+c2l6ZSk7DQo+IC0JCQljYWNoZS0+bGVuID0gY2FjaGUt PnNpemU7DQo+IC0JCX0NCj4gKwlpZiAobXAgIT0gTlVMTCkgew0KPiArCQlzdGF0aWNfYXNzZXJ0 KHNpemVvZigqdHhlcCkgPT0gc2l6ZW9mKHN0cnVjdCBydGVfbWJ1ZiAqKSwNCj4gKwkJCQkidHhl cCBhcnJheSBpcyBub3Qgc2ltaWxhciB0byBhbiBhcnJheSBvZg0KPiBydGVfbWJ1ZiBwb2ludGVy cyIpOw0KPiArCQlydGVfbWJ1Zl9yYXdfZnJlZV9idWxrKG1wLCAodm9pZCAqKXR4ZXAsIG4pOw0K PiAgCQlnb3RvIGRvbmU7DQo+ICAJfQ0KPiANCj4gLW5vcm1hbDoNCj4gIAltID0gcnRlX3BrdG1i dWZfcHJlZnJlZV9zZWcodHhlcFswXS5tYnVmKTsNCj4gIAlpZiAobGlrZWx5KG0pKSB7DQo+ICAJ CWZyZWVbMF0gPSBtOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaW50ZWwvaWRwZi9pZHBm X2NvbW1vbl9yeHR4X2F2eDUxMi5jDQo+IGIvZHJpdmVycy9uZXQvaW50ZWwvaWRwZi9pZHBmX2Nv bW1vbl9yeHR4X2F2eDUxMi5jDQo+IGluZGV4IDlhZjI3NWNkOWQuLjU5YTZjMjJlOTggMTAwNjQ0 DQo+IC0tLSBhL2RyaXZlcnMvbmV0L2ludGVsL2lkcGYvaWRwZl9jb21tb25fcnh0eF9hdng1MTIu Yw0KPiArKysgYi9kcml2ZXJzL25ldC9pbnRlbC9pZHBmL2lkcGZfY29tbW9uX3J4dHhfYXZ4NTEy LmMNCj4gQEAgLTE0OCwxNCArMTQ4LDIwIEBAIGlkcGZfc2luZ2xlcV9yZWFybShzdHJ1Y3QgaWRw Zl9yeF9xdWV1ZSAqcnhxKQ0KPiAgCS8qIENhbiB0aGlzIGJlIHNhdGlzZmllZCBmcm9tIHRoZSBj YWNoZT8gKi8NCj4gIAlpZiAoY2FjaGUtPmxlbiA8IElEUEZfUlhRX1JFQVJNX1RIUkVTSCkgew0K PiAgCQkvKiBOby4gQmFja2ZpbGwgdGhlIGNhY2hlIGZpcnN0LCBhbmQgdGhlbiBmaWxsIGZyb20g aXQgKi8NCj4gLQkJdWludDMyX3QgcmVxID0gSURQRl9SWFFfUkVBUk1fVEhSRVNIICsgKGNhY2hl LT5zaXplIC0NCj4gLQkJCQkJCQljYWNoZS0+bGVuKTsNCj4gDQo+IC0JCS8qIEhvdyBtYW55IGRv IHdlIHJlcXVpcmUgaS5lLiBudW1iZXIgdG8gZmlsbCB0aGUgY2FjaGUgKw0KPiB0aGUgcmVxdWVz dCAqLw0KPiArCQkvKiBCYWNrZmlsbCB3b3VsZCBleGNlZWQgdGhlIGNhY2hlIGJvdW5jZSBidWZm ZXIgbGltaXQ/ICovDQo+ICsJCV9fcnRlX2Fzc3VtZShjYWNoZS0+c2l6ZSAvIDIgPD0gUlRFX01F TVBPT0xfQ0FDSEVfTUFYX1NJWkUNCj4gLyAyKTsNCj4gKwkJaWYgKHVubGlrZWx5KElEUEZfUlhR X1JFQVJNX1RIUkVTSCA+IGNhY2hlLT5zaXplIC8gMikpIHsNCj4gKwkJCWlkcGZfc2luZ2xlcV9y ZWFybV9jb21tb24ocnhxKTsNCj4gKwkJCXJldHVybjsNCj4gKwkJfQ0KPiArDQo+ICsJCS8qIEJh Y2tmaWxsIHRoZSBjYWNoZSBmcm9tIHRoZSBiYWNrZW5kOyBmZXRjaCAoc2l6ZSAvIDIpDQo+IG9i amVjdHMuICovDQo+ICsJCV9fcnRlX2Fzc3VtZShjYWNoZS0+bGVuIDwgY2FjaGUtPnNpemUgLyAy KTsNCj4gIAkJaW50IHJldCA9IHJ0ZV9tZW1wb29sX29wc19kZXF1ZXVlX2J1bGsNCj4gLQkJCQko cnhxLT5tcCwgJmNhY2hlLT5vYmpzW2NhY2hlLT5sZW5dLCByZXEpOw0KPiArCQkJCShyeHEtPm1w LCAmY2FjaGUtPm9ianNbY2FjaGUtPmxlbl0sIGNhY2hlLT5zaXplDQo+IC8gMik7DQo+ICAJCWlm IChyZXQgPT0gMCkgew0KPiAtCQkJY2FjaGUtPmxlbiArPSByZXE7DQo+ICsJCQljYWNoZS0+bGVu ICs9IGNhY2hlLT5zaXplIC8gMjsNCj4gIAkJfSBlbHNlIHsNCj4gIAkJCWlmIChyeHEtPnJ4cmVh cm1fbmIgKyBJRFBGX1JYUV9SRUFSTV9USFJFU0ggPj0NCj4gIAkJCSAgICByeHEtPm5iX3J4X2Rl c2MpIHsNCj4gQEAgLTIyMSw2ICsyMjcsMTcgQEAgaWRwZl9zaW5nbGVxX3JlYXJtKHN0cnVjdCBp ZHBmX3J4X3F1ZXVlICpyeHEpDQo+ICAJCV9tbTUxMl9zdG9yZXVfc2k1MTIoUlRFX0NBU1RfUFRS KHZvaWQgKiwgKHJ4ZHAgKyA0KSksDQo+IGRlc2M0XzUpOw0KPiAgCQlfbW01MTJfc3RvcmV1X3Np NTEyKFJURV9DQVNUX1BUUih2b2lkICosIChyeGRwICsgNikpLA0KPiBkZXNjNl83KTsNCj4gDQo+ ICsJCS8qIEluc3RydW1lbnRhdGlvbiBhcyBpbiBydGVfbWJ1Zl9yYXdfYWxsb2NfYnVsaygpICov DQo+ICsJCV9fcnRlX21idWZfcmF3X3Nhbml0eV9jaGVja19tcChyeHBbMF0sIHJ4cS0+bXApOw0K PiArCQlfX3J0ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2tfbXAocnhwWzFdLCByeHEtPm1wKTsNCj4g KwkJX19ydGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNrX21wKHJ4cFsyXSwgcnhxLT5tcCk7DQo+ICsJ CV9fcnRlX21idWZfcmF3X3Nhbml0eV9jaGVja19tcChyeHBbM10sIHJ4cS0+bXApOw0KPiArCQlf X3J0ZV9tYnVmX3Jhd19zYW5pdHlfY2hlY2tfbXAocnhwWzRdLCByeHEtPm1wKTsNCj4gKwkJX19y dGVfbWJ1Zl9yYXdfc2FuaXR5X2NoZWNrX21wKHJ4cFs1XSwgcnhxLT5tcCk7DQo+ICsJCV9fcnRl X21idWZfcmF3X3Nhbml0eV9jaGVja19tcChyeHBbNl0sIHJ4cS0+bXApOw0KPiArCQlfX3J0ZV9t YnVmX3Jhd19zYW5pdHlfY2hlY2tfbXAocnhwWzddLCByeHEtPm1wKTsNCj4gKwkJcnRlX21idWZf aGlzdG9yeV9tYXJrX2J1bGsocnhwLCA4LA0KPiBSVEVfTUJVRl9ISVNUT1JZX09QX0xJQl9BTExP Qyk7DQo+ICsNCj4gIAkJcnhwICs9IElEUEZfREVTQ1NfUEVSX0xPT1BfQVZYOw0KPiAgCQlyeGRw ICs9IElEUEZfREVTQ1NfUEVSX0xPT1BfQVZYOw0KPiAgCQljYWNoZS0+bGVuIC09IElEUEZfREVT Q1NfUEVSX0xPT1BfQVZYOw0KPiBAQCAtNTY1LDE0ICs1ODIsMjAgQEAgaWRwZl9zcGxpdHFfcmVh cm0oc3RydWN0IGlkcGZfcnhfcXVldWUgKnJ4X2J1ZnEpDQo+ICAJLyogQ2FuIHRoaXMgYmUgc2F0 aXNmaWVkIGZyb20gdGhlIGNhY2hlPyAqLw0KPiAgCWlmIChjYWNoZS0+bGVuIDwgSURQRl9SWFFf UkVBUk1fVEhSRVNIKSB7DQo+ICAJCS8qIE5vLiBCYWNrZmlsbCB0aGUgY2FjaGUgZmlyc3QsIGFu ZCB0aGVuIGZpbGwgZnJvbSBpdCAqLw0KPiAtCQl1aW50MzJfdCByZXEgPSBJRFBGX1JYUV9SRUFS TV9USFJFU0ggKyAoY2FjaGUtPnNpemUgLQ0KPiAtCQkJCQkJCWNhY2hlLT5sZW4pOw0KPiANCj4g LQkJLyogSG93IG1hbnkgZG8gd2UgcmVxdWlyZSBpLmUuIG51bWJlciB0byBmaWxsIHRoZSBjYWNo ZSArDQo+IHRoZSByZXF1ZXN0ICovDQo+ICsJCS8qIEJhY2tmaWxsIHdvdWxkIGV4Y2VlZCB0aGUg Y2FjaGUgYm91bmNlIGJ1ZmZlciBsaW1pdD8gKi8NCj4gKwkJX19ydGVfYXNzdW1lKGNhY2hlLT5z aXplIC8gMiA8PSBSVEVfTUVNUE9PTF9DQUNIRV9NQVhfU0laRQ0KPiAvIDIpOw0KPiArCQlpZiAo dW5saWtlbHkoSURQRl9SWFFfUkVBUk1fVEhSRVNIID4gY2FjaGUtPnNpemUgLyAyKSkgew0KPiAr CQkJaWRwZl9zcGxpdHFfcmVhcm1fY29tbW9uKHJ4X2J1ZnEpOw0KPiArCQkJcmV0dXJuOw0KPiAr CQl9DQo+ICsNCj4gKwkJLyogQmFja2ZpbGwgdGhlIGNhY2hlIGZyb20gdGhlIGJhY2tlbmQ7IGZl dGNoIChzaXplIC8gMikNCj4gb2JqZWN0cy4gKi8NCj4gKwkJX19ydGVfYXNzdW1lKGNhY2hlLT5s ZW4gPCBjYWNoZS0+c2l6ZSAvIDIpOw0KPiAgCQlpbnQgcmV0ID0gcnRlX21lbXBvb2xfb3BzX2Rl cXVldWVfYnVsaw0KPiAtCQkJCShyeF9idWZxLT5tcCwgJmNhY2hlLT5vYmpzW2NhY2hlLT5sZW5d LCByZXEpOw0KPiArCQkJCShyeF9idWZxLT5tcCwgJmNhY2hlLT5vYmpzW2NhY2hlLT5sZW5dLCBj YWNoZS0NCj4gPnNpemUgLyAyKTsNCj4gIAkJaWYgKHJldCA9PSAwKSB7DQo+IC0JCQljYWNoZS0+ bGVuICs9IHJlcTsNCj4gKwkJCWNhY2hlLT5sZW4gKz0gY2FjaGUtPnNpemUgLyAyOw0KPiAgCQl9 IGVsc2Ugew0KPiAgCQkJaWYgKHJ4X2J1ZnEtPnJ4cmVhcm1fbmIgKyBJRFBGX1JYUV9SRUFSTV9U SFJFU0ggPj0NCj4gIAkJCSAgICByeF9idWZxLT5uYl9yeF9kZXNjKSB7DQo+IEBAIC01ODUsOCAr NjA4LDggQEAgaWRwZl9zcGxpdHFfcmVhcm0oc3RydWN0IGlkcGZfcnhfcXVldWUgKnJ4X2J1ZnEp DQo+ICAJCQkJCQkJIGRtYV9hZGRyMCk7DQo+ICAJCQkJfQ0KPiAgCQkJfQ0KPiAtCQlydGVfYXRv bWljX2ZldGNoX2FkZF9leHBsaWNpdCgmcnhfYnVmcS0NCj4gPnJ4X3N0YXRzLm1idWZfYWxsb2Nf ZmFpbGVkLA0KPiAtCQkJCSAgIElEUEZfUlhRX1JFQVJNX1RIUkVTSCwNCj4gcnRlX21lbW9yeV9v cmRlcl9yZWxheGVkKTsNCj4gKwkJCXJ0ZV9hdG9taWNfZmV0Y2hfYWRkX2V4cGxpY2l0KCZyeF9i dWZxLQ0KPiA+cnhfc3RhdHMubWJ1Zl9hbGxvY19mYWlsZWQsDQo+ICsJCQkJCSAgIElEUEZfUlhR X1JFQVJNX1RIUkVTSCwNCj4gcnRlX21lbW9yeV9vcmRlcl9yZWxheGVkKTsNCj4gIAkJCXJldHVy bjsNCj4gIAkJfQ0KPiAgCX0NCj4gQEAgLTYyOSw2ICs2NTIsMTcgQEAgaWRwZl9zcGxpdHFfcmVh cm0oc3RydWN0IGlkcGZfcnhfcXVldWUgKnJ4X2J1ZnEpDQo+ICAJCXJ4ZHBbN10uc3BsaXRfcmQu cGt0X2FkZHIgPQ0KPiANCj4gCV9tbV9jdnRzaTEyOF9zaTY0KF9tbTUxMl9leHRyYWN0aTMyeDRf ZXBpMzIoaW92YV9hZGRyc18xLCAzKSk7DQo+IA0KPiArCQkvKiBJbnN0cnVtZW50YXRpb24gYXMg aW4gcnRlX21idWZfcmF3X2FsbG9jX2J1bGsoKSAqLw0KPiArCQlfX3J0ZV9tYnVmX3Jhd19zYW5p dHlfY2hlY2tfbXAocnhwWzBdLCByeF9idWZxLT5tcCk7DQo+ICsJCV9fcnRlX21idWZfcmF3X3Nh bml0eV9jaGVja19tcChyeHBbMV0sIHJ4X2J1ZnEtPm1wKTsNCj4gKwkJX19ydGVfbWJ1Zl9yYXdf c2FuaXR5X2NoZWNrX21wKHJ4cFsyXSwgcnhfYnVmcS0+bXApOw0KPiArCQlfX3J0ZV9tYnVmX3Jh d19zYW5pdHlfY2hlY2tfbXAocnhwWzNdLCByeF9idWZxLT5tcCk7DQo+ICsJCV9fcnRlX21idWZf cmF3X3Nhbml0eV9jaGVja19tcChyeHBbNF0sIHJ4X2J1ZnEtPm1wKTsNCj4gKwkJX19ydGVfbWJ1 Zl9yYXdfc2FuaXR5X2NoZWNrX21wKHJ4cFs1XSwgcnhfYnVmcS0+bXApOw0KPiArCQlfX3J0ZV9t YnVmX3Jhd19zYW5pdHlfY2hlY2tfbXAocnhwWzZdLCByeF9idWZxLT5tcCk7DQo+ICsJCV9fcnRl X21idWZfcmF3X3Nhbml0eV9jaGVja19tcChyeHBbN10sIHJ4X2J1ZnEtPm1wKTsNCj4gKwkJcnRl X21idWZfaGlzdG9yeV9tYXJrX2J1bGsocnhwLCA4LA0KPiBSVEVfTUJVRl9ISVNUT1JZX09QX0xJ Ql9BTExPQyk7DQo+ICsNCj4gIAkJcnhwICs9IElEUEZfREVTQ1NfUEVSX0xPT1BfQVZYOw0KPiAg CQlyeGRwICs9IElEUEZfREVTQ1NfUEVSX0xPT1BfQVZYOw0KPiAgCQljYWNoZS0+bGVuIC09IElE UEZfREVTQ1NfUEVSX0xPT1BfQVZYOw0KPiBkaWZmIC0tZ2l0IGEvbGliL21lbXBvb2wvcnRlX21l bXBvb2wuYyBiL2xpYi9tZW1wb29sL3J0ZV9tZW1wb29sLmMNCj4gaW5kZXggMzA0MmQ5NGMxNC4u ODA1YjUyY2M1OCAxMDA2NDQNCj4gLS0tIGEvbGliL21lbXBvb2wvcnRlX21lbXBvb2wuYw0KPiAr KysgYi9saWIvbWVtcG9vbC9ydGVfbWVtcG9vbC5jDQo+IEBAIC01MiwxMSArNTIsNiBAQCBzdGF0 aWMgdm9pZA0KPiAgbWVtcG9vbF9ldmVudF9jYWxsYmFja19pbnZva2UoZW51bSBydGVfbWVtcG9v bF9ldmVudCBldmVudCwNCj4gIAkJCSAgICAgIHN0cnVjdCBydGVfbWVtcG9vbCAqbXApOw0KPiAN Cj4gLS8qIE5vdGU6IGF2b2lkIHVzaW5nIGZsb2F0aW5nIHBvaW50IHNpbmNlIHRoYXQgY29tcGls ZXINCj4gLSAqIG1heSBub3QgdGhpbmsgdGhhdCBpcyBjb25zdGFudC4NCj4gLSAqLw0KPiAtI2Rl ZmluZSBDQUxDX0NBQ0hFX0ZMVVNIVEhSRVNIKGMpICgoKGMpICogMykgLyAyKQ0KPiAtDQo+ICAj aWYgZGVmaW5lZChSVEVfQVJDSF9YODYpDQo+ICAvKg0KPiAgICogcmV0dXJuIHRoZSBncmVhdGVz dCBjb21tb24gZGl2aXNvciBiZXR3ZWVuIGEgYW5kIGIgKGZhc3QgYWxnb3JpdGhtKQ0KPiBAQCAt NzU3LDEzICs3NTIsOCBAQCBydGVfbWVtcG9vbF9mcmVlKHN0cnVjdCBydGVfbWVtcG9vbCAqbXAp DQo+ICBzdGF0aWMgdm9pZA0KPiAgbWVtcG9vbF9jYWNoZV9pbml0KHN0cnVjdCBydGVfbWVtcG9v bF9jYWNoZSAqY2FjaGUsIHVpbnQzMl90IHNpemUpDQo+ICB7DQo+IC0JLyogQ2hlY2sgdGhhdCBj YWNoZSBoYXZlIGVub3VnaCBzcGFjZSBmb3IgZmx1c2ggdGhyZXNob2xkICovDQo+IC0NCj4gCVJU RV9CVUlMRF9CVUdfT04oQ0FMQ19DQUNIRV9GTFVTSFRIUkVTSChSVEVfTUVNUE9PTF9DQUNIRV9N QVhfU0laDQo+IEUpID4NCj4gLQkJCSBSVEVfU0laRU9GX0ZJRUxEKHN0cnVjdCBydGVfbWVtcG9v bF9jYWNoZSwgb2JqcykgLw0KPiAtCQkJIFJURV9TSVpFT0ZfRklFTEQoc3RydWN0IHJ0ZV9tZW1w b29sX2NhY2hlLA0KPiBvYmpzWzBdKSk7DQo+IC0NCj4gIAljYWNoZS0+c2l6ZSA9IHNpemU7DQo+ IC0JY2FjaGUtPmZsdXNodGhyZXNoID0gQ0FMQ19DQUNIRV9GTFVTSFRIUkVTSChzaXplKTsNCj4g KwljYWNoZS0+Zmx1c2h0aHJlc2ggPSBzaXplOyAvKiBPYnNvbGV0ZTsgZm9yIEFQSS9BQkkgY29t cGF0aWJpbGl0eQ0KPiBwdXJwb3NlcyBvbmx5ICovDQo+ICAJY2FjaGUtPmxlbiA9IDA7DQo+ICB9 DQo+IA0KPiBAQCAtODUwLDcgKzg0MCw3IEBAIHJ0ZV9tZW1wb29sX2NyZWF0ZV9lbXB0eShjb25z dCBjaGFyICpuYW1lLCB1bnNpZ25lZA0KPiBuLCB1bnNpZ25lZCBlbHRfc2l6ZSwNCj4gDQo+ICAJ LyogYXNrZWQgY2FjaGUgdG9vIGJpZyAqLw0KPiAgCWlmIChjYWNoZV9zaXplID4gUlRFX01FTVBP T0xfQ0FDSEVfTUFYX1NJWkUgfHwNCj4gLQkgICAgQ0FMQ19DQUNIRV9GTFVTSFRIUkVTSChjYWNo ZV9zaXplKSA+IG4pIHsNCj4gKwkgICAgY2FjaGVfc2l6ZSA+IG4pIHsNCj4gIAkJcnRlX2Vycm5v ID0gRUlOVkFMOw0KPiAgCQlyZXR1cm4gTlVMTDsNCj4gIAl9DQo+IGRpZmYgLS1naXQgYS9saWIv bWVtcG9vbC9ydGVfbWVtcG9vbC5oIGIvbGliL21lbXBvb2wvcnRlX21lbXBvb2wuaA0KPiBpbmRl eCAyZTU0ZmM0NDY2Li5hYTJkNTFiYmQ1IDEwMDY0NA0KPiAtLS0gYS9saWIvbWVtcG9vbC9ydGVf bWVtcG9vbC5oDQo+ICsrKyBiL2xpYi9tZW1wb29sL3J0ZV9tZW1wb29sLmgNCj4gQEAgLTg5LDcg Kzg5LDcgQEAgc3RydWN0IF9fcnRlX2NhY2hlX2FsaWduZWQgcnRlX21lbXBvb2xfZGVidWdfc3Rh dHMgew0KPiAgICovDQo+ICBzdHJ1Y3QgX19ydGVfY2FjaGVfYWxpZ25lZCBydGVfbWVtcG9vbF9j YWNoZSB7DQo+ICAJdWludDMyX3Qgc2l6ZTsJICAgICAgLyoqPCBTaXplIG9mIHRoZSBjYWNoZSAq Lw0KPiAtCXVpbnQzMl90IGZsdXNodGhyZXNoOyAvKio8IFRocmVzaG9sZCBiZWZvcmUgd2UgZmx1 c2ggZXhjZXNzDQo+IGVsZW1lbnRzICovDQo+ICsJdWludDMyX3QgZmx1c2h0aHJlc2g7IC8qKjwg T2Jzb2xldGU7IGZvciBBUEkvQUJJIGNvbXBhdGliaWxpdHkNCj4gcHVycG9zZXMgb25seSAqLw0K PiAgCXVpbnQzMl90IGxlbjsJICAgICAgLyoqPCBDdXJyZW50IGNhY2hlIGNvdW50ICovDQo+ICAj aWZkZWYgUlRFX0xJQlJURV9NRU1QT09MX1NUQVRTDQo+ICAJdWludDMyX3QgdW51c2VkOw0KPiBA QCAtMTA3LDggKzEwNywxMCBAQCBzdHJ1Y3QgX19ydGVfY2FjaGVfYWxpZ25lZCBydGVfbWVtcG9v bF9jYWNoZSB7DQo+ICAJLyoqDQo+ICAJICogQ2FjaGUgb2JqZWN0cw0KPiAgCSAqDQo+IC0JICog Q2FjaGUgaXMgYWxsb2NhdGVkIHRvIHRoaXMgc2l6ZSB0byBhbGxvdyBpdCB0byBvdmVyZmxvdyBp bg0KPiBjZXJ0YWluDQo+IC0JICogY2FzZXMgdG8gYXZvaWQgbmVlZGxlc3MgZW1wdHlpbmcgb2Yg Y2FjaGUuDQo+ICsJICogTm90ZToNCj4gKwkgKiBDYWNoZSBpcyBhbGxvY2F0ZWQgYXQgZG91Ymxl IHNpemUgZm9yIEFQSS9BQkkgY29tcGF0aWJpbGl0eQ0KPiBwdXJwb3NlcyBvbmx5Lg0KPiArCSAq IFdoZW4gcmVkdWNpbmcgaXRzIHNpemUgYXQgYW4gQVBJL0FCSSBicmVha2luZyByZWxlYXNlLA0K PiArCSAqIHJlbWVtYmVyIHRvIGFkZCBhIGNhY2hlIGd1YXJkIGFmdGVyIGl0Lg0KPiAgCSAqLw0K PiAgCWFsaWduYXMoUlRFX0NBQ0hFX0xJTkVfU0laRSkgdm9pZA0KPiAqb2Jqc1tSVEVfTUVNUE9P TF9DQUNIRV9NQVhfU0laRSAqIDJdOw0KPiAgfTsNCj4gQEAgLTEwNDcsMTEgKzEwNDksMTYgQEAg cnRlX21lbXBvb2xfZnJlZShzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wKTsNCj4gICAqICAgSWYgY2Fj aGVfc2l6ZSBpcyBub24temVybywgdGhlIHJ0ZV9tZW1wb29sIGxpYnJhcnkgd2lsbCB0cnkgdG8N Cj4gICAqICAgbGltaXQgdGhlIGFjY2Vzc2VzIHRvIHRoZSBjb21tb24gbG9ja2xlc3MgcG9vbCwg YnkgbWFpbnRhaW5pbmcgYQ0KPiAgICogICBwZXItbGNvcmUgb2JqZWN0IGNhY2hlLiBUaGlzIGFy Z3VtZW50IG11c3QgYmUgbG93ZXIgb3IgZXF1YWwgdG8NCj4gLSAqICAgUlRFX01FTVBPT0xfQ0FD SEVfTUFYX1NJWkUgYW5kIG4gLyAxLjUuDQo+ICsgKiAgIFJURV9NRU1QT09MX0NBQ0hFX01BWF9T SVpFIGFuZCBuLg0KPiAgICogICBUaGUgYWNjZXNzIHRvIHRoZSBwZXItbGNvcmUgdGFibGUgaXMg b2YgY291cnNlDQo+ICAgKiAgIGZhc3RlciB0aGFuIHRoZSBtdWx0aS1wcm9kdWNlci9jb25zdW1l ciBwb29sLiBUaGUgY2FjaGUgY2FuIGJlDQo+ICAgKiAgIGRpc2FibGVkIGlmIHRoZSBjYWNoZV9z aXplIGFyZ3VtZW50IGlzIHNldCB0byAwOyBpdCBjYW4gYmUgdXNlZnVsDQo+IHRvDQo+ICAgKiAg IGF2b2lkIGxvc2luZyBvYmplY3RzIGluIGNhY2hlLg0KPiArICogICBOb3RlOg0KPiArICogICBN ZW1wb29sIHB1dC9nZXQgcmVxdWVzdHMgb2YgbW9yZSB0aGFuIGNhY2hlX3NpemUgLyAyIG9iamVj dHMgbWF5DQo+IGJlDQo+ICsgKiAgIHBhcnRpYWxseSBvciBmdWxseSBzZXJ2ZWQgZGlyZWN0bHkg YnkgdGhlIG11bHRpLXByb2R1Y2VyL2NvbnN1bWVyDQo+ICsgKiAgIHBvb2wsIHRvIGF2b2lkIHRo ZSBvdmVyaGVhZCBvZiBjb3B5aW5nIHRoZSBvYmplY3RzIHR3aWNlIChpbnN0ZWFkDQo+IG9mDQo+ ICsgKiAgIG9uY2UpIHdoZW4gdXNpbmcgdGhlIGNhY2hlIGFzIGEgYm91bmNlIGJ1ZmZlci4NCj4g ICAqIEBwYXJhbSBwcml2YXRlX2RhdGFfc2l6ZQ0KPiAgICogICBUaGUgc2l6ZSBvZiB0aGUgcHJp dmF0ZSBkYXRhIGFwcGVuZGVkIGFmdGVyIHRoZSBtZW1wb29sDQo+ICAgKiAgIHN0cnVjdHVyZS4g VGhpcyBpcyB1c2VmdWwgZm9yIHN0b3Jpbmcgc29tZSBwcml2YXRlIGRhdGEgYWZ0ZXIgdGhlDQo+ IEBAIC0xMzc3LDcgKzEzODQsNyBAQCBydGVfbWVtcG9vbF9jYWNoZV9mbHVzaChzdHJ1Y3QgcnRl X21lbXBvb2xfY2FjaGUNCj4gKmNhY2hlLA0KPiAgICogICBBIHBvaW50ZXIgdG8gYSBtZW1wb29s IGNhY2hlIHN0cnVjdHVyZS4gTWF5IGJlIE5VTEwgaWYgbm90DQo+IG5lZWRlZC4NCj4gICAqLw0K PiAgc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgdm9pZA0KPiAtcnRlX21lbXBvb2xfZG9fZ2Vu ZXJpY19wdXQoc3RydWN0IHJ0ZV9tZW1wb29sICptcCwgdm9pZCAqIGNvbnN0DQo+ICpvYmpfdGFi bGUsDQo+ICtydGVfbWVtcG9vbF9kb19nZW5lcmljX3B1dChzdHJ1Y3QgcnRlX21lbXBvb2wgKm1w LCB2b2lkICogY29uc3QgKg0KPiBfX3J0ZV9yZXN0cmljdCBvYmpfdGFibGUsDQo+ICAJCQkgICB1 bnNpZ25lZCBpbnQgbiwgc3RydWN0IHJ0ZV9tZW1wb29sX2NhY2hlICpjYWNoZSkNCj4gIHsNCj4g IAl2b2lkICoqY2FjaGVfb2JqczsNCj4gQEAgLTEzOTAsMjQgKzEzOTcsMjcgQEAgcnRlX21lbXBv b2xfZG9fZ2VuZXJpY19wdXQoc3RydWN0IHJ0ZV9tZW1wb29sDQo+ICptcCwgdm9pZCAqIGNvbnN0 ICpvYmpfdGFibGUsDQo+ICAJUlRFX01FTVBPT0xfQ0FDSEVfU1RBVF9BREQoY2FjaGUsIHB1dF9i dWxrLCAxKTsNCj4gIAlSVEVfTUVNUE9PTF9DQUNIRV9TVEFUX0FERChjYWNoZSwgcHV0X29ianMs IG4pOw0KPiANCj4gLQlfX3J0ZV9hc3N1bWUoY2FjaGUtPmZsdXNodGhyZXNoIDw9IFJURV9NRU1Q T09MX0NBQ0hFX01BWF9TSVpFICoNCj4gMik7DQo+IC0JX19ydGVfYXNzdW1lKGNhY2hlLT5sZW4g PD0gUlRFX01FTVBPT0xfQ0FDSEVfTUFYX1NJWkUgKiAyKTsNCj4gLQlfX3J0ZV9hc3N1bWUoY2Fj aGUtPmxlbiA8PSBjYWNoZS0+Zmx1c2h0aHJlc2gpOw0KPiAtCWlmIChsaWtlbHkoY2FjaGUtPmxl biArIG4gPD0gY2FjaGUtPmZsdXNodGhyZXNoKSkgew0KPiArCV9fcnRlX2Fzc3VtZShjYWNoZS0+ c2l6ZSA8PSBSVEVfTUVNUE9PTF9DQUNIRV9NQVhfU0laRSk7DQo+ICsJX19ydGVfYXNzdW1lKGNh Y2hlLT5sZW4gPD0gUlRFX01FTVBPT0xfQ0FDSEVfTUFYX1NJWkUpOw0KPiArCV9fcnRlX2Fzc3Vt ZShjYWNoZS0+bGVuIDw9IGNhY2hlLT5zaXplKTsNCj4gKwlpZiAobGlrZWx5KGNhY2hlLT5sZW4g KyBuIDw9IGNhY2hlLT5zaXplKSkgew0KPiAgCQkvKiBTdWZmaWNpZW50IHJvb20gaW4gdGhlIGNh Y2hlIGZvciB0aGUgb2JqZWN0cy4gKi8NCj4gIAkJY2FjaGVfb2JqcyA9ICZjYWNoZS0+b2Jqc1tj YWNoZS0+bGVuXTsNCj4gIAkJY2FjaGUtPmxlbiArPSBuOw0KPiAtCX0gZWxzZSBpZiAobiA8PSBj YWNoZS0+Zmx1c2h0aHJlc2gpIHsNCj4gKwl9IGVsc2UgaWYgKG4gPD0gY2FjaGUtPnNpemUgLyAy KSB7DQo+ICAJCS8qDQo+IC0JCSAqIFRoZSBjYWNoZSBpcyBiaWcgZW5vdWdoIGZvciB0aGUgb2Jq ZWN0cywgYnV0IC0gYXMNCj4gZGV0ZWN0ZWQgYnkNCj4gLQkJICogdGhlIGNvbXBhcmlzb24gYWJv dmUgLSBoYXMgaW5zdWZmaWNpZW50IHJvb20gZm9yIHRoZW0uDQo+IC0JCSAqIEZsdXNoIHRoZSBj YWNoZSB0byBtYWtlIHJvb20gZm9yIHRoZSBvYmplY3RzLg0KPiArCQkgKiBUaGUgbnVtYmVyIG9m IG9iamVjdHMgaXMgd2l0aGluIHRoZSBjYWNoZSBib3VuY2UgYnVmZmVyDQo+IGxpbWl0LA0KPiAr CQkgKiBidXQgLSBhcyBkZXRlY3RlZCBieSB0aGUgY29tcGFyaXNvbiBhYm92ZSAtIHRoZSBjYWNo ZQ0KPiBoYXMNCj4gKwkJICogaW5zdWZmaWNpZW50IHJvb20gZm9yIHRoZW0uDQo+ICsJCSAqIEZs dXNoIHRoZSBjYWNoZSB0byB0aGUgYmFja2VuZCB0byBtYWtlIHJvb20gZm9yIHRoZQ0KPiBvYmpl Y3RzOw0KPiArCQkgKiBmbHVzaCAoc2l6ZSAvIDIpIG9iamVjdHMuDQo+ICAJCSAqLw0KPiAtCQlj YWNoZV9vYmpzID0gJmNhY2hlLT5vYmpzWzBdOw0KPiAtCQlydGVfbWVtcG9vbF9vcHNfZW5xdWV1 ZV9idWxrKG1wLCBjYWNoZV9vYmpzLCBjYWNoZS0+bGVuKTsNCj4gLQkJY2FjaGUtPmxlbiA9IG47 DQo+ICsJCV9fcnRlX2Fzc3VtZShjYWNoZS0+bGVuID4gY2FjaGUtPnNpemUgLyAyKTsNCj4gKwkJ Y2FjaGVfb2JqcyA9ICZjYWNoZS0+b2Jqc1tjYWNoZS0+bGVuIC0gY2FjaGUtPnNpemUgLyAyXTsN Cj4gKwkJY2FjaGUtPmxlbiA9IGNhY2hlLT5sZW4gLSBjYWNoZS0+c2l6ZSAvIDIgKyBuOw0KPiAr CQlydGVfbWVtcG9vbF9vcHNfZW5xdWV1ZV9idWxrKG1wLCBjYWNoZV9vYmpzLCBjYWNoZS0+c2l6 ZSAvDQo+IDIpOw0KPiAgCX0gZWxzZSB7DQo+IC0JCS8qIFRoZSByZXF1ZXN0IGl0c2VsZiBpcyB0 b28gYmlnIGZvciB0aGUgY2FjaGUuICovDQo+ICsJCS8qIFRoZSByZXF1ZXN0IGl0c2VsZiBpcyB0 b28gYmlnLiAqLw0KPiAgCQlnb3RvIGRyaXZlcl9lbnF1ZXVlX3N0YXRzX2luY3JlbWVudGVkOw0K PiAgCX0NCj4gDQo+IEBAIC0xNDE4LDEzICsxNDI4LDEzIEBAIHJ0ZV9tZW1wb29sX2RvX2dlbmVy aWNfcHV0KHN0cnVjdCBydGVfbWVtcG9vbA0KPiAqbXAsIHZvaWQgKiBjb25zdCAqb2JqX3RhYmxl LA0KPiANCj4gIGRyaXZlcl9lbnF1ZXVlOg0KPiANCj4gLQkvKiBpbmNyZW1lbnQgc3RhdCBub3cs IGFkZGluZyBpbiBtZW1wb29sIGFsd2F5cyBzdWNjZXNzICovDQo+ICsJLyogSW5jcmVtZW50IHN0 YXRzIG5vdywgYWRkaW5nIGluIG1lbXBvb2wgYWx3YXlzIHN1Y2NlZWRzLiAqLw0KPiAgCVJURV9N RU1QT09MX1NUQVRfQUREKG1wLCBwdXRfYnVsaywgMSk7DQo+ICAJUlRFX01FTVBPT0xfU1RBVF9B REQobXAsIHB1dF9vYmpzLCBuKTsNCj4gDQo+ICBkcml2ZXJfZW5xdWV1ZV9zdGF0c19pbmNyZW1l bnRlZDoNCj4gDQo+IC0JLyogcHVzaCBvYmplY3RzIHRvIHRoZSBiYWNrZW5kICovDQo+ICsJLyog UHVzaCB0aGUgb2JqZWN0cyB0byB0aGUgYmFja2VuZC4gKi8NCj4gIAlydGVfbWVtcG9vbF9vcHNf ZW5xdWV1ZV9idWxrKG1wLCBvYmpfdGFibGUsIG4pOw0KPiAgfQ0KPiANCj4gQEAgLTE0NDIsNyAr MTQ1Miw3IEBAIHJ0ZV9tZW1wb29sX2RvX2dlbmVyaWNfcHV0KHN0cnVjdCBydGVfbWVtcG9vbA0K PiAqbXAsIHZvaWQgKiBjb25zdCAqb2JqX3RhYmxlLA0KPiAgICogICBBIHBvaW50ZXIgdG8gYSBt ZW1wb29sIGNhY2hlIHN0cnVjdHVyZS4gTWF5IGJlIE5VTEwgaWYgbm90DQo+IG5lZWRlZC4NCj4g ICAqLw0KPiAgc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgdm9pZA0KPiAtcnRlX21lbXBvb2xf Z2VuZXJpY19wdXQoc3RydWN0IHJ0ZV9tZW1wb29sICptcCwgdm9pZCAqIGNvbnN0DQo+ICpvYmpf dGFibGUsDQo+ICtydGVfbWVtcG9vbF9nZW5lcmljX3B1dChzdHJ1Y3QgcnRlX21lbXBvb2wgKm1w LCB2b2lkICogY29uc3QgKg0KPiBfX3J0ZV9yZXN0cmljdCBvYmpfdGFibGUsDQo+ICAJCQl1bnNp Z25lZCBpbnQgbiwgc3RydWN0IHJ0ZV9tZW1wb29sX2NhY2hlICpjYWNoZSkNCj4gIHsNCj4gIAly dGVfbWVtcG9vbF90cmFjZV9nZW5lcmljX3B1dChtcCwgb2JqX3RhYmxlLCBuLCBjYWNoZSk7DQo+ IEBAIC0xNDY1LDcgKzE0NzUsNyBAQCBydGVfbWVtcG9vbF9nZW5lcmljX3B1dChzdHJ1Y3QgcnRl X21lbXBvb2wgKm1wLA0KPiB2b2lkICogY29uc3QgKm9ial90YWJsZSwNCj4gICAqICAgVGhlIG51 bWJlciBvZiBvYmplY3RzIHRvIGFkZCBpbiB0aGUgbWVtcG9vbCBmcm9tIG9ial90YWJsZS4NCj4g ICAqLw0KPiAgc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgdm9pZA0KPiAtcnRlX21lbXBvb2xf cHV0X2J1bGsoc3RydWN0IHJ0ZV9tZW1wb29sICptcCwgdm9pZCAqIGNvbnN0ICpvYmpfdGFibGUs DQo+ICtydGVfbWVtcG9vbF9wdXRfYnVsayhzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wLCB2b2lkICog Y29uc3QgKg0KPiBfX3J0ZV9yZXN0cmljdCBvYmpfdGFibGUsDQo+ICAJCSAgICAgdW5zaWduZWQg aW50IG4pDQo+ICB7DQo+ICAJc3RydWN0IHJ0ZV9tZW1wb29sX2NhY2hlICpjYWNoZTsNCj4gQEAg LTE1MDcsNyArMTUxNyw3IEBAIHJ0ZV9tZW1wb29sX3B1dChzdHJ1Y3QgcnRlX21lbXBvb2wgKm1w LCB2b2lkDQo+ICpvYmopDQo+ICAgKiAgIC0gPDA6IEVycm9yOyBjb2RlIG9mIGRyaXZlciBkZXF1 ZXVlIGZ1bmN0aW9uLg0KPiAgICovDQo+ICBzdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSBpbnQN Cj4gLXJ0ZV9tZW1wb29sX2RvX2dlbmVyaWNfZ2V0KHN0cnVjdCBydGVfbWVtcG9vbCAqbXAsIHZv aWQgKipvYmpfdGFibGUsDQo+ICtydGVfbWVtcG9vbF9kb19nZW5lcmljX2dldChzdHJ1Y3QgcnRl X21lbXBvb2wgKm1wLCB2b2lkICoqDQo+IF9fcnRlX3Jlc3RyaWN0IG9ial90YWJsZSwNCj4gIAkJ CSAgIHVuc2lnbmVkIGludCBuLCBzdHJ1Y3QgcnRlX21lbXBvb2xfY2FjaGUgKmNhY2hlKQ0KPiAg ew0KPiAgCWludCByZXQ7DQo+IEBAIC0xNTI0LDcgKzE1MzQsNyBAQCBydGVfbWVtcG9vbF9kb19n ZW5lcmljX2dldChzdHJ1Y3QgcnRlX21lbXBvb2wNCj4gKm1wLCB2b2lkICoqb2JqX3RhYmxlLA0K PiAgCS8qIFRoZSBjYWNoZSBpcyBhIHN0YWNrLCBzbyBjb3B5IHdpbGwgYmUgaW4gcmV2ZXJzZSBv cmRlci4gKi8NCj4gIAljYWNoZV9vYmpzID0gJmNhY2hlLT5vYmpzW2NhY2hlLT5sZW5dOw0KPiAN Cj4gLQlfX3J0ZV9hc3N1bWUoY2FjaGUtPmxlbiA8PSBSVEVfTUVNUE9PTF9DQUNIRV9NQVhfU0la RSAqIDIpOw0KPiArCV9fcnRlX2Fzc3VtZShjYWNoZS0+bGVuIDw9IFJURV9NRU1QT09MX0NBQ0hF X01BWF9TSVpFKTsNCj4gIAlpZiAobGlrZWx5KG4gPD0gY2FjaGUtPmxlbikpIHsNCj4gIAkJLyog VGhlIGVudGlyZSByZXF1ZXN0IGNhbiBiZSBzYXRpc2ZpZWQgZnJvbSB0aGUgY2FjaGUuICovDQo+ ICAJCVJURV9NRU1QT09MX0NBQ0hFX1NUQVRfQUREKGNhY2hlLCBnZXRfc3VjY2Vzc19idWxrLCAx KTsNCj4gQEAgLTE1NDgsMTMgKzE1NTgsMTMgQEAgcnRlX21lbXBvb2xfZG9fZ2VuZXJpY19nZXQo c3RydWN0IHJ0ZV9tZW1wb29sDQo+ICptcCwgdm9pZCAqKm9ial90YWJsZSwNCj4gIAlmb3IgKGlu ZGV4ID0gMDsgaW5kZXggPCBsZW47IGluZGV4KyspDQo+ICAJCSpvYmpfdGFibGUrKyA9ICotLWNh Y2hlX29ianM7DQo+IA0KPiAtCS8qIERlcXVldWUgYmVsb3cgd291bGQgb3ZlcmZsb3cgbWVtIGFs bG9jYXRlZCBmb3IgY2FjaGU/ICovDQo+IC0JaWYgKHVubGlrZWx5KHJlbWFpbmluZyA+IFJURV9N RU1QT09MX0NBQ0hFX01BWF9TSVpFKSkNCj4gKwkvKiBEZXF1ZXVlIGJlbG93IHdvdWxkIGV4Y2Vl ZCB0aGUgY2FjaGUgYm91bmNlIGJ1ZmZlciBsaW1pdD8gKi8NCj4gKwlfX3J0ZV9hc3N1bWUoY2Fj aGUtPnNpemUgLyAyIDw9IFJURV9NRU1QT09MX0NBQ0hFX01BWF9TSVpFIC8gMik7DQo+ICsJaWYg KHVubGlrZWx5KHJlbWFpbmluZyA+IGNhY2hlLT5zaXplIC8gMikpDQo+ICAJCWdvdG8gZHJpdmVy X2RlcXVldWU7DQo+IA0KPiAtCS8qIEZpbGwgdGhlIGNhY2hlIGZyb20gdGhlIGJhY2tlbmQ7IGZl dGNoIHNpemUgKyByZW1haW5pbmcNCj4gb2JqZWN0cy4gKi8NCj4gLQlyZXQgPSBydGVfbWVtcG9v bF9vcHNfZGVxdWV1ZV9idWxrKG1wLCBjYWNoZS0+b2JqcywNCj4gLQkJCWNhY2hlLT5zaXplICsg cmVtYWluaW5nKTsNCj4gKwkvKiBGaWxsIHRoZSBjYWNoZSBmcm9tIHRoZSBiYWNrZW5kOyBmZXRj aCAoc2l6ZSAvIDIpIG9iamVjdHMuICovDQo+ICsJcmV0ID0gcnRlX21lbXBvb2xfb3BzX2RlcXVl dWVfYnVsayhtcCwgY2FjaGUtPm9ianMsIGNhY2hlLT5zaXplIC8NCj4gMik7DQo+ICAJaWYgKHVu bGlrZWx5KHJldCA8IDApKSB7DQo+ICAJCS8qDQo+ICAJCSAqIFdlIGFyZSBidWZmZXIgY29uc3Ry YWluZWQsIGFuZCBub3QgYWJsZSB0byBmZXRjaCBhbGwNCj4gdGhhdC4NCj4gQEAgLTE1NjgsMTAg KzE1NzgsMTEgQEAgcnRlX21lbXBvb2xfZG9fZ2VuZXJpY19nZXQoc3RydWN0IHJ0ZV9tZW1wb29s DQo+ICptcCwgdm9pZCAqKm9ial90YWJsZSwNCj4gIAlSVEVfTUVNUE9PTF9DQUNIRV9TVEFUX0FE RChjYWNoZSwgZ2V0X3N1Y2Nlc3NfYnVsaywgMSk7DQo+ICAJUlRFX01FTVBPT0xfQ0FDSEVfU1RB VF9BREQoY2FjaGUsIGdldF9zdWNjZXNzX29ianMsIG4pOw0KPiANCj4gLQlfX3J0ZV9hc3N1bWUo Y2FjaGUtPnNpemUgPD0gUlRFX01FTVBPT0xfQ0FDSEVfTUFYX1NJWkUpOw0KPiAtCV9fcnRlX2Fz c3VtZShyZW1haW5pbmcgPD0gUlRFX01FTVBPT0xfQ0FDSEVfTUFYX1NJWkUpOw0KPiAtCWNhY2hl X29ianMgPSAmY2FjaGUtPm9ianNbY2FjaGUtPnNpemUgKyByZW1haW5pbmddOw0KPiAtCWNhY2hl LT5sZW4gPSBjYWNoZS0+c2l6ZTsNCj4gKwlfX3J0ZV9hc3N1bWUoY2FjaGUtPnNpemUgLyAyIDw9 IFJURV9NRU1QT09MX0NBQ0hFX01BWF9TSVpFIC8gMik7DQo+ICsJX19ydGVfYXNzdW1lKHJlbWFp bmluZyA8PSBSVEVfTUVNUE9PTF9DQUNIRV9NQVhfU0laRSAvIDIpOw0KPiArCV9fcnRlX2Fzc3Vt ZShyZW1haW5pbmcgPD0gY2FjaGUtPnNpemUgLyAyKTsNCj4gKwljYWNoZV9vYmpzID0gJmNhY2hl LT5vYmpzW2NhY2hlLT5zaXplIC8gMl07DQo+ICsJY2FjaGUtPmxlbiA9IGNhY2hlLT5zaXplIC8g MiAtIHJlbWFpbmluZzsNCj4gIAlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCByZW1haW5pbmc7IGlu ZGV4KyspDQo+ICAJCSpvYmpfdGFibGUrKyA9ICotLWNhY2hlX29ianM7DQo+IA0KPiBAQCAtMTYy OSw3ICsxNjQwLDcgQEAgcnRlX21lbXBvb2xfZG9fZ2VuZXJpY19nZXQoc3RydWN0IHJ0ZV9tZW1w b29sDQo+ICptcCwgdm9pZCAqKm9ial90YWJsZSwNCj4gICAqICAgLSAtRU5PRU5UOiBOb3QgZW5v dWdoIGVudHJpZXMgaW4gdGhlIG1lbXBvb2w7IG5vIG9iamVjdCBpcw0KPiByZXRyaWV2ZWQuDQo+ ICAgKi8NCj4gIHN0YXRpYyBfX3J0ZV9hbHdheXNfaW5saW5lIGludA0KPiAtcnRlX21lbXBvb2xf Z2VuZXJpY19nZXQoc3RydWN0IHJ0ZV9tZW1wb29sICptcCwgdm9pZCAqKm9ial90YWJsZSwNCj4g K3J0ZV9tZW1wb29sX2dlbmVyaWNfZ2V0KHN0cnVjdCBydGVfbWVtcG9vbCAqbXAsIHZvaWQgKiog X19ydGVfcmVzdHJpY3QNCj4gb2JqX3RhYmxlLA0KPiAgCQkJdW5zaWduZWQgaW50IG4sIHN0cnVj dCBydGVfbWVtcG9vbF9jYWNoZSAqY2FjaGUpDQo+ICB7DQo+ICAJaW50IHJldDsNCj4gQEAgLTE2 NjMsNyArMTY3NCw3IEBAIHJ0ZV9tZW1wb29sX2dlbmVyaWNfZ2V0KHN0cnVjdCBydGVfbWVtcG9v bCAqbXAsDQo+IHZvaWQgKipvYmpfdGFibGUsDQo+ICAgKiAgIC0gLUVOT0VOVDogTm90IGVub3Vn aCBlbnRyaWVzIGluIHRoZSBtZW1wb29sOyBubyBvYmplY3QgaXMNCj4gcmV0cmlldmVkLg0KPiAg ICovDQo+ICBzdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSBpbnQNCj4gLXJ0ZV9tZW1wb29sX2dl dF9idWxrKHN0cnVjdCBydGVfbWVtcG9vbCAqbXAsIHZvaWQgKipvYmpfdGFibGUsDQo+IHVuc2ln bmVkIGludCBuKQ0KPiArcnRlX21lbXBvb2xfZ2V0X2J1bGsoc3RydWN0IHJ0ZV9tZW1wb29sICpt cCwgdm9pZCAqKiBfX3J0ZV9yZXN0cmljdA0KPiBvYmpfdGFibGUsIHVuc2lnbmVkIGludCBuKQ0K PiAgew0KPiAgCXN0cnVjdCBydGVfbWVtcG9vbF9jYWNoZSAqY2FjaGU7DQo+ICAJY2FjaGUgPSBy dGVfbWVtcG9vbF9kZWZhdWx0X2NhY2hlKG1wLCBydGVfbGNvcmVfaWQoKSk7DQo+IEBAIC0xNjky LDcgKzE3MDMsNyBAQCBydGVfbWVtcG9vbF9nZXRfYnVsayhzdHJ1Y3QgcnRlX21lbXBvb2wgKm1w LCB2b2lkDQo+ICoqb2JqX3RhYmxlLCB1bnNpZ25lZCBpbnQgbikNCj4gICAqICAgLSAtRU5PRU5U OiBOb3QgZW5vdWdoIGVudHJpZXMgaW4gdGhlIG1lbXBvb2w7IG5vIG9iamVjdCBpcw0KPiByZXRy aWV2ZWQuDQo+ICAgKi8NCj4gIHN0YXRpYyBfX3J0ZV9hbHdheXNfaW5saW5lIGludA0KPiAtcnRl X21lbXBvb2xfZ2V0KHN0cnVjdCBydGVfbWVtcG9vbCAqbXAsIHZvaWQgKipvYmpfcCkNCj4gK3J0 ZV9tZW1wb29sX2dldChzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wLCB2b2lkICoqIF9fcnRlX3Jlc3Ry aWN0IG9ial9wKQ0KPiAgew0KPiAgCXJldHVybiBydGVfbWVtcG9vbF9nZXRfYnVsayhtcCwgb2Jq X3AsIDEpOw0KPiAgfQ0KPiAtLQ0KPiAyLjQzLjANCg0K