From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Woods, Brian" Subject: Re: [PATCH 03/14] AMD/IOMMU: Fix multiple reference counting errors Date: Thu, 31 Jan 2019 15:59:45 +0000 Message-ID: References: <1542806482-24030-1-git-send-email-andrew.cooper3@citrix.com> <1542806482-24030-4-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1542806482-24030-4-git-send-email-andrew.cooper3@citrix.com> Content-Language: en-US Content-ID: <5C9F12C4D6F85444ADB1532EDC22AC22@namprd12.prod.outlook.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Andrew Cooper , Xen-devel Cc: Wei Liu , "Suthikulpanit, Suravee" , Jan Beulich , =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= List-Id: xen-devel@lists.xenproject.org T24gMTEvMjEvMTggNzoyMSBBTSwgQW5kcmV3IENvb3BlciB3cm90ZToNCj4gTW9zdCBvZiB0aGVz ZSBpc3N1ZXMgd291bGQgYmUgWFNBcyBpZiB0aGVzZSBwYXRocyB3ZXJlIGFjY2Vzc2libGUgdG8g Z3Vlc3RzLg0KPiANCj4gRmlyc3QsIG92ZXJyaWRlIHRoZSB7Z2V0LHB1dH1fZ2ZuKCkgaGVscGVy cyB0byB1c2UgZ2ZuX3QsIHdoaWNoIHdhcyB0aGUNCj4gb3JpZ2luYWwgcHVycG9zZSBvZiB0aGlz IHBhdGNoLg0KPiANCj4gZ3Vlc3RfaW9tbXVfZ2V0X3RhYmxlX21mbigpIGhhcyB0d28gYnVncy4g IEZpcnN0LCBpdCBnZXRzIGEgcmVmIG9uIG9uZSBnZm4sDQo+IGFuZCBwdXRzIGEgcmVmIGZvciBh IGRpZmZlcmVudCBnZm4uICBUaGlzIGlzIG9ubHkgYSBsYXRlbnQgYnVnIGZvciBub3csIGFzIHdl DQo+IGRvbid0IGRvIHBlci1nZm4gbG9ja2luZyB5ZXQuICBOZXh0LCB0aGUgbWZuIHJldHVybiB2 YWx1ZSBpcyB1bnNhZmUgdG8gdXNlDQo+IGFmdGVyIHB1dF9nZm4oKSBpcyBjYWxsZWQsIGFzIHRo ZSBndWVzdCBjb3VsZCBoYXZlIGZyZWVkIHRoZSBwYWdlIGluIHRoZQ0KPiBtZWFudGltZS4NCj4g DQo+IEluIGFkZGl0aW9uLCBnZXRfZ2ZuX2Zyb21fYmFzZV9yZWcoKSBlcnJvbmVvdXNseSBhc3Nl cnRzIHRoYXQgYmFzZV9yYXcgY2FuJ3QNCj4gYmUgMCwgYnV0IGl0IG1heSBsZWdpdGltYXRlbHkg YmUuICBPbiB0b3Agb2YgdGhhdCwgdGhlIHJldHVybiB2YWx1ZSBmcm9tDQo+IGd1ZXN0X2lvbW11 X2dldF90YWJsZV9tZm4oKSBpcyBwYXNzZWQgaW50byBtYXBfZG9tYWluX3BhZ2UoKSBiZWZvcmUg Y2hlY2tpbmcNCj4gdGhhdCBpdCBpcyBhIHJlYWwgbWZuLg0KPiANCj4gTW9zdCBvZiB0aGUgY29t cGxleGl0eSBoZXJlIGlzIGlubGluaW5nIGd1ZXN0X2lvbW11X2dldF90YWJsZV9tZm4oKSBhbmQN Cj4gaG9sZGluZyB0aGUgZ2ZuIHJlZmVyZW5jZSB1bnRpbCB0aGUgb3BlcmF0aW9uIGlzIGNvbXBs ZXRlLg0KPiANCj4gRnVydGhlcm1vcmUsIGd1ZXN0X2lvbW11X3Byb2Nlc3NfY29tbWFuZCgpIGlz IGFsdGVyZWQgdG8gdGFrZSBhIGxvY2FsIGNvcHkgb2YNCj4gY21kX2VudHJ5X3QsIHJhdGhlciB0 aGFuIHBhc3NpbmcgYSBwb2ludGVyIHRvIGd1ZXN0IGNvbnRyb2xsZWQgbWVtb3J5IGludG8NCj4g ZWFjaCBvZiB0aGUgaGFuZGxpbmcgZnVuY3Rpb25zLiAgSXQgaXMgYWxzbyBtb2RpZmllZCB0byBi cmVhayBvbiBlcnJvciByYXRoZXINCj4gdGhhbiBjb250aW51ZS4gIFRoZXNlIGNoYW5nZXMgYXJl IGluIGxpbmUgd2l0aCB0aGUgc3BlYyB3aGljaCBzdGF0ZXMgdGhhdCB0aGUNCj4gSU9NTVUgd2ls bCBzdHJpY3RseSByZWFkIGEgY29tbWFuZCBlbnRyeSBvbmNlLCBhbmQgd2lsbCBjZWFzZSBwcm9j ZXNzaW5nIGlmIGFuDQo+IGVycm9yIGlzIGVuY291bnRlcmVkLg0KPiANCj4gU2lnbmVkLW9mZi1i eTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4NCg0KQWNrZWQtYnk6 IEJyaWFuIFdvb2RzIDxicmlhbi53b29kc0BhbWQuY29tPg0KDQo+IC0tLQ0KPiBDQzogSmFuIEJl dWxpY2ggPEpCZXVsaWNoQHN1c2UuY29tPg0KPiBDQzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4 LmNvbT4NCj4gQ0M6IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPg0KPiBD QzogU3VyYXZlZSBTdXRoaWt1bHBhbml0IDxzdXJhdmVlLnN1dGhpa3VscGFuaXRAYW1kLmNvbT4N Cj4gQ0M6IEJyaWFuIFdvb2RzIDxicmlhbi53b29kc0BhbWQuY29tPg0KPiANCj4gVGhpcyBwYXRj aCBteSBubyBtZWFucyBpbmRpY2F0ZXMgdGhhdCB0aGUgY29kZSBpcyByZWFkeSBmb3IgcHJvZHVj dGlvbiB1c2UuDQo+IC0tLQ0KPiAgIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9n dWVzdC5jIHwgMjI0ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQ0KPiAgIDEgZmlsZSBj aGFuZ2VkLCAxNDYgaW5zZXJ0aW9ucygrKSwgNzggZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0t Z2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X2d1ZXN0LmMgYi94ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfZ3Vlc3QuYw0KPiBpbmRleCA5NjE3NWJiLi4wM2Nh MGNmIDEwMDY0NA0KPiAtLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfZ3Vl c3QuYw0KPiArKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfZ3Vlc3QuYw0K PiBAQCAtMjEsNiArMjEsMTMgQEANCj4gICAjaW5jbHVkZSA8YXNtL2FtZC1pb21tdS5oPg0KPiAg ICNpbmNsdWRlIDxhc20vaHZtL3N2bS9hbWQtaW9tbXUtcHJvdG8uaD4NCj4gICANCj4gKy8qIE92 ZXJyaWRlIHtnZXQscHV0fV9nZm4gdG8gd29yayB3aXRoIGdmbl90ICovDQo+ICsjdW5kZWYgZ2V0 X2dmbg0KPiArI2RlZmluZSBnZXRfZ2ZuKGQsIGcsIHQpIGdldF9nZm5fdHlwZShkLCBnZm5feChn KSwgdCwgUDJNX0FMTE9DKQ0KPiArI3VuZGVmIGdldF9nZm5fcXVlcnkNCj4gKyNkZWZpbmUgZ2V0 X2dmbl9xdWVyeShkLCBnLCB0KSBnZXRfZ2ZuX3R5cGUoZCwgZ2ZuX3goZyksIHQsIDApDQo+ICsj dW5kZWYgcHV0X2dmbg0KPiArI2RlZmluZSBwdXRfZ2ZuKGQsIGcpIF9fcHV0X2dmbihwMm1fZ2V0 X2hvc3RwMm0oZCksIGdmbl94KGcpKQ0KPiAgIA0KPiAgICNkZWZpbmUgSU9NTVVfTU1JT19TSVpF ICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwMA0KPiAgICNkZWZpbmUgSU9NTVVfTU1JT19Q QUdFX05SICAgICAgICAgICAgICAgICAgICAgIDB4OA0KPiBAQCAtMTE3LDEzICsxMjQsNiBAQCBz dGF0aWMgdW5zaWduZWQgaW50IGhvc3RfZG9taWQoc3RydWN0IGRvbWFpbiAqZCwgdWludDY0X3Qg Z19kb21pZCkNCj4gICAgICAgcmV0dXJuIGQtPmRvbWFpbl9pZDsNCj4gICB9DQo+ICAgDQo+IC1z dGF0aWMgdW5zaWduZWQgbG9uZyBnZXRfZ2ZuX2Zyb21fYmFzZV9yZWcodWludDY0X3QgYmFzZV9y YXcpDQo+IC17DQo+IC0gICAgYmFzZV9yYXcgJj0gUEFERFJfTUFTSzsNCj4gLSAgICBBU1NFUlQg KCBiYXNlX3JhdyAhPSAwICk7DQo+IC0gICAgcmV0dXJuIGJhc2VfcmF3ID4+IFBBR0VfU0hJRlQ7 DQo+IC19DQo+IC0NCj4gICBzdGF0aWMgdm9pZCBndWVzdF9pb21tdV9kZWxpdmVyX21zaShzdHJ1 Y3QgZG9tYWluICpkKQ0KPiAgIHsNCj4gICAgICAgdWludDhfdCB2ZWN0b3IsIGRlc3QsIGRlc3Rf bW9kZSwgZGVsaXZlcnlfbW9kZSwgdHJpZ19tb2RlOw0KPiBAQCAtMTM4LDIzICsxMzgsNiBAQCBz dGF0aWMgdm9pZCBndWVzdF9pb21tdV9kZWxpdmVyX21zaShzdHJ1Y3QgZG9tYWluICpkKQ0KPiAg ICAgICB2bXNpX2RlbGl2ZXIoZCwgdmVjdG9yLCBkZXN0LCBkZXN0X21vZGUsIGRlbGl2ZXJ5X21v ZGUsIHRyaWdfbW9kZSk7DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGljIHVuc2lnbmVkIGxvbmcgZ3Vl c3RfaW9tbXVfZ2V0X3RhYmxlX21mbihzdHJ1Y3QgZG9tYWluICpkLA0KPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBiYXNlX3JhdywNCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50IGVudHJ5X3NpemUsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCBwb3MpDQo+IC17DQo+IC0gICAgdW5zaWduZWQgbG9uZyBp ZHgsIGdmbiwgbWZuOw0KPiAtICAgIHAybV90eXBlX3QgcDJtdDsNCj4gLQ0KPiAtICAgIGdmbiA9 IGdldF9nZm5fZnJvbV9iYXNlX3JlZyhiYXNlX3Jhdyk7DQo+IC0gICAgaWR4ID0gKHBvcyAqIGVu dHJ5X3NpemUpID4+IFBBR0VfU0hJRlQ7DQo+IC0NCj4gLSAgICBtZm4gPSBtZm5feChnZXRfZ2Zu KGQsIGdmbiArIGlkeCwgJnAybXQpKTsNCj4gLSAgICBwdXRfZ2ZuKGQsIGdmbik7DQo+IC0NCj4g LSAgICByZXR1cm4gbWZuOw0KPiAtfQ0KPiAtDQo+ICAgc3RhdGljIHZvaWQgZ3Vlc3RfaW9tbXVf ZW5hYmxlX2Rldl90YWJsZShzdHJ1Y3QgZ3Vlc3RfaW9tbXUgKmlvbW11KQ0KPiAgIHsNCj4gICAg ICAgdWludDMyX3QgbGVuZ3RoX3JhdyA9IGdldF9maWVsZF9mcm9tX3JlZ191MzIoaW9tbXUtPmRl dl90YWJsZS5yZWdfYmFzZS5sbywNCj4gQEAgLTE3Niw3ICsxNTksMTAgQEAgc3RhdGljIHZvaWQg Z3Vlc3RfaW9tbXVfZW5hYmxlX3JpbmdfYnVmZmVyKHN0cnVjdCBndWVzdF9pb21tdSAqaW9tbXUs DQo+ICAgdm9pZCBndWVzdF9pb21tdV9hZGRfcHByX2xvZyhzdHJ1Y3QgZG9tYWluICpkLCB1MzIg ZW50cnlbXSkNCj4gICB7DQo+ICAgICAgIHVpbnQxNl90IGdkZXZfaWQ7DQo+IC0gICAgdW5zaWdu ZWQgbG9uZyBtZm4sIHRhaWwsIGhlYWQ7DQo+ICsgICAgdW5zaWduZWQgbG9uZyB0YWlsLCBoZWFk Ow0KPiArICAgIG1mbl90IG1mbjsNCj4gKyAgICBnZm5fdCBnZm47DQo+ICsgICAgcDJtX3R5cGVf dCBwMm10Ow0KPiAgICAgICBwcHJfZW50cnlfdCAqbG9nLCAqbG9nX2Jhc2U7DQo+ICAgICAgIHN0 cnVjdCBndWVzdF9pb21tdSAqaW9tbXU7DQo+ICAgDQo+IEBAIC0xOTcsMTEgKzE4MywyNCBAQCB2 b2lkIGd1ZXN0X2lvbW11X2FkZF9wcHJfbG9nKHN0cnVjdCBkb21haW4gKmQsIHUzMiBlbnRyeVtd KQ0KPiAgICAgICAgICAgcmV0dXJuOw0KPiAgICAgICB9DQo+ICAgDQo+IC0gICAgbWZuID0gZ3Vl c3RfaW9tbXVfZ2V0X3RhYmxlX21mbihkLCByZWdfdG9fdTY0KGlvbW11LT5wcHJfbG9nLnJlZ19i YXNlKSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihwcHJf ZW50cnlfdCksIHRhaWwpOw0KPiAtICAgIEFTU0VSVChtZm5fdmFsaWQoX21mbihtZm4pKSk7DQo+ ICsgICAgZ2ZuID0gX2dmbihQRk5fRE9XTihyZWdfdG9fdTY0KGlvbW11LT5wcHJfbG9nLnJlZ19i YXNlKSkgKw0KPiArICAgICAgICAgICAgICAgUEZOX0RPV04odGFpbCAqIHNpemVvZigqbG9nKSkp Ow0KPiAgIA0KPiAtICAgIGxvZ19iYXNlID0gbWFwX2RvbWFpbl9wYWdlKF9tZm4obWZuKSk7DQo+ ICsgICAgbWZuID0gZ2V0X2dmbihkLCBnZm4sICZwMm10KTsNCj4gKyAgICBpZiAoIG1mbl9lcSht Zm4sIElOVkFMSURfTUZOKSB8fCAhcDJtX2lzX3JhbShwMm10KSApDQo+ICsgICAgew0KPiArICAg ICAgICBBTURfSU9NTVVfREVCVUcoDQo+ICsgICAgICAgICAgICAiRXJyb3I6IGd1ZXN0IGlvbW11 IHBwciBsb2cgYmFkIGdmbiAlIlBSSV9nZm4iLCB0eXBlICV1LCBtZm4gJSINCj4gKyAgICAgICAg ICAgIFBSSV9tZm4iLCByZWdfYmFzZSAlIyJQUkl4NjQiLCB0YWlsICUjbHhcbiIsDQo+ICsgICAg ICAgICAgICBnZm5feChnZm4pLCBwMm10LCBtZm5feChtZm4pLA0KPiArICAgICAgICAgICAgcmVn X3RvX3U2NChpb21tdS0+cHByX2xvZy5yZWdfYmFzZSksIHRhaWwpOw0KPiArICAgICAgICBndWVz dF9pb21tdV9kaXNhYmxlKGlvbW11KTsNCj4gKyAgICAgICAgZ290byBvdXQ7DQo+ICsgICAgfQ0K PiArDQo+ICsgICAgQVNTRVJUKG1mbl92YWxpZChtZm4pKTsNCj4gKw0KPiArICAgIGxvZ19iYXNl ID0gbWFwX2RvbWFpbl9wYWdlKG1mbik7DQo+ICAgICAgIGxvZyA9IGxvZ19iYXNlICsgdGFpbCAl IChQQUdFX1NJWkUgLyBzaXplb2YocHByX2VudHJ5X3QpKTsNCj4gICANCj4gICAgICAgLyogQ29u dmVydCBwaHlzaWNhbCBkZXZpY2UgaWQgYmFjayBpbnRvIHZpcnR1YWwgZGV2aWNlIGlkICovDQo+ IEBAIC0yMjAsMTIgKzIxOSwxOCBAQCB2b2lkIGd1ZXN0X2lvbW11X2FkZF9wcHJfbG9nKHN0cnVj dCBkb21haW4gKmQsIHUzMiBlbnRyeVtdKQ0KPiAgICAgICB1bm1hcF9kb21haW5fcGFnZShsb2df YmFzZSk7DQo+ICAgDQo+ICAgICAgIGd1ZXN0X2lvbW11X2RlbGl2ZXJfbXNpKGQpOw0KPiArDQo+ ICtvdXQ6DQo+ICsgICAgcHV0X2dmbihkLCBnZm4pOw0KPiAgIH0NCj4gICANCj4gICB2b2lkIGd1 ZXN0X2lvbW11X2FkZF9ldmVudF9sb2coc3RydWN0IGRvbWFpbiAqZCwgdTMyIGVudHJ5W10pDQo+ ICAgew0KPiAgICAgICB1aW50MTZfdCBkZXZfaWQ7DQo+IC0gICAgdW5zaWduZWQgbG9uZyBtZm4s IHRhaWwsIGhlYWQ7DQo+ICsgICAgdW5zaWduZWQgbG9uZyB0YWlsLCBoZWFkOw0KPiArICAgIG1m bl90IG1mbjsNCj4gKyAgICBnZm5fdCBnZm47DQo+ICsgICAgcDJtX3R5cGVfdCBwMm10Ow0KPiAg ICAgICBldmVudF9lbnRyeV90ICpsb2csICpsb2dfYmFzZTsNCj4gICAgICAgc3RydWN0IGd1ZXN0 X2lvbW11ICppb21tdTsNCj4gICANCj4gQEAgLTI0NiwxMSArMjUxLDI0IEBAIHZvaWQgZ3Vlc3Rf aW9tbXVfYWRkX2V2ZW50X2xvZyhzdHJ1Y3QgZG9tYWluICpkLCB1MzIgZW50cnlbXSkNCj4gICAg ICAgICAgIHJldHVybjsNCj4gICAgICAgfQ0KPiAgIA0KPiAtICAgIG1mbiA9IGd1ZXN0X2lvbW11 X2dldF90YWJsZV9tZm4oZCwgcmVnX3RvX3U2NChpb21tdS0+ZXZlbnRfbG9nLnJlZ19iYXNlKSwN Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihldmVudF9lbnRy eV90KSwgdGFpbCk7DQo+IC0gICAgQVNTRVJUKG1mbl92YWxpZChfbWZuKG1mbikpKTsNCj4gKyAg ICBnZm4gPSBfZ2ZuKFBGTl9ET1dOKHJlZ190b191NjQoaW9tbXUtPmV2ZW50X2xvZy5yZWdfYmFz ZSkpICsNCj4gKyAgICAgICAgICAgICAgIFBGTl9ET1dOKHRhaWwgKiBzaXplb2YoKmxvZykpKTsN Cj4gKw0KPiArICAgIG1mbiA9IGdldF9nZm4oZCwgZ2ZuLCAmcDJtdCk7DQo+ICsgICAgaWYgKCBt Zm5fZXEobWZuLCBJTlZBTElEX01GTikgfHwgIXAybV9pc19yYW0ocDJtdCkgKQ0KPiArICAgIHsN Cj4gKyAgICAgICAgQU1EX0lPTU1VX0RFQlVHKA0KPiArICAgICAgICAgICAgIkVycm9yOiBndWVz dCBpb21tdSBldmVudCBsb2cgYmFkIGdmbiAlIlBSSV9nZm4iLCB0eXBlICV1LCBtZm4gJSINCj4g KyAgICAgICAgICAgIFBSSV9tZm4iLCByZWdfYmFzZSAlIyJQUkl4NjQiLCB0YWlsICUjbHhcbiIs DQo+ICsgICAgICAgICAgICBnZm5feChnZm4pLCBwMm10LCBtZm5feChtZm4pLA0KPiArICAgICAg ICAgICAgcmVnX3RvX3U2NChpb21tdS0+cHByX2xvZy5yZWdfYmFzZSksIHRhaWwpOw0KPiArICAg ICAgICBndWVzdF9pb21tdV9kaXNhYmxlKGlvbW11KTsNCj4gKyAgICAgICAgZ290byBvdXQ7DQo+ ICsgICAgfQ0KPiArDQo+ICsgICAgQVNTRVJUKG1mbl92YWxpZChtZm4pKTsNCj4gICANCj4gLSAg ICBsb2dfYmFzZSA9IG1hcF9kb21haW5fcGFnZShfbWZuKG1mbikpOw0KPiArICAgIGxvZ19iYXNl ID0gbWFwX2RvbWFpbl9wYWdlKG1mbik7DQo+ICAgICAgIGxvZyA9IGxvZ19iYXNlICsgdGFpbCAl IChQQUdFX1NJWkUgLyBzaXplb2YoZXZlbnRfZW50cnlfdCkpOw0KPiAgIA0KPiAgICAgICAvKiBy ZS13cml0ZSBwaHlzaWNhbCBkZXZpY2UgaWQgaW50byB2aXJ0dWFsIGRldmljZSBpZCAqLw0KPiBA QCAtMjY5LDYgKzI4Nyw5IEBAIHZvaWQgZ3Vlc3RfaW9tbXVfYWRkX2V2ZW50X2xvZyhzdHJ1Y3Qg ZG9tYWluICpkLCB1MzIgZW50cnlbXSkNCj4gICAgICAgdW5tYXBfZG9tYWluX3BhZ2UobG9nX2Jh c2UpOw0KPiAgIA0KPiAgICAgICBndWVzdF9pb21tdV9kZWxpdmVyX21zaShkKTsNCj4gKw0KPiAr b3V0Og0KPiArICAgIHB1dF9nZm4oZCwgZ2ZuKTsNCj4gICB9DQo+ICAgDQo+ICAgc3RhdGljIGlu dCBkb19jb21wbGV0ZV9wcHJfcmVxdWVzdChzdHJ1Y3QgZG9tYWluICpkLCBjbWRfZW50cnlfdCAq Y21kKQ0KPiBAQCAtMzQ2LDEwICszNjcsOCBAQCBzdGF0aWMgaW50IGRvX2ludmFsaWRhdGVfaW90 bGJfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwgY21kX2VudHJ5X3QgKmNtZCkNCj4gICANCj4gICBz dGF0aWMgaW50IGRvX2NvbXBsZXRpb25fd2FpdChzdHJ1Y3QgZG9tYWluICpkLCBjbWRfZW50cnlf dCAqY21kKQ0KPiAgIHsNCj4gLSAgICBib29sX3QgY29tX3dhaXRfaW50X2VuLCBjb21fd2FpdF9p bnQsIGksIHM7DQo+ICsgICAgYm9vbCBjb21fd2FpdF9pbnRfZW4sIGNvbV93YWl0X2ludCwgaSwg czsNCj4gICAgICAgc3RydWN0IGd1ZXN0X2lvbW11ICppb21tdTsNCj4gLSAgICB1bnNpZ25lZCBs b25nIGdmbjsNCj4gLSAgICBwMm1fdHlwZV90IHAybXQ7DQo+ICAgDQo+ICAgICAgIGlvbW11ID0g ZG9tYWluX2lvbW11KGQpOw0KPiAgIA0KPiBAQCAtMzYyLDcgKzM4MSwxMCBAQCBzdGF0aWMgaW50 IGRvX2NvbXBsZXRpb25fd2FpdChzdHJ1Y3QgZG9tYWluICpkLCBjbWRfZW50cnlfdCAqY21kKQ0K PiAgICAgICBpZiAoIHMgKQ0KPiAgICAgICB7DQo+ICAgICAgICAgICB1aW50NjRfdCBnYWRkcl9s bywgZ2FkZHJfaGksIGdhZGRyXzY0LCBkYXRhOw0KPiAtICAgICAgICB2b2lkICp2YWRkcjsNCj4g KyAgICAgICAgbWZuX3QgbWZuOw0KPiArICAgICAgICBnZm5fdCBnZm47DQo+ICsgICAgICAgIHAy bV90eXBlX3QgcDJtdDsNCj4gKyAgICAgICAgdWludDY0X3QgKnB0cjsNCj4gICANCj4gICAgICAg ICAgIGRhdGEgPSAodWludDY0X3QpY21kLT5kYXRhWzNdIDw8IDMyIHwgY21kLT5kYXRhWzJdOw0K PiAgICAgICAgICAgZ2FkZHJfbG8gPSBnZXRfZmllbGRfZnJvbV9yZWdfdTMyKGNtZC0+ZGF0YVsw XSwNCj4gQEAgLTM3NCwxMyArMzk2LDI0IEBAIHN0YXRpYyBpbnQgZG9fY29tcGxldGlvbl93YWl0 KHN0cnVjdCBkb21haW4gKmQsIGNtZF9lbnRyeV90ICpjbWQpDQo+ICAgDQo+ICAgICAgICAgICBn YWRkcl82NCA9IChnYWRkcl9oaSA8PCAzMikgfCAoZ2FkZHJfbG8gPDwgMyk7DQo+ICAgDQo+IC0g ICAgICAgIGdmbiA9IGdhZGRyXzY0ID4+IFBBR0VfU0hJRlQ7DQo+IC0gICAgICAgIHZhZGRyID0g bWFwX2RvbWFpbl9wYWdlKGdldF9nZm4oZCwgZ2ZuICwmcDJtdCkpOw0KPiAtICAgICAgICBwdXRf Z2ZuKGQsIGdmbik7DQo+ICsgICAgICAgIGdmbiA9IF9nZm4oZ2FkZHJfNjQgPj4gUEFHRV9TSElG VCk7DQo+ICsgICAgICAgIG1mbiA9IGdldF9nZm4oZCwgZ2ZuLCAmcDJtdCk7DQo+ICAgDQo+IC0g ICAgICAgIHdyaXRlX3U2NF9hdG9taWMoKHVpbnQ2NF90ICopKHZhZGRyICsgKGdhZGRyXzY0ICYg KFBBR0VfU0laRS0xKSkpLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEpOw0KPiAt ICAgICAgICB1bm1hcF9kb21haW5fcGFnZSh2YWRkcik7DQo+ICsgICAgICAgIGlmICggbWZuX2Vx KG1mbiwgSU5WQUxJRF9NRk4pIHx8ICFwMm1faXNfcmFtKHAybXQpICkNCj4gKyAgICAgICAgew0K PiArICAgICAgICAgICAgLyogWFhYIC0gV2hhdCB0byBkbyBoZXJlLCBlcnJvciB3aXNlPyAqLw0K PiArICAgICAgICAgICAgZ3Vlc3RfaW9tbXVfZGlzYWJsZShpb21tdSk7DQo+ICsgICAgICAgICAg ICBwdXRfZ2ZuKGQsIGdmbik7DQo+ICsNCj4gKyAgICAgICAgICAgIHJldHVybiAwOw0KPiArICAg ICAgICB9DQo+ICsNCj4gKyAgICAgICAgcHRyID0gbWFwX2RvbWFpbl9wYWdlKG1mbikgKyAoZ2Fk ZHJfNjQgJiB+UEFHRV9NQVNLKTsNCj4gKw0KPiArICAgICAgICB3cml0ZV91NjRfYXRvbWljKHB0 ciwgZGF0YSk7DQo+ICsgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKHB0cik7DQo+ICsNCj4gKyAg ICAgICAgcHV0X2dmbihkLCBnZm4pOw0KPiAgICAgICB9DQo+ICAgDQo+ICAgICAgIGNvbV93YWl0 X2ludF9lbiA9IGlvbW11X2dldF9iaXQoaW9tbXUtPnJlZ19jdHJsLmxvLA0KPiBAQCAtNDAwLDkg KzQzMywxMCBAQCBzdGF0aWMgaW50IGRvX2ludmFsaWRhdGVfZHRlKHN0cnVjdCBkb21haW4gKmQs IGNtZF9lbnRyeV90ICpjbWQpDQo+ICAgICAgIGRldl9lbnRyeV90ICpnZHRlLCAqbWR0ZSwgKmR0 ZV9iYXNlOw0KPiAgICAgICBzdHJ1Y3QgYW1kX2lvbW11ICppb21tdSA9IE5VTEw7DQo+ICAgICAg IHN0cnVjdCBndWVzdF9pb21tdSAqZ19pb21tdTsNCj4gLSAgICB1aW50NjRfdCBnY3IzX2dmbiwg Z2NyM19tZm47DQo+ICsgICAgbWZuX3QgZHRlX21mbiwgZ2NyM19tZm47DQo+ICsgICAgZ2ZuX3Qg ZHRlX2dmbiwgZ2NyM19nZm47DQo+ICAgICAgIHVpbnQ4X3QgZ2x4LCBndjsNCj4gLSAgICB1bnNp Z25lZCBsb25nIGR0ZV9tZm4sIGZsYWdzOw0KPiArICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+ ICAgICAgIHAybV90eXBlX3QgcDJtdDsNCj4gICANCj4gICAgICAgZ19pb21tdSA9IGRvbWFpbl9p b21tdShkKTsNCj4gQEAgLTQxNywzNSArNDUxLDQ5IEBAIHN0YXRpYyBpbnQgZG9faW52YWxpZGF0 ZV9kdGUoc3RydWN0IGRvbWFpbiAqZCwgY21kX2VudHJ5X3QgKmNtZCkNCj4gICAgICAgaWYgKCAo Z2JkZiAqIHNpemVvZihkZXZfZW50cnlfdCkpID4gZ19pb21tdS0+ZGV2X3RhYmxlLnNpemUgKQ0K PiAgICAgICAgICAgcmV0dXJuIDA7DQo+ICAgDQo+IC0gICAgZHRlX21mbiA9IGd1ZXN0X2lvbW11 X2dldF90YWJsZV9tZm4oZCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZWdfdG9fdTY0KGdfaW9tbXUtPmRldl90YWJsZS5yZWdfYmFzZSksDQo+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGRldl9lbnRyeV90KSwgZ2Jk Zik7DQo+IC0gICAgQVNTRVJUKG1mbl92YWxpZChfbWZuKGR0ZV9tZm4pKSk7DQo+ICsgICAgZHRl X2dmbiA9IF9nZm4oUEZOX0RPV04ocmVnX3RvX3U2NChnX2lvbW11LT5kZXZfdGFibGUucmVnX2Jh c2UpKSArDQo+ICsgICAgICAgICAgICAgICAgICAgUEZOX0RPV04oZ2JkZiAqIHNpemVvZigqZ2R0 ZSkpKTsNCj4gKyAgICBkdGVfbWZuID0gZ2V0X2dmbihkLCBkdGVfZ2ZuLCAmcDJtdCk7DQo+ICsN Cj4gKyAgICBpZiAoIG1mbl9lcShkdGVfbWZuLCBJTlZBTElEX01GTikgfHwgIXAybV9pc19yYW0o cDJtdCkgKQ0KPiArICAgIHsNCj4gKyAgICAgICAgcHV0X2dmbihkLCBkdGVfZ2ZuKTsNCj4gKyAg ICAgICAgcmV0dXJuIDA7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgQVNTRVJUKG1mbl92YWxpZChk dGVfbWZuKSk7DQo+ICAgDQo+ICAgICAgIC8qIFJlYWQgZ3Vlc3QgZHRlIGluZm9ybWF0aW9uICov DQo+IC0gICAgZHRlX2Jhc2UgPSBtYXBfZG9tYWluX3BhZ2UoX21mbihkdGVfbWZuKSk7DQo+ICsg ICAgZHRlX2Jhc2UgPSBtYXBfZG9tYWluX3BhZ2UoZHRlX21mbik7DQo+ICAgDQo+ICAgICAgIGdk dGUgPSBkdGVfYmFzZSArIGdiZGYgJSAoUEFHRV9TSVpFIC8gc2l6ZW9mKGRldl9lbnRyeV90KSk7 DQo+ICAgDQo+ICAgICAgIGdkb21faWQgID0gZ2V0X2RvbWlkX2Zyb21fZHRlKGdkdGUpOw0KPiAt ICAgIGdjcjNfZ2ZuID0gZ2V0X2d1ZXN0X2NyM19mcm9tX2R0ZShnZHRlKTsNCj4gKyAgICBnY3Iz X2dmbiA9IF9nZm4oZ2V0X2d1ZXN0X2NyM19mcm9tX2R0ZShnZHRlKSk7DQo+ICAgICAgIGdseCAg ICAgID0gZ2V0X2dseF9mcm9tX2R0ZShnZHRlKTsNCj4gICAgICAgZ3YgICAgICAgPSBnZXRfZ3Zf ZnJvbV9kdGUoZ2R0ZSk7DQo+ICAgDQo+ICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKGR0ZV9iYXNl KTsNCj4gKyAgICBwdXRfZ2ZuKGQsIGR0ZV9nZm4pOw0KPiAgIA0KPiAgICAgICAvKiBEbyBub3Qg dXBkYXRlIGhvc3QgZHRlIGJlZm9yZSBnY3IzIGhhcyBiZWVuIHNldCAqLw0KPiAtICAgIGlmICgg Z2NyM19nZm4gPT0gMCApDQo+ICsgICAgaWYgKCBnZm5feChnY3IzX2dmbikgPT0gMCApDQo+ICAg ICAgICAgICByZXR1cm4gMDsNCj4gICANCj4gLSAgICBnY3IzX21mbiA9IG1mbl94KGdldF9nZm4o ZCwgZ2NyM19nZm4sICZwMm10KSk7DQo+IC0gICAgcHV0X2dmbihkLCBnY3IzX2dmbik7DQo+ICsg ICAgZ2NyM19tZm4gPSBnZXRfZ2ZuKGQsIGdjcjNfZ2ZuLCAmcDJtdCk7DQo+ICAgDQo+IC0gICAg QVNTRVJUKG1mbl92YWxpZChfbWZuKGdjcjNfbWZuKSkpOw0KPiArICAgIGlmICggbWZuX2VxKGdj cjNfbWZuLCBJTlZBTElEX01GTikgfHwgIXAybV9pc19yYW0ocDJtdCkgKQ0KPiArICAgIHsNCj4g KyAgICAgICAgcHV0X2dmbihkLCBnY3IzX2dmbik7DQo+ICsgICAgICAgIHJldHVybiAwOw0KPiAr ICAgIH0NCj4gKw0KPiArICAgIEFTU0VSVChtZm5fdmFsaWQoZ2NyM19tZm4pKTsNCj4gICANCj4g ICAgICAgaW9tbXUgPSBmaW5kX2lvbW11X2Zvcl9kZXZpY2UoMCwgbWJkZik7DQo+ICAgICAgIGlm ICggIWlvbW11ICkNCj4gICAgICAgew0KPiArICAgICAgICBwdXRfZ2ZuKGQsIGdjcjNfZ2ZuKTsN Cj4gICAgICAgICAgIEFNRF9JT01NVV9ERUJVRygiJXM6IEZhaWwgdG8gZmluZCBpb21tdSBmb3Ig YmRmICV4IVxuIiwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgbWJkZik7 DQo+ICAgICAgICAgICByZXR1cm4gLUVOT0RFVjsNCj4gQEAgLTQ1OCwxOCArNTA2LDE5IEBAIHN0 YXRpYyBpbnQgZG9faW52YWxpZGF0ZV9kdGUoc3RydWN0IGRvbWFpbiAqZCwgY21kX2VudHJ5X3Qg KmNtZCkNCj4gICANCj4gICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmlvbW11LT5sb2NrLCBmbGFn cyk7DQo+ICAgICAgIGlvbW11X2R0ZV9zZXRfZ3Vlc3RfY3IzKCh1MzIgKiltZHRlLCBoZG9tX2lk LA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjcjNfbWZuIDw8IFBBR0VfU0hJRlQs IGd2LCBnbHgpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mbl90b19tYWRkcihn Y3IzX21mbiksIGd2LCBnbHgpOw0KPiAgIA0KPiAgICAgICBhbWRfaW9tbXVfZmx1c2hfZGV2aWNl KGlvbW11LCByZXFfaWQpOw0KPiAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb21tdS0+ bG9jaywgZmxhZ3MpOw0KPiAgIA0KPiArICAgIHB1dF9nZm4oZCwgZ2NyM19nZm4pOw0KPiArDQo+ ICAgICAgIHJldHVybiAwOw0KPiAgIH0NCj4gICANCj4gICBzdGF0aWMgdm9pZCBndWVzdF9pb21t dV9wcm9jZXNzX2NvbW1hbmQodW5zaWduZWQgbG9uZyBfZCkNCj4gICB7DQo+IC0gICAgdW5zaWdu ZWQgbG9uZyBvcGNvZGUsIHRhaWwsIGhlYWQsIGVudHJpZXNfcGVyX3BhZ2UsIGNtZF9tZm47DQo+ IC0gICAgY21kX2VudHJ5X3QgKmNtZCwgKmNtZF9iYXNlOw0KPiArICAgIHVuc2lnbmVkIGxvbmcg dGFpbCwgaGVhZDsNCj4gICAgICAgc3RydWN0IGRvbWFpbiAqZCA9IChzdHJ1Y3QgZG9tYWluICop X2Q7DQo+ICAgICAgIHN0cnVjdCBndWVzdF9pb21tdSAqaW9tbXU7DQo+ICAgDQo+IEBAIC00OTMs NTYgKzU0Miw3NSBAQCBzdGF0aWMgdm9pZCBndWVzdF9pb21tdV9wcm9jZXNzX2NvbW1hbmQodW5z aWduZWQgbG9uZyBfZCkNCj4gICAgICAgICAgIHJldHVybjsNCj4gICAgICAgfQ0KPiAgIA0KPiAt ICAgIGVudHJpZXNfcGVyX3BhZ2UgPSBQQUdFX1NJWkUgLyBzaXplb2YoY21kX2VudHJ5X3QpOw0K PiAtDQo+ICAgICAgIHdoaWxlICggaGVhZCAhPSB0YWlsICkNCj4gICAgICAgew0KPiArICAgICAg ICBtZm5fdCBtZm47DQo+ICsgICAgICAgIGdmbl90IGdmbjsNCj4gKyAgICAgICAgcDJtX3R5cGVf dCBwMm10Ow0KPiArICAgICAgICBjbWRfZW50cnlfdCBjbWQsICpwdHI7DQo+ICAgICAgICAgICBp bnQgcmV0ID0gMDsNCj4gKyAgICAgICAgdW5zaWduZWQgaW50IG9wY29kZTsNCj4gKw0KPiArICAg ICAgICBnZm4gPSBfZ2ZuKFBGTl9ET1dOKHJlZ190b191NjQoaW9tbXUtPmNtZF9idWZmZXIucmVn X2Jhc2UpKSArDQo+ICsgICAgICAgICAgICAgICAgICAgUEZOX0RPV04oaGVhZCAqIHNpemVvZihj bWQpKSk7DQo+ICAgDQo+IC0gICAgICAgIGNtZF9tZm4gPSBndWVzdF9pb21tdV9nZXRfdGFibGVf bWZuKGQsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl Z190b191NjQoaW9tbXUtPmNtZF9idWZmZXIucmVnX2Jhc2UpLA0KPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoY21kX2VudHJ5X3QpLCBoZWFkKTsN Cj4gLSAgICAgICAgQVNTRVJUKG1mbl92YWxpZChfbWZuKGNtZF9tZm4pKSk7DQo+ICsgICAgICAg IG1mbiA9IGdldF9nZm4oZCwgZ2ZuLCAmcDJtdCk7DQo+ICsgICAgICAgIGlmICggbWZuX2VxKG1m biwgSU5WQUxJRF9NRk4pIHx8ICFwMm1faXNfcmFtKHAybXQpICkNCj4gKyAgICAgICAgew0KPiAr ICAgICAgICAgICAgQU1EX0lPTU1VX0RFQlVHKA0KPiArICAgICAgICAgICAgICAgICJFcnJvcjog Z3Vlc3QgaW9tbXUgY21kIGJ1ZmZlciBiYWQgZ2ZuICUiUFJJX2dmbiIsIHR5cGUgJXUsIG1mbiAl Ig0KPiArICAgICAgICAgICAgICAgIFBSSV9tZm4iLCByZWdfYmFzZSAlIyJQUkl4NjQiLCBoZWFk ICUjbHhcbiIsDQo+ICsgICAgICAgICAgICAgICAgZ2ZuX3goZ2ZuKSwgcDJtdCwgbWZuX3gobWZu KSwNCj4gKyAgICAgICAgICAgICAgICByZWdfdG9fdTY0KGlvbW11LT5jbWRfYnVmZmVyLnJlZ19i YXNlKSwgaGVhZCk7DQo+ICsgICAgICAgICAgICBwdXRfZ2ZuKGQsIGdmbik7DQo+ICsgICAgICAg ICAgICBndWVzdF9pb21tdV9kaXNhYmxlKGlvbW11KTsNCj4gKyAgICAgICAgICAgIHJldHVybjsN Cj4gKyAgICAgICAgfQ0KPiAgIA0KPiAtICAgICAgICBjbWRfYmFzZSA9IG1hcF9kb21haW5fcGFn ZShfbWZuKGNtZF9tZm4pKTsNCj4gLSAgICAgICAgY21kID0gY21kX2Jhc2UgKyBoZWFkICUgZW50 cmllc19wZXJfcGFnZTsNCj4gKyAgICAgICAgcHRyID0gbWFwX2RvbWFpbl9wYWdlKG1mbikgKyBo ZWFkICUgKFBBR0VfU0laRSAvIHNpemVvZihjbWRfZW50cnlfdCkpOw0KPiArICAgICAgICBtZW1j cHkoJmNtZCwgcHRyLCBzaXplb2YoY21kKSk7DQo+ICsgICAgICAgIHVubWFwX2RvbWFpbl9wYWdl KHB0cik7DQo+ICsgICAgICAgIHB1dF9nZm4oZCwgZ2ZuKTsNCj4gICANCj4gLSAgICAgICAgb3Bj b2RlID0gZ2V0X2ZpZWxkX2Zyb21fcmVnX3UzMihjbWQtPmRhdGFbMV0sDQo+ICsgICAgICAgIG9w Y29kZSA9IGdldF9maWVsZF9mcm9tX3JlZ191MzIoY21kLmRhdGFbMV0sDQo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPTU1VX0NNRF9PUENPREVfTUFTSywNCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9NTVVfQ01EX09QQ09E RV9TSElGVCk7DQo+ICAgICAgICAgICBzd2l0Y2ggKCBvcGNvZGUgKQ0KPiAgICAgICAgICAgew0K PiAgICAgICAgICAgY2FzZSBJT01NVV9DTURfQ09NUExFVElPTl9XQUlUOg0KPiAtICAgICAgICAg ICAgcmV0ID0gZG9fY29tcGxldGlvbl93YWl0KGQsIGNtZCk7DQo+ICsgICAgICAgICAgICByZXQg PSBkb19jb21wbGV0aW9uX3dhaXQoZCwgJmNtZCk7DQo+ICAgICAgICAgICAgICAgYnJlYWs7DQo+ ICAgICAgICAgICBjYXNlIElPTU1VX0NNRF9JTlZBTElEQVRFX0RFVlRBQl9FTlRSWToNCj4gLSAg ICAgICAgICAgIHJldCA9IGRvX2ludmFsaWRhdGVfZHRlKGQsIGNtZCk7DQo+ICsgICAgICAgICAg ICByZXQgPSBkb19pbnZhbGlkYXRlX2R0ZShkLCAmY21kKTsNCj4gICAgICAgICAgICAgICBicmVh azsNCj4gICAgICAgICAgIGNhc2UgSU9NTVVfQ01EX0lOVkFMSURBVEVfSU9NTVVfUEFHRVM6DQo+ IC0gICAgICAgICAgICByZXQgPSBkb19pbnZhbGlkYXRlX3BhZ2VzKGQsIGNtZCk7DQo+ICsgICAg ICAgICAgICByZXQgPSBkb19pbnZhbGlkYXRlX3BhZ2VzKGQsICZjbWQpOw0KPiAgICAgICAgICAg ICAgIGJyZWFrOw0KPiAgICAgICAgICAgY2FzZSBJT01NVV9DTURfSU5WQUxJREFURV9JT1RMQl9Q QUdFUzoNCj4gLSAgICAgICAgICAgIHJldCA9IGRvX2ludmFsaWRhdGVfaW90bGJfcGFnZXMoZCwg Y21kKTsNCj4gKyAgICAgICAgICAgIHJldCA9IGRvX2ludmFsaWRhdGVfaW90bGJfcGFnZXMoZCwg JmNtZCk7DQo+ICAgICAgICAgICAgICAgYnJlYWs7DQo+ICAgICAgICAgICBjYXNlIElPTU1VX0NN RF9JTlZBTElEQVRFX0lOVF9UQUJMRToNCj4gICAgICAgICAgICAgICBicmVhazsNCj4gICAgICAg ICAgIGNhc2UgSU9NTVVfQ01EX0NPTVBMRVRFX1BQUl9SRVFVRVNUOg0KPiAtICAgICAgICAgICAg cmV0ID0gZG9fY29tcGxldGVfcHByX3JlcXVlc3QoZCwgY21kKTsNCj4gKyAgICAgICAgICAgIHJl dCA9IGRvX2NvbXBsZXRlX3Bwcl9yZXF1ZXN0KGQsICZjbWQpOw0KPiAgICAgICAgICAgICAgIGJy ZWFrOw0KPiAgICAgICAgICAgY2FzZSBJT01NVV9DTURfSU5WQUxJREFURV9JT01NVV9BTEw6DQo+ IC0gICAgICAgICAgICByZXQgPSBkb19pbnZhbGlkYXRlX2FsbChkLCBjbWQpOw0KPiArICAgICAg ICAgICAgcmV0ID0gZG9faW52YWxpZGF0ZV9hbGwoZCwgJmNtZCk7DQo+ICAgICAgICAgICAgICAg YnJlYWs7DQo+ICAgICAgICAgICBkZWZhdWx0Og0KPiAtICAgICAgICAgICAgQU1EX0lPTU1VX0RF QlVHKCJDTUQ6IFVua25vd24gY29tbWFuZCBjbWRfdHlwZSA9ICVseCAiDQo+ICsgICAgICAgICAg ICBBTURfSU9NTVVfREVCVUcoIkNNRDogVW5rbm93biBjb21tYW5kIGNtZF90eXBlID0gJSN4ICIN Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlYWQgPSAlbGRcbiIsIG9wY29kZSwg aGVhZCk7DQo+ICsgICAgICAgICAgICByZXQgPSAtRUlOVkFMOw0KPiAgICAgICAgICAgICAgIGJy ZWFrOw0KPiAgICAgICAgICAgfQ0KPiAgIA0KPiAtICAgICAgICB1bm1hcF9kb21haW5fcGFnZShj bWRfYmFzZSk7DQo+ICAgICAgICAgICBpZiAoICsraGVhZCA+PSBpb21tdS0+Y21kX2J1ZmZlci5l bnRyaWVzICkNCj4gICAgICAgICAgICAgICBoZWFkID0gMDsNCj4gICAgICAgICAgIGlmICggcmV0 ICkNCj4gKyAgICAgICAgew0KPiAgICAgICAgICAgICAgIGd1ZXN0X2lvbW11X2Rpc2FibGUoaW9t bXUpOw0KPiArICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgIH0NCj4gICAgICAgfQ0KPiAg IA0KPiAgICAgICAvKiBOb3cgc2hpZnQgY21kIGJ1ZmZlciBoZWFkIHBvaW50ZXIgKi8NCj4gQEAg LTgxOCwxMCArODg2LDEwIEBAIGludCBndWVzdF9pb21tdV9zZXRfYmFzZShzdHJ1Y3QgZG9tYWlu ICpkLCB1aW50NjRfdCBiYXNlKQ0KPiAgIA0KPiAgICAgICBmb3IgKCBpbnQgaSA9IDA7IGkgPCBJ T01NVV9NTUlPX1BBR0VfTlI7IGkrKyApDQo+ICAgICAgIHsNCj4gLSAgICAgICAgdW5zaWduZWQg bG9uZyBnZm4gPSBiYXNlICsgaTsNCj4gKyAgICAgICAgZ2ZuX3QgZ2ZuID0gX2dmbihiYXNlICsg aSk7DQo+ICAgDQo+ICAgICAgICAgICBnZXRfZ2ZuX3F1ZXJ5KGQsIGdmbiwgJnQpOw0KPiAtICAg ICAgICBwMm1fY2hhbmdlX3R5cGVfb25lKGQsIGdmbiwgdCwgcDJtX21taW9fZG0pOw0KPiArICAg ICAgICBwMm1fY2hhbmdlX3R5cGVfb25lKGQsIGdmbl94KGdmbiksIHQsIHAybV9tbWlvX2RtKTsN Cj4gICAgICAgICAgIHB1dF9nZm4oZCwgZ2ZuKTsNCj4gICAgICAgfQ0KPiAgIA0KPiANCg0KX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54 ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==