From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mx1.redhat.com ([209.132.183.28]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1g5l2j-00020v-Jv for kexec@lists.infradead.org; Fri, 28 Sep 2018 05:10:25 +0000 Subject: Re: [PATCH 3/3] resource: Fix find_next_iomem_res() iteration issue References: <153782698067.130337.12079523922130875402.stgit@bhelgaas-glaptop.roam.corp.google.com> <153782730364.130337.17794279728329113665.stgit@bhelgaas-glaptop.roam.corp.google.com> <13084ce6-e29a-c244-3f9c-cf0725646d9f@redhat.com> <20180927140351.GA257735@bhelgaas-glaptop.roam.corp.google.com> From: lijiang Message-ID: Date: Fri, 28 Sep 2018 13:09:37 +0800 MIME-Version: 1.0 In-Reply-To: <20180927140351.GA257735@bhelgaas-glaptop.roam.corp.google.com> Content-Language: en-US List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "kexec" Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: Bjorn Helgaas Cc: thomas.lendacky@amd.com, brijesh.singh@amd.com, akpm@linux-foundation.org, bhe@redhat.com, tiwai@suse.de, x86@kernel.org, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, mingo@redhat.com, baiyaowei@cmss.chinamobile.com, hpa@zytor.com, dan.j.williams@intel.com, bp@suse.de, dyoung@redhat.com, tglx@linutronix.de, Vivek Goyal CgrlnKggMjAxOOW5tDA55pyIMjfml6UgMjI6MDMsIEJqb3JuIEhlbGdhYXMg5YaZ6YGTOgo+IE9u IFRodSwgU2VwIDI3LCAyMDE4IGF0IDAxOjI3OjQxUE0gKzA4MDAsIGxpamlhbmcgd3JvdGU6Cj4+ IOWcqCAyMDE45bm0MDnmnIgyNeaXpSAwNjoxNSwgQmpvcm4gSGVsZ2FhcyDlhpnpgZM6Cj4+PiBG cm9tOiBCam9ybiBIZWxnYWFzIDxiaGVsZ2Fhc0Bnb29nbGUuY29tPgo+Pj4KPj4+IFByZXZpb3Vz bHkgZmluZF9uZXh0X2lvbWVtX3JlcygpIHVzZWQgIipyZXMiIGFzIGJvdGggYW4gaW5wdXQgcGFy YW1ldGVyIGZvcgo+Pj4gdGhlIHJhbmdlIHRvIHNlYXJjaCBhbmQgdGhlIHR5cGUgb2YgcmVzb3Vy Y2UgdG8gc2VhcmNoIGZvciwgYW5kIGFuIG91dHB1dAo+Pj4gcGFyYW1ldGVyIGZvciB0aGUgcmVz b3VyY2Ugd2UgZm91bmQsIHdoaWNoIG1ha2VzIHRoZSBpbnRlcmZhY2UgY29uZnVzaW5nCj4+PiBh bmQgaGFyZCB0byB1c2UgY29ycmVjdGx5Lgo+Pj4KPj4+IEFsbCBjYWxsZXJzIGFsbG9jYXRlIGEg c2luZ2xlIHN0cnVjdCByZXNvdXJjZSBhbmQgdXNlIGl0IGZvciByZXBlYXRlZCBjYWxscwo+Pj4g dG8gZmluZF9uZXh0X2lvbWVtX3JlcygpLiAgV2hlbiBmaW5kX25leHRfaW9tZW1fcmVzKCkgcmV0 dXJucyBhIHJlc291cmNlLAo+Pj4gaXQgb3ZlcndyaXRlcyB0aGUgc3RhcnQsIGVuZCwgZmxhZ3Ms IGFuZCBkZXNjIG1lbWJlcnMgb2YgdGhlIHN0cnVjdC4gIElmIHdlCj4+PiBjYWxsIGZpbmRfbmV4 dF9pb21lbV9yZXMoKSBhZ2Fpbiwgd2UgbXVzdCB1cGRhdGUgb3IgcmVzdG9yZSB0aGVzZSBmaWVs ZHMuCj4+Pgo+Pj4gVGhlIGNhbGxlcnMgKF9fd2Fsa19pb21lbV9yZXNfZGVzYygpIGFuZCB3YWxr X3N5c3RlbV9yYW1fcmFuZ2UoKSkgZG8gbm90Cj4+PiByZXN0b3JlIHJlcy0+ZmxhZ3MsIHNvIGlm IHRoZSBjYWxsZXIgaXMgc2VhcmNoaW5nIGZvciBmbGFncyBvZgo+Pj4gSU9SRVNPVVJDRV9NRU0g fCBJT1JFU09VUkNFX0JVU1kgYW5kIGZpbmRzIGEgcmVzb3VyY2Ugd2l0aCBmbGFncyBvZgo+Pj4g SU9SRVNPVVJDRV9NRU0gfCBJT1JFU09VUkNFX0JVU1kgfCBJT1JFU09VUkNFX1NZU1JBTSwgdGhl IG5leHQgc2VhcmNoIHdpbGwKPj4+IGZpbmQgb25seSByZXNvdXJjZXMgbWFya2VkIGFzIElPUkVT T1VSQ0VfU1lTUkFNLgo+Pj4KPj4+IEZpeCB0aGlzIGJ5IHJlc3RydWN0dXJpbmcgdGhlIGludGVy ZmFjZSBzbyBpdCB0YWtlcyBleHBsaWNpdCAic3RhcnQsIGVuZCwKPj4+IGZsYWdzIiBwYXJhbWV0 ZXJzIGFuZCB1c2VzICIqcmVzIiBvbmx5IGFzIGFuIG91dHB1dCBwYXJhbWV0ZXIuCj4+Cj4+IEhp LCBCam9ybgo+PiBJIHBlcnNvbmFsbHkgc3VnZ2VzdCB0aGF0IHNvbWUgY29tbWVudHMgbWlnaHQg YmUgYWRkZWQgaW4gdGhlIGNvZGUsIG1ha2UgaXQgY2xlYXIKPj4gYW5kIGVhc3kgdG8gdW5kZXJz dGFuZCwgdGhlbiB3aGljaCBjb3VsZCBhdm9pZCB0aGUgb2xkIGNvbmZ1c2lvbiBhbmQgbW9yZSBj b2RlIGNoYW5nZXMuCj4gCj4gU2luY2UgSSB0aGluayB0aGUgY3VycmVudCBpbnRlcmZhY2UgKHVz aW5nICpyZXMgYXMgYm90aCBpbnB1dCBhbmQKPiBvdXRwdXQgcGFyYW1ldGVycyB0aGF0IGhhdmUg dmVyeSBkaWZmZXJlbnQgbWVhbmluZ3MpIGlzIGNvbmZ1c2luZywKPiBpdCdzIGhhcmQgZm9yICpt ZSogdG8gd3JpdGUgY29tbWVudHMgdGhhdCBtYWtlIGl0IGxlc3MgY29uZnVzaW5nLCBidXQKPiBv ZiBjb3Vyc2UsIHlvdSdyZSB3ZWxjb21lIHRvIHByb3Bvc2Ugc29tZXRoaW5nLgo+IAo+IE15IG9w aW5pb24gKHByb2JhYmx5IG5vdCB1bml2ZXJzYWxseSBzaGFyZWQpIGlzIHRoYXQgbXkgcHJvcG9z YWwgd291bGQKPiBtYWtlIHRoZSBjb2RlIG1vcmUgcmVhZGFibGUsIGFuZCBpdCdzIHdvcnRoIGRv aW5nIGV2ZW4gdGhvdWdoIHRoZSBkaWZmCj4gaXMgbGFyZ2VyLgo+IAo+IEFueXdheSwgSSdsbCBw b3N0IHRoZXNlIHBhdGNoZXMgaW5kZXBlbmRlbnRseSBhbmQgc2VlIGlmIGFueWJvZHkgZWxzZQo+ IGhhcyBhbiBvcGluaW9uLgo+IAoKSSBkb24ndCBtaW5kIGF0IGFsbCwgYmVjYXVzZSB0aGF0IGlz IGp1c3QgbXkgb3duIG9waW5pb24gYWJvdXQgbW9yZSBjb2RlCmNoYW5nZXMuCgpBbnl3YXksIHRo YW5rIHlvdSB0byBpbXByb3ZlIHRoaXMgcGF0Y2guCgpSZWdhcmRzLApMaWFuYm8KCj4gQmpvcm4K PiAKPj4+IE9yaWdpbmFsLXBhdGNoOiBodHRwOi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvMjAxODA5 MjEwNzMyMTEuMjAwOTctMi1saWppYW5nQHJlZGhhdC5jb20KPj4+IEJhc2VkLW9uLXBhdGNoLWJ5 OiBMaWFuYm8gSmlhbmcgPGxpamlhbmdAcmVkaGF0LmNvbT4KPj4+IFNpZ25lZC1vZmYtYnk6IEJq b3JuIEhlbGdhYXMgPGJoZWxnYWFzQGdvb2dsZS5jb20+Cj4+PiAtLS0KPj4+ICBrZXJuZWwvcmVz b3VyY2UuYyB8ICAgOTQgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KPj4+ICAxIGZpbGUgY2hhbmdlZCwgNDEgaW5zZXJ0aW9ucygrKSwgNTMgZGVs ZXRpb25zKC0pCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2tlcm5lbC9yZXNvdXJjZS5jIGIva2VybmVs L3Jlc291cmNlLmMKPj4+IGluZGV4IDE1NWVjODczZWE0ZC4uOTg5MWVhOTBjYzhmIDEwMDY0NAo+ Pj4gLS0tIGEva2VybmVsL3Jlc291cmNlLmMKPj4+ICsrKyBiL2tlcm5lbC9yZXNvdXJjZS5jCj4+ PiBAQCAtMzE5LDIzICszMTksMjYgQEAgaW50IHJlbGVhc2VfcmVzb3VyY2Uoc3RydWN0IHJlc291 cmNlICpvbGQpCj4+PiAgRVhQT1JUX1NZTUJPTChyZWxlYXNlX3Jlc291cmNlKTsKPj4+ICAKPj4+ ICAvKgo+Pj4gLSAqIEZpbmRzIHRoZSBsb3dlc3QgaW9tZW0gcmVzb3VyY2UgZXhpc3Rpbmcgd2l0 aGluIFtyZXMtPnN0YXJ0Li5yZXMtPmVuZF0uCj4+PiAtICogVGhlIGNhbGxlciBtdXN0IHNwZWNp ZnkgcmVzLT5zdGFydCwgcmVzLT5lbmQsIHJlcy0+ZmxhZ3MsIGFuZCBvcHRpb25hbGx5Cj4+PiAt ICogZGVzYy4gIElmIGZvdW5kLCByZXR1cm5zIDAsIHJlcyBpcyBvdmVyd3JpdHRlbiwgaWYgbm90 IGZvdW5kLCByZXR1cm5zIC0xLgo+Pj4gLSAqIFRoaXMgZnVuY3Rpb24gd2Fsa3MgdGhlIHdob2xl IHRyZWUgYW5kIG5vdCBqdXN0IGZpcnN0IGxldmVsIGNoaWxkcmVuIHVudGlsCj4+PiAtICogYW5k IHVubGVzcyBmaXJzdF9sZXZlbF9jaGlsZHJlbl9vbmx5IGlzIHRydWUuCj4+PiArICogRmluZHMg dGhlIGxvd2VzdCBpb21lbSByZXNvdXJjZSB0aGF0IGNvdmVycyBwYXJ0IG9mIFtzdGFydC4uZW5k XS4gIFRoZQo+Pj4gKyAqIGNhbGxlciBtdXN0IHNwZWNpZnkgc3RhcnQsIGVuZCwgZmxhZ3MsIGFu ZCBkZXNjICh3aGljaCBtYXkgYmUKPj4+ICsgKiBJT1JFU19ERVNDX05PTkUpLgo+Pj4gKyAqCj4+ PiArICogSWYgYSByZXNvdXJjZSBpcyBmb3VuZCwgcmV0dXJucyAwIGFuZCAqcmVzIGlzIG92ZXJ3 cml0dGVuIHdpdGggdGhlIHBhcnQKPj4+ICsgKiBvZiB0aGUgcmVzb3VyY2UgdGhhdCdzIHdpdGhp biBbc3RhcnQuLmVuZF07IGlmIG5vbmUgaXMgZm91bmQsIHJldHVybnMKPj4+ICsgKiAtMS4KPj4+ ICsgKgo+Pj4gKyAqIFRoaXMgZnVuY3Rpb24gd2Fsa3MgdGhlIHdob2xlIHRyZWUgYW5kIG5vdCBq dXN0IGZpcnN0IGxldmVsIGNoaWxkcmVuCj4+PiArICogdW5sZXNzIGZpcnN0X2xldmVsX2NoaWxk cmVuX29ubHkgaXMgdHJ1ZS4KPj4+ICAgKi8KPj4+IC1zdGF0aWMgaW50IGZpbmRfbmV4dF9pb21l bV9yZXMoc3RydWN0IHJlc291cmNlICpyZXMsIHVuc2lnbmVkIGxvbmcgZGVzYywKPj4+IC0JCQkg ICAgICAgYm9vbCBmaXJzdF9sZXZlbF9jaGlsZHJlbl9vbmx5KQo+Pj4gK3N0YXRpYyBpbnQgZmlu ZF9uZXh0X2lvbWVtX3JlcyhyZXNvdXJjZV9zaXplX3Qgc3RhcnQsIHJlc291cmNlX3NpemVfdCBl bmQsCj4+PiArCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsIHVuc2lnbmVkIGxvbmcgZGVz YywKPj4+ICsJCQkgICAgICAgYm9vbCBmaXJzdF9sZXZlbF9jaGlsZHJlbl9vbmx5LAo+Pj4gKwkJ CSAgICAgICBzdHJ1Y3QgcmVzb3VyY2UgKnJlcykKPj4+ICB7Cj4+PiAtCXJlc291cmNlX3NpemVf dCBzdGFydCwgZW5kOwo+Pj4gIAlzdHJ1Y3QgcmVzb3VyY2UgKnA7Cj4+PiAgCWJvb2wgc2libGlu Z19vbmx5ID0gZmFsc2U7Cj4+PiAgCj4+PiAgCUJVR19PTighcmVzKTsKPj4+IC0KPj4+IC0Jc3Rh cnQgPSByZXMtPnN0YXJ0Owo+Pj4gLQllbmQgPSByZXMtPmVuZDsKPj4+ICAJQlVHX09OKHN0YXJ0 ID49IGVuZCk7Cj4+PiAgCj4+PiAgCWlmIChmaXJzdF9sZXZlbF9jaGlsZHJlbl9vbmx5KQo+Pj4g QEAgLTM0NCw3ICszNDcsNyBAQCBzdGF0aWMgaW50IGZpbmRfbmV4dF9pb21lbV9yZXMoc3RydWN0 IHJlc291cmNlICpyZXMsIHVuc2lnbmVkIGxvbmcgZGVzYywKPj4+ICAJcmVhZF9sb2NrKCZyZXNv dXJjZV9sb2NrKTsKPj4+ICAKPj4+ICAJZm9yIChwID0gaW9tZW1fcmVzb3VyY2UuY2hpbGQ7IHA7 IHAgPSBuZXh0X3Jlc291cmNlKHAsIHNpYmxpbmdfb25seSkpIHsKPj4+IC0JCWlmICgocC0+Zmxh Z3MgJiByZXMtPmZsYWdzKSAhPSByZXMtPmZsYWdzKQo+Pj4gKwkJaWYgKChwLT5mbGFncyAmIGZs YWdzKSAhPSBmbGFncykKPj4+ICAJCQljb250aW51ZTsKPj4+ICAJCWlmICgoZGVzYyAhPSBJT1JF U19ERVNDX05PTkUpICYmIChkZXNjICE9IHAtPmRlc2MpKQo+Pj4gIAkJCWNvbnRpbnVlOwo+Pj4g QEAgLTM1OSwzMiArMzYyLDMxIEBAIHN0YXRpYyBpbnQgZmluZF9uZXh0X2lvbWVtX3JlcyhzdHJ1 Y3QgcmVzb3VyY2UgKnJlcywgdW5zaWduZWQgbG9uZyBkZXNjLAo+Pj4gIAlyZWFkX3VubG9jaygm cmVzb3VyY2VfbG9jayk7Cj4+PiAgCWlmICghcCkKPj4+ICAJCXJldHVybiAtMTsKPj4+ICsKPj4+ ICAJLyogY29weSBkYXRhICovCj4+PiAtCWlmIChyZXMtPnN0YXJ0IDwgcC0+c3RhcnQpCj4+PiAt CQlyZXMtPnN0YXJ0ID0gcC0+c3RhcnQ7Cj4+PiAtCWlmIChyZXMtPmVuZCA+IHAtPmVuZCkKPj4+ IC0JCXJlcy0+ZW5kID0gcC0+ZW5kOwo+Pj4gKwlyZXMtPnN0YXJ0ID0gbWF4KHN0YXJ0LCBwLT5z dGFydCk7Cj4+PiArCXJlcy0+ZW5kID0gbWluKGVuZCwgcC0+ZW5kKTsKPj4+ICAJcmVzLT5mbGFn cyA9IHAtPmZsYWdzOwo+Pj4gIAlyZXMtPmRlc2MgPSBwLT5kZXNjOwo+Pj4gIAlyZXR1cm4gMDsK Pj4+ICB9Cj4+PiAgCj4+PiAtc3RhdGljIGludCBfX3dhbGtfaW9tZW1fcmVzX2Rlc2Moc3RydWN0 IHJlc291cmNlICpyZXMsIHVuc2lnbmVkIGxvbmcgZGVzYywKPj4+IC0JCQkJIGJvb2wgZmlyc3Rf bGV2ZWxfY2hpbGRyZW5fb25seSwKPj4+IC0JCQkJIHZvaWQgKmFyZywKPj4+ICtzdGF0aWMgaW50 IF9fd2Fsa19pb21lbV9yZXNfZGVzYyhyZXNvdXJjZV9zaXplX3Qgc3RhcnQsIHJlc291cmNlX3Np emVfdCBlbmQsCj4+PiArCQkJCSB1bnNpZ25lZCBsb25nIGZsYWdzLCB1bnNpZ25lZCBsb25nIGRl c2MsCj4+PiArCQkJCSBib29sIGZpcnN0X2xldmVsX2NoaWxkcmVuX29ubHksIHZvaWQgKmFyZywK Pj4+ICAJCQkJIGludCAoKmZ1bmMpKHN0cnVjdCByZXNvdXJjZSAqLCB2b2lkICopKQo+Pj4gIHsK Pj4+IC0JdTY0IG9yaWdfZW5kID0gcmVzLT5lbmQ7Cj4+PiArCXN0cnVjdCByZXNvdXJjZSByZXM7 Cj4+PiAgCWludCByZXQgPSAtMTsKPj4+ICAKPj4+IC0Jd2hpbGUgKChyZXMtPnN0YXJ0IDwgcmVz LT5lbmQpICYmCj4+PiAtCSAgICAgICAhZmluZF9uZXh0X2lvbWVtX3JlcyhyZXMsIGRlc2MsIGZp cnN0X2xldmVsX2NoaWxkcmVuX29ubHkpKSB7Cj4+PiAtCQlyZXQgPSAoKmZ1bmMpKHJlcywgYXJn KTsKPj4+ICsJd2hpbGUgKHN0YXJ0IDwgZW5kICYmCj4+PiArCSAgICAgICAhZmluZF9uZXh0X2lv bWVtX3JlcyhzdGFydCwgZW5kLCBmbGFncywgZGVzYywKPj4+ICsJCQkJICAgIGZpcnN0X2xldmVs X2NoaWxkcmVuX29ubHksICZyZXMpKSB7Cj4+PiArCQlyZXQgPSAoKmZ1bmMpKCZyZXMsIGFyZyk7 Cj4+PiAgCQlpZiAocmV0KQo+Pj4gIAkJCWJyZWFrOwo+Pj4gIAo+Pj4gLQkJcmVzLT5zdGFydCA9 IHJlcy0+ZW5kICsgMTsKPj4+IC0JCXJlcy0+ZW5kID0gb3JpZ19lbmQ7Cj4+PiArCQlzdGFydCA9 IHJlcy5lbmQgKyAxOwo+Pj4gIAl9Cj4+PiAgCj4+PiAgCXJldHVybiByZXQ7Cj4+PiBAQCAtNDA3 LDEzICs0MDksNyBAQCBzdGF0aWMgaW50IF9fd2Fsa19pb21lbV9yZXNfZGVzYyhzdHJ1Y3QgcmVz b3VyY2UgKnJlcywgdW5zaWduZWQgbG9uZyBkZXNjLAo+Pj4gIGludCB3YWxrX2lvbWVtX3Jlc19k ZXNjKHVuc2lnbmVkIGxvbmcgZGVzYywgdW5zaWduZWQgbG9uZyBmbGFncywgdTY0IHN0YXJ0LAo+ Pj4gIAkJdTY0IGVuZCwgdm9pZCAqYXJnLCBpbnQgKCpmdW5jKShzdHJ1Y3QgcmVzb3VyY2UgKiwg dm9pZCAqKSkKPj4+ICB7Cj4+PiAtCXN0cnVjdCByZXNvdXJjZSByZXM7Cj4+PiAtCj4+PiAtCXJl cy5zdGFydCA9IHN0YXJ0Owo+Pj4gLQlyZXMuZW5kID0gZW5kOwo+Pj4gLQlyZXMuZmxhZ3MgPSBm bGFnczsKPj4+IC0KPj4+IC0JcmV0dXJuIF9fd2Fsa19pb21lbV9yZXNfZGVzYygmcmVzLCBkZXNj LCBmYWxzZSwgYXJnLCBmdW5jKTsKPj4+ICsJcmV0dXJuIF9fd2Fsa19pb21lbV9yZXNfZGVzYyhz dGFydCwgZW5kLCBmbGFncywgZGVzYywgZmFsc2UsIGFyZywgZnVuYyk7Cj4+PiAgfQo+Pj4gIEVY UE9SVF9TWU1CT0xfR1BMKHdhbGtfaW9tZW1fcmVzX2Rlc2MpOwo+Pj4gIAo+Pj4gQEAgLTQyNywx MyArNDIzLDkgQEAgRVhQT1JUX1NZTUJPTF9HUEwod2Fsa19pb21lbV9yZXNfZGVzYyk7Cj4+PiAg aW50IHdhbGtfc3lzdGVtX3JhbV9yZXModTY0IHN0YXJ0LCB1NjQgZW5kLCB2b2lkICphcmcsCj4+ PiAgCQkJCWludCAoKmZ1bmMpKHN0cnVjdCByZXNvdXJjZSAqLCB2b2lkICopKQo+Pj4gIHsKPj4+ IC0Jc3RydWN0IHJlc291cmNlIHJlczsKPj4+IC0KPj4+IC0JcmVzLnN0YXJ0ID0gc3RhcnQ7Cj4+ PiAtCXJlcy5lbmQgPSBlbmQ7Cj4+PiAtCXJlcy5mbGFncyA9IElPUkVTT1VSQ0VfU1lTVEVNX1JB TSB8IElPUkVTT1VSQ0VfQlVTWTsKPj4+ICsJdW5zaWduZWQgbG9uZyBmbGFncyA9IElPUkVTT1VS Q0VfU1lTVEVNX1JBTSB8IElPUkVTT1VSQ0VfQlVTWTsKPj4+ICAKPj4+IC0JcmV0dXJuIF9fd2Fs a19pb21lbV9yZXNfZGVzYygmcmVzLCBJT1JFU19ERVNDX05PTkUsIHRydWUsCj4+PiArCXJldHVy biBfX3dhbGtfaW9tZW1fcmVzX2Rlc2Moc3RhcnQsIGVuZCwgZmxhZ3MsIElPUkVTX0RFU0NfTk9O RSwgdHJ1ZSwKPj4+ICAJCQkJICAgICBhcmcsIGZ1bmMpOwo+Pj4gIH0KPj4+ICAKPj4+IEBAIC00 NDQsMTMgKzQzNiw5IEBAIGludCB3YWxrX3N5c3RlbV9yYW1fcmVzKHU2NCBzdGFydCwgdTY0IGVu ZCwgdm9pZCAqYXJnLAo+Pj4gIGludCB3YWxrX21lbV9yZXModTY0IHN0YXJ0LCB1NjQgZW5kLCB2 b2lkICphcmcsCj4+PiAgCQkgaW50ICgqZnVuYykoc3RydWN0IHJlc291cmNlICosIHZvaWQgKikp Cj4+PiAgewo+Pj4gLQlzdHJ1Y3QgcmVzb3VyY2UgcmVzOwo+Pj4gLQo+Pj4gLQlyZXMuc3RhcnQg PSBzdGFydDsKPj4+IC0JcmVzLmVuZCA9IGVuZDsKPj4+IC0JcmVzLmZsYWdzID0gSU9SRVNPVVJD RV9NRU0gfCBJT1JFU09VUkNFX0JVU1k7Cj4+PiArCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSBJT1JF U09VUkNFX01FTSB8IElPUkVTT1VSQ0VfQlVTWTsKPj4+ICAKPj4+IC0JcmV0dXJuIF9fd2Fsa19p b21lbV9yZXNfZGVzYygmcmVzLCBJT1JFU19ERVNDX05PTkUsIHRydWUsCj4+PiArCXJldHVybiBf X3dhbGtfaW9tZW1fcmVzX2Rlc2Moc3RhcnQsIGVuZCwgZmxhZ3MsIElPUkVTX0RFU0NfTk9ORSwg dHJ1ZSwKPj4+ICAJCQkJICAgICBhcmcsIGZ1bmMpOwo+Pj4gIH0KPj4+ICAKPj4+IEBAIC00NjQs MjUgKzQ1MiwyNSBAQCBpbnQgd2Fsa19tZW1fcmVzKHU2NCBzdGFydCwgdTY0IGVuZCwgdm9pZCAq YXJnLAo+Pj4gIGludCB3YWxrX3N5c3RlbV9yYW1fcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydF9w Zm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsCj4+PiAgCQl2b2lkICphcmcsIGludCAoKmZ1bmMp KHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHZvaWQgKikpCj4+PiAgewo+Pj4gKwlyZXNv dXJjZV9zaXplX3Qgc3RhcnQsIGVuZDsKPj4+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPj4+ICAJ c3RydWN0IHJlc291cmNlIHJlczsKPj4+ICAJdW5zaWduZWQgbG9uZyBwZm4sIGVuZF9wZm47Cj4+ PiAtCXU2NCBvcmlnX2VuZDsKPj4+ICAJaW50IHJldCA9IC0xOwo+Pj4gIAo+Pj4gLQlyZXMuc3Rh cnQgPSAodTY0KSBzdGFydF9wZm4gPDwgUEFHRV9TSElGVDsKPj4+IC0JcmVzLmVuZCA9ICgodTY0 KShzdGFydF9wZm4gKyBucl9wYWdlcykgPDwgUEFHRV9TSElGVCkgLSAxOwo+Pj4gLQlyZXMuZmxh Z3MgPSBJT1JFU09VUkNFX1NZU1RFTV9SQU0gfCBJT1JFU09VUkNFX0JVU1k7Cj4+PiAtCW9yaWdf ZW5kID0gcmVzLmVuZDsKPj4+IC0Jd2hpbGUgKChyZXMuc3RhcnQgPCByZXMuZW5kKSAmJgo+Pj4g LQkJKGZpbmRfbmV4dF9pb21lbV9yZXMoJnJlcywgSU9SRVNfREVTQ19OT05FLCB0cnVlKSA+PSAw KSkgewo+Pj4gKwlzdGFydCA9ICh1NjQpIHN0YXJ0X3BmbiA8PCBQQUdFX1NISUZUOwo+Pj4gKwll bmQgPSAoKHU2NCkoc3RhcnRfcGZuICsgbnJfcGFnZXMpIDw8IFBBR0VfU0hJRlQpIC0gMTsKPj4+ ICsJZmxhZ3MgPSBJT1JFU09VUkNFX1NZU1RFTV9SQU0gfCBJT1JFU09VUkNFX0JVU1k7Cj4+PiAr CXdoaWxlIChzdGFydCA8IGVuZCAmJgo+Pj4gKwkgICAgICAgIWZpbmRfbmV4dF9pb21lbV9yZXMo c3RhcnQsIGVuZCwgZmxhZ3MsIElPUkVTX0RFU0NfTk9ORSwKPj4+ICsJCQkJICAgIHRydWUsICZy ZXMpKSB7Cj4+PiAgCQlwZm4gPSAocmVzLnN0YXJ0ICsgUEFHRV9TSVpFIC0gMSkgPj4gUEFHRV9T SElGVDsKPj4+ICAJCWVuZF9wZm4gPSAocmVzLmVuZCArIDEpID4+IFBBR0VfU0hJRlQ7Cj4+PiAg CQlpZiAoZW5kX3BmbiA+IHBmbikKPj4+ICAJCQlyZXQgPSAoKmZ1bmMpKHBmbiwgZW5kX3BmbiAt IHBmbiwgYXJnKTsKPj4+ICAJCWlmIChyZXQpCj4+PiAgCQkJYnJlYWs7Cj4+PiAtCQlyZXMuc3Rh cnQgPSByZXMuZW5kICsgMTsKPj4+IC0JCXJlcy5lbmQgPSBvcmlnX2VuZDsKPj4+ICsJCXN0YXJ0 ID0gcmVzLmVuZCArIDE7Cj4+PiAgCX0KPj4+ICAJcmV0dXJuIHJldDsKPj4+ICB9Cj4+Pgo+Pj4K Pj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+PiBr ZXhlYyBtYWlsaW5nIGxpc3QKPj4+IGtleGVjQGxpc3RzLmluZnJhZGVhZC5vcmcKPj4+IGh0dHA6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8va2V4ZWMKPj4+CgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwprZXhlYyBtYWlsaW5nIGxp c3QKa2V4ZWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2tleGVjCg==