From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH v3 3/8] xen: Use typesafe gfn/mfn in guest_physmap_* helpers Date: Thu, 23 Jun 2016 11:11:28 +0100 (BST) Message-ID: References: <1466515243-27264-1-git-send-email-julien.grall@arm.com> <1466515243-27264-4-git-send-email-julien.grall@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1466515243-27264-4-git-send-email-julien.grall@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Julien Grall Cc: Tim Deegan , sstabellini@kernel.org, Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , xen-devel@lists.xen.org, Paul Durrant , Jan Beulich List-Id: xen-devel@lists.xenproject.org T24gVHVlLCAyMSBKdW4gMjAxNiwgSnVsaWVuIEdyYWxsIHdyb3RlOgo+IEFsc28gcmVuYW1lIHNv bWUgdmFyaWFibGVzIHRvIGdmbiBvciBtZm4gd2hlbiBpdCBkb2VzIG5vdCByZXF1aXJlIG11Y2gK PiByZXdvcmsuCj4gCj4gRmluYWxseSByZXBsYWNlICVodSB3aXRoICVkIHdoZW4gcHJpbnRpbmcg dGhlIGRvbWFpbiBpZCBpbgo+IGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5IChhcmNoL3g4Ni9tbS9w Mm0uYykuCj4gCj4gU2lnbmVkLW9mZi1ieTogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJt LmNvbT4KPiBBY2tlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgoKQWNrZWQt Ynk6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KCgo+IC0tLQo+ IENjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+Cj4gQ2M6IEph biBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KPiBDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3 LmNvb3BlcjNAY2l0cml4LmNvbT4KPiBDYzogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0 cml4LmNvbT4KPiBDYzogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBldS5jaXRyaXguY29t Pgo+IENjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KPiBDYzogS29u cmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgo+IENjOiBUaW0gRGVl Z2FuIDx0aW1AeGVuLm9yZz4KPiBDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KPiAK PiAgICAgQ2hhbmdlcyBpbiB2MzoKPiAgICAgICAgIC0gVXNlICVkIHRvIHByaW50IHRoZSBkb21h aW4gaWQgcmF0aGVyIHRoYW4gJWh1Cj4gICAgICAgICAtIEFkZCBKYW4ncyBBY2tlZC1ieSBmb3Ig bm9uLUFSTSBiaXRzCj4gCj4gICAgIENoYW5nZXMgaW4gdjI6Cj4gICAgICAgICAtIERvbid0IHVz ZSBhIHdyYXBwZXIgZm9yIHg4Ni4gSW5zdGVhZCB1c2UgbWZuXyogdG8gbWFrZQo+ICAgICAgICAg dGhlIGNoYW5nZSBzaW1wbGVyLgo+IC0tLQo+ICB4ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMg ICAgICAgIHwgIDIgKy0KPiAgeGVuL2FyY2gvYXJtL21tLmMgICAgICAgICAgICAgICAgICB8IDEw ICsrLS0tCj4gIHhlbi9hcmNoL2FybS9wMm0uYyAgICAgICAgICAgICAgICAgfCAyMCArKysrKy0t LS0tCj4gIHhlbi9hcmNoL3g4Ni9kb21haW4uYyAgICAgICAgICAgICAgfCAgNSArKy0KPiAgeGVu L2FyY2gveDg2L2RvbWFpbl9idWlsZC5jICAgICAgICB8ICA2ICstLQo+ICB4ZW4vYXJjaC94ODYv aHZtL2lvcmVxLmMgICAgICAgICAgIHwgIDggKystLQo+ICB4ZW4vYXJjaC94ODYvbW0uYyAgICAg ICAgICAgICAgICAgIHwgMTIgKysrLS0tCj4gIHhlbi9hcmNoL3g4Ni9tbS9wMm0uYyAgICAgICAg ICAgICAgfCA3OCArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQo+ICB4ZW4v Y29tbW9uL2dyYW50X3RhYmxlLmMgICAgICAgICAgIHwgIDcgKystLQo+ICB4ZW4vY29tbW9uL21l bW9yeS5jICAgICAgICAgICAgICAgIHwgMzIgKysrKysrKystLS0tLS0tLQo+ICB4ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jIHwgIDQgKy0KPiAgeGVuL2luY2x1ZGUvYXNtLWFybS9w Mm0uaCAgICAgICAgICB8IDEyICsrKy0tLQo+ICB4ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oICAg ICAgICAgIHwgMTEgKysrLS0tCj4gIHhlbi9pbmNsdWRlL3hlbi9tbS5oICAgICAgICAgICAgICAg fCAgMiArLQo+ICAxNCBmaWxlcyBjaGFuZ2VkLCAxMTAgaW5zZXJ0aW9ucygrKSwgOTkgZGVsZXRp b25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYyBiL3hl bi9hcmNoL2FybS9kb21haW5fYnVpbGQuYwo+IGluZGV4IDQxMGJiNGYuLjkwMzU0ODYgMTAwNjQ0 Cj4gLS0tIGEveGVuL2FyY2gvYXJtL2RvbWFpbl9idWlsZC5jCj4gKysrIGIveGVuL2FyY2gvYXJt L2RvbWFpbl9idWlsZC5jCj4gQEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMgYm9vbF90IGluc2Vy dF8xMV9iYW5rKHN0cnVjdCBkb21haW4gKmQsCj4gICAgICAgICAgZ290byBmYWlsOwo+ICAgICAg fQo+ICAKPiAtICAgIHJlcyA9IGd1ZXN0X3BoeXNtYXBfYWRkX3BhZ2UoZCwgc3Bmbiwgc3Bmbiwg b3JkZXIpOwo+ICsgICAgcmVzID0gZ3Vlc3RfcGh5c21hcF9hZGRfcGFnZShkLCBfZ2ZuKHNwZm4p LCBfbWZuKHNwZm4pLCBvcmRlcik7Cj4gICAgICBpZiAoIHJlcyApCj4gICAgICAgICAgcGFuaWMo IkZhaWxlZCBtYXAgcGFnZXMgdG8gRE9NMDogJWQiLCByZXMpOwo+ICAKPiBkaWZmIC0tZ2l0IGEv eGVuL2FyY2gvYXJtL21tLmMgYi94ZW4vYXJjaC9hcm0vbW0uYwo+IGluZGV4IDJlYzIxMWIuLjVh YjliNzUgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL21tLmMKPiArKysgYi94ZW4vYXJjaC9h cm0vbW0uYwo+IEBAIC0xMTUzLDcgKzExNTMsNyBAQCBpbnQgeGVubWVtX2FkZF90b19waHlzbWFw X29uZSgKPiAgICAgIH0KPiAgCj4gICAgICAvKiBNYXAgYXQgbmV3IGxvY2F0aW9uLiAqLwo+IC0g ICAgcmMgPSBndWVzdF9waHlzbWFwX2FkZF9lbnRyeShkLCBncGZuLCBtZm4sIDAsIHQpOwo+ICsg ICAgcmMgPSBndWVzdF9waHlzbWFwX2FkZF9lbnRyeShkLCBfZ2ZuKGdwZm4pLCBfbWZuKG1mbiks IDAsIHQpOwo+ICAKPiAgICAgIC8qIElmIHdlIGZhaWwgdG8gYWRkIHRoZSBtYXBwaW5nLCB3ZSBu ZWVkIHRvIGRyb3AgdGhlIHJlZmVyZW5jZSB3ZQo+ICAgICAgICogdG9vayBlYXJsaWVyIG9uIGZv cmVpZ24gcGFnZXMgKi8KPiBAQCAtMTI4Miw4ICsxMjgyLDggQEAgaW50IGNyZWF0ZV9ncmFudF9o b3N0X21hcHBpbmcodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGZyYW1lLAo+ICAg ICAgaWYgKCBmbGFncyAmIEdOVE1BUF9yZWFkb25seSApCj4gICAgICAgICAgdCA9IHAybV9ncmFu dF9tYXBfcm87Cj4gIAo+IC0gICAgcmMgPSBndWVzdF9waHlzbWFwX2FkZF9lbnRyeShjdXJyZW50 LT5kb21haW4sIGFkZHIgPj4gUEFHRV9TSElGVCwKPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZnJhbWUsIDAsIHQpOwo+ICsgICAgcmMgPSBndWVzdF9waHlzbWFwX2FkZF9lbnRy eShjdXJyZW50LT5kb21haW4sIF9nZm4oYWRkciA+PiBQQUdFX1NISUZUKSwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgX21mbihmcmFtZSksIDAsIHQpOwo+ICAKPiAgICAgIGlm ICggcmMgKQo+ICAgICAgICAgIHJldHVybiBHTlRTVF9nZW5lcmFsX2Vycm9yOwo+IEBAIC0xMjk0 LDEzICsxMjk0LDEzIEBAIGludCBjcmVhdGVfZ3JhbnRfaG9zdF9tYXBwaW5nKHVuc2lnbmVkIGxv bmcgYWRkciwgdW5zaWduZWQgbG9uZyBmcmFtZSwKPiAgaW50IHJlcGxhY2VfZ3JhbnRfaG9zdF9t YXBwaW5nKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBtZm4sCj4gICAgICAgICAg dW5zaWduZWQgbG9uZyBuZXdfYWRkciwgdW5zaWduZWQgaW50IGZsYWdzKQo+ICB7Cj4gLSAgICB1 bnNpZ25lZCBsb25nIGdmbiA9ICh1bnNpZ25lZCBsb25nKShhZGRyID4+IFBBR0VfU0hJRlQpOwo+ ICsgICAgZ2ZuX3QgZ2ZuID0gX2dmbihhZGRyID4+IFBBR0VfU0hJRlQpOwo+ICAgICAgc3RydWN0 IGRvbWFpbiAqZCA9IGN1cnJlbnQtPmRvbWFpbjsKPiAgCj4gICAgICBpZiAoIG5ld19hZGRyICE9 IDAgfHwgKGZsYWdzICYgR05UTUFQX2NvbnRhaW5zX3B0ZSkgKQo+ICAgICAgICAgIHJldHVybiBH TlRTVF9nZW5lcmFsX2Vycm9yOwo+ICAKPiAtICAgIGd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2Uo ZCwgZ2ZuLCBtZm4sIDApOwo+ICsgICAgZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFnZShkLCBnZm4s IF9tZm4obWZuKSwgMCk7Cj4gIAo+ICAgICAgcmV0dXJuIEdOVFNUX29rYXk7Cj4gIH0KPiBkaWZm IC0tZ2l0IGEveGVuL2FyY2gvYXJtL3AybS5jIGIveGVuL2FyY2gvYXJtL3AybS5jCj4gaW5kZXgg YWIwY2I0MS4uYWE0ZTc3NCAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC9hcm0vcDJtLmMKPiArKysg Yi94ZW4vYXJjaC9hcm0vcDJtLmMKPiBAQCAtMTI5MiwyNiArMTI5MiwyNiBAQCBpbnQgbWFwX2Rl dl9tbWlvX3JlZ2lvbihzdHJ1Y3QgZG9tYWluICpkLAo+ICB9Cj4gIAo+ICBpbnQgZ3Vlc3RfcGh5 c21hcF9hZGRfZW50cnkoc3RydWN0IGRvbWFpbiAqZCwKPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgZ3BmbiwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGxvbmcgbWZuLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ZuX3Qg Z2ZuLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZuX3QgbWZuLAo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwYWdlX29yZGVyLAo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcDJtX3R5cGVfdCB0KQo+ICB7Cj4gICAgICByZXR1cm4gYXBw bHlfcDJtX2NoYW5nZXMoZCwgSU5TRVJULAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBmbl90b19wYWRkcihncGZuKSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZm5f dG9fcGFkZHIoZ3BmbiArICgxIDw8IHBhZ2Vfb3JkZXIpKSwKPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwZm5fdG9fcGFkZHIobWZuKSwgTUFUVFJfTUVNLCAwLCB0LAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBmbl90b19wYWRkcihnZm5feChnZm4pKSwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwZm5fdG9fcGFkZHIoZ2ZuX3goZ2ZuKSArICgxIDw8IHBh Z2Vfb3JkZXIpKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZm5fdG9fcGFkZHIo bWZuX3gobWZuKSksIE1BVFRSX01FTSwgMCwgdCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkLT5hcmNoLnAybS5kZWZhdWx0X2FjY2Vzcyk7Cj4gIH0KPiAgCj4gIHZvaWQgZ3Vlc3Rf cGh5c21hcF9yZW1vdmVfcGFnZShzdHJ1Y3QgZG9tYWluICpkLAo+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBncGZuLAo+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4sIHVuc2lnbmVkIGludCBwYWdlX29yZGVyKQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ZuX3QgZ2ZuLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbWZuX3QgbWZuLCB1bnNpZ25lZCBpbnQgcGFnZV9vcmRlcikK PiAgewo+ICAgICAgYXBwbHlfcDJtX2NoYW5nZXMoZCwgUkVNT1ZFLAo+IC0gICAgICAgICAgICAg ICAgICAgICAgcGZuX3RvX3BhZGRyKGdwZm4pLAo+IC0gICAgICAgICAgICAgICAgICAgICAgcGZu X3RvX3BhZGRyKGdwZm4gKyAoMTw8cGFnZV9vcmRlcikpLAo+IC0gICAgICAgICAgICAgICAgICAg ICAgcGZuX3RvX3BhZGRyKG1mbiksIE1BVFRSX01FTSwgMCwgcDJtX2ludmFsaWQsCj4gKyAgICAg ICAgICAgICAgICAgICAgICBwZm5fdG9fcGFkZHIoZ2ZuX3goZ2ZuKSksCj4gKyAgICAgICAgICAg ICAgICAgICAgICBwZm5fdG9fcGFkZHIoZ2ZuX3goZ2ZuKSArICgxPDxwYWdlX29yZGVyKSksCj4g KyAgICAgICAgICAgICAgICAgICAgICBwZm5fdG9fcGFkZHIobWZuX3gobWZuKSksIE1BVFRSX01F TSwgMCwgcDJtX2ludmFsaWQsCj4gICAgICAgICAgICAgICAgICAgICAgICBkLT5hcmNoLnAybS5k ZWZhdWx0X2FjY2Vzcyk7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21h aW4uYyBiL3hlbi9hcmNoL3g4Ni9kb21haW4uYwo+IGluZGV4IDNiYTdlZDEuLmJiNTkyNDcgMTAw NjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2RvbWFpbi5jCj4gKysrIGIveGVuL2FyY2gveDg2L2Rv bWFpbi5jCj4gQEAgLTgwMiw5ICs4MDIsMTAgQEAgaW50IGFyY2hfZG9tYWluX3NvZnRfcmVzZXQo c3RydWN0IGRvbWFpbiAqZCkKPiAgICAgICAgICByZXQgPSAtRU5PTUVNOwo+ICAgICAgICAgIGdv dG8gZXhpdF9wdXRfZ2ZuOwo+ICAgICAgfQo+IC0gICAgZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFn ZShkLCBnZm4sIG1mbiwgUEFHRV9PUkRFUl80Syk7Cj4gKyAgICBndWVzdF9waHlzbWFwX3JlbW92 ZV9wYWdlKGQsIF9nZm4oZ2ZuKSwgX21mbihtZm4pLCBQQUdFX09SREVSXzRLKTsKPiAgCj4gLSAg ICByZXQgPSBndWVzdF9waHlzbWFwX2FkZF9wYWdlKGQsIGdmbiwgcGFnZV90b19tZm4obmV3X3Bh Z2UpLCBQQUdFX09SREVSXzRLKTsKPiArICAgIHJldCA9IGd1ZXN0X3BoeXNtYXBfYWRkX3BhZ2Uo ZCwgX2dmbihnZm4pLCBfbWZuKHBhZ2VfdG9fbWZuKG5ld19wYWdlKSksCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBBR0VfT1JERVJfNEspOwo+ICAgICAgaWYgKCByZXQgKQo+ ICAgICAgewo+ICAgICAgICAgIHByaW50ayhYRU5MT0dfR19FUlIgIkZhaWxlZCB0byBhZGQgYSBw YWdlIHRvIHJlcGxhY2UiCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21haW5fYnVpbGQu YyBiL3hlbi9hcmNoL3g4Ni9kb21haW5fYnVpbGQuYwo+IGluZGV4IGIyOWMzNzcuLjBhMDJkNjUg MTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2RvbWFpbl9idWlsZC5jCj4gKysrIGIveGVuL2Fy Y2gveDg2L2RvbWFpbl9idWlsZC5jCj4gQEAgLTQyNyw3ICs0MjcsNyBAQCBzdGF0aWMgX19pbml0 IHZvaWQgcHZoX2FkZF9tZW1fbWFwcGluZyhzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25n IGdmbiwKPiAgICAgICAgICBpZiAoICFpb21lbV9hY2Nlc3NfcGVybWl0dGVkKGQsIG1mbiArIGks IG1mbiArIGkpICkKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAgIG9tZm4gPSBnZXRfZ2ZuX3F1 ZXJ5X3VubG9ja2VkKGQsIGdmbiArIGksICZ0KTsKPiAtICAgICAgICAgICAgZ3Vlc3RfcGh5c21h cF9yZW1vdmVfcGFnZShkLCBnZm4gKyBpLCBtZm5feChvbWZuKSwgUEFHRV9PUkRFUl80Syk7Cj4g KyAgICAgICAgICAgIGd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgX2dmbihnZm4gKyBpKSwg b21mbiwgUEFHRV9PUkRFUl80Syk7Cj4gICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICAgICAgICAg IH0KPiAgCj4gQEAgLTUzMCw3ICs1MzAsNyBAQCBzdGF0aWMgX19pbml0IHZvaWQgcHZoX21hcF9h bGxfaW9tZW0oc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBucl9wYWdlcykKPiAgICAg ICAgICAgICAgaWYgKCBnZXRfZ3Bmbl9mcm9tX21mbihtZm4pICE9IElOVkFMSURfTTJQX0VOVFJZ ICkKPiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICAKPiAtICAgICAgICAgICAgcmMgPSBn dWVzdF9waHlzbWFwX2FkZF9wYWdlKGQsIHN0YXJ0X3BmbiwgbWZuLCAwKTsKPiArICAgICAgICAg ICAgcmMgPSBndWVzdF9waHlzbWFwX2FkZF9wYWdlKGQsIF9nZm4oc3RhcnRfcGZuKSwgX21mbiht Zm4pLCAwKTsKPiAgICAgICAgICAgICAgaWYgKCByYyAhPSAwICkKPiAgICAgICAgICAgICAgICAg IHBhbmljKCJVbmFibGUgdG8gYWRkIGdwZm4gJSNseCBtZm4gJSNseCB0byBEb20wIHBoeXNtYXA6 ICVkIiwKPiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3BmbiwgbWZuLCByYyk7Cj4gQEAg LTYwNSw3ICs2MDUsNyBAQCBzdGF0aWMgX19pbml0IHZvaWQgZG9tMF91cGRhdGVfcGh5c21hcChz dHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHBmbiwKPiAgewo+ICAgICAgaWYgKCBpc19w dmhfZG9tYWluKGQpICkKPiAgICAgIHsKPiAtICAgICAgICBpbnQgcmMgPSBndWVzdF9waHlzbWFw X2FkZF9wYWdlKGQsIHBmbiwgbWZuLCAwKTsKPiArICAgICAgICBpbnQgcmMgPSBndWVzdF9waHlz bWFwX2FkZF9wYWdlKGQsIF9nZm4ocGZuKSwgX21mbihtZm4pLCAwKTsKPiAgICAgICAgICBCVUdf T04ocmMpOwo+ICAgICAgICAgIHJldHVybjsKPiAgICAgIH0KPiBkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L2h2bS9pb3JlcS5jIGIveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCj4gaW5kZXggMzMz Y2UxNC4uNzE0OGFjNCAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKPiAr KysgYi94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKPiBAQCAtMjY3LDggKzI2Nyw4IEBAIGJvb2xf dCBpc19pb3JlcV9zZXJ2ZXJfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCBjb25zdCBzdHJ1Y3QgcGFn ZV9pbmZvICpwYWdlKQo+ICBzdGF0aWMgdm9pZCBodm1fcmVtb3ZlX2lvcmVxX2dtZm4oCj4gICAg ICBzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgaHZtX2lvcmVxX3BhZ2UgKmlvcnApCj4gIHsKPiAt ICAgIGd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgaW9ycC0+Z21mbiwKPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGFnZV90b19tZm4oaW9ycC0+cGFnZSksIDApOwo+ICsgICAg Z3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFnZShkLCBfZ2ZuKGlvcnAtPmdtZm4pLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBfbWZuKHBhZ2VfdG9fbWZuKGlvcnAtPnBhZ2UpKSwgMCk7 Cj4gICAgICBjbGVhcl9wYWdlKGlvcnAtPnZhKTsKPiAgfQo+ICAKPiBAQCAtMjc5LDggKzI3OSw4 IEBAIHN0YXRpYyBpbnQgaHZtX2FkZF9pb3JlcV9nbWZuKAo+ICAKPiAgICAgIGNsZWFyX3BhZ2Uo aW9ycC0+dmEpOwo+ICAKPiAtICAgIHJjID0gZ3Vlc3RfcGh5c21hcF9hZGRfcGFnZShkLCBpb3Jw LT5nbWZuLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VfdG9fbWZuKGlv cnAtPnBhZ2UpLCAwKTsKPiArICAgIHJjID0gZ3Vlc3RfcGh5c21hcF9hZGRfcGFnZShkLCBfZ2Zu KGlvcnAtPmdtZm4pLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tZm4ocGFn ZV90b19tZm4oaW9ycC0+cGFnZSkpLCAwKTsKPiAgICAgIGlmICggcmMgPT0gMCApCj4gICAgICAg ICAgcGFnaW5nX21hcmtfZGlydHkoZCwgcGFnZV90b19tZm4oaW9ycC0+cGFnZSkpOwo+ICAKPiBk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tLmMgYi94ZW4vYXJjaC94ODYvbW0uYwo+IGluZGV4 IGFlN2M4YWIuLjdmYmM5NGUgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tLmMKPiArKysg Yi94ZW4vYXJjaC94ODYvbW0uYwo+IEBAIC00MjExLDcgKzQyMTEsOCBAQCBzdGF0aWMgaW50IGNy ZWF0ZV9ncmFudF9wMm1fbWFwcGluZyh1aW50NjRfdCBhZGRyLCB1bnNpZ25lZCBsb25nIGZyYW1l LAo+ICAgICAgZWxzZQo+ICAgICAgICAgIHAybXQgPSBwMm1fZ3JhbnRfbWFwX3J3Owo+ICAgICAg cmMgPSBndWVzdF9waHlzbWFwX2FkZF9lbnRyeShjdXJyZW50LT5kb21haW4sCj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIgPj4gUEFHRV9TSElGVCwgZnJhbWUsIFBBR0Vf T1JERVJfNEssIHAybXQpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZ2Zu KGFkZHIgPj4gUEFHRV9TSElGVCksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF9tZm4oZnJhbWUpLCBQQUdFX09SREVSXzRLLCBwMm10KTsKPiAgICAgIGlmICggcmMgKQo+ICAg ICAgICAgIHJldHVybiBHTlRTVF9nZW5lcmFsX2Vycm9yOwo+ICAgICAgZWxzZQo+IEBAIC00MjY4 LDcgKzQyNjksNyBAQCBzdGF0aWMgaW50IHJlcGxhY2VfZ3JhbnRfcDJtX21hcHBpbmcoCj4gICAg ICAgICAgICAgICAgICB0eXBlLCBtZm5feChvbGRfbWZuKSwgZnJhbWUpOwo+ICAgICAgICAgIHJl dHVybiBHTlRTVF9nZW5lcmFsX2Vycm9yOwo+ICAgICAgfQo+IC0gICAgZ3Vlc3RfcGh5c21hcF9y ZW1vdmVfcGFnZShkLCBnZm4sIGZyYW1lLCBQQUdFX09SREVSXzRLKTsKPiArICAgIGd1ZXN0X3Bo eXNtYXBfcmVtb3ZlX3BhZ2UoZCwgX2dmbihnZm4pLCBfbWZuKGZyYW1lKSwgUEFHRV9PUkRFUl80 Syk7Cj4gIAo+ICAgICAgcHV0X2dmbihkLCBnZm4pOwo+ICAgICAgcmV0dXJuIEdOVFNUX29rYXk7 Cj4gQEAgLTQ4NTMsNyArNDg1NCw4IEBAIGludCB4ZW5tZW1fYWRkX3RvX3BoeXNtYXBfb25lKAo+ ICAgICAgewo+ICAgICAgICAgIGlmICggaXNfeGVuX2hlYXBfbWZuKHByZXZfbWZuKSApCj4gICAg ICAgICAgICAgIC8qIFhlbiBoZWFwIGZyYW1lcyBhcmUgc2ltcGx5IHVuaG9va2VkIGZyb20gdGhp cyBwaHlzIHNsb3QuICovCj4gLSAgICAgICAgICAgIGd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2Uo ZCwgZ3BmbiwgcHJldl9tZm4sIFBBR0VfT1JERVJfNEspOwo+ICsgICAgICAgICAgICBndWVzdF9w aHlzbWFwX3JlbW92ZV9wYWdlKGQsIF9nZm4oZ3BmbiksIF9tZm4ocHJldl9tZm4pLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfT1JERVJfNEspOwo+ICAgICAg ICAgIGVsc2UKPiAgICAgICAgICAgICAgLyogTm9ybWFsIGRvbWFpbiBtZW1vcnkgaXMgZnJlZWQs IHRvIGF2b2lkIGxlYWtpbmcgbWVtb3J5LiAqLwo+ICAgICAgICAgICAgICBndWVzdF9yZW1vdmVf cGFnZShkLCBncGZuKTsKPiBAQCAtNDg2NywxMCArNDg2OSwxMCBAQCBpbnQgeGVubWVtX2FkZF90 b19waHlzbWFwX29uZSgKPiAgICAgIGlmICggc3BhY2UgPT0gWEVOTUFQU1BBQ0VfZ21mbiB8fCBz cGFjZSA9PSBYRU5NQVBTUEFDRV9nbWZuX3JhbmdlICkKPiAgICAgICAgICBBU1NFUlQoIG9sZF9n cGZuID09IGdmbiApOwo+ICAgICAgaWYgKCBvbGRfZ3BmbiAhPSBJTlZBTElEX00yUF9FTlRSWSAp Cj4gLSAgICAgICAgZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFnZShkLCBvbGRfZ3BmbiwgbWZuLCBQ QUdFX09SREVSXzRLKTsKPiArICAgICAgICBndWVzdF9waHlzbWFwX3JlbW92ZV9wYWdlKGQsIF9n Zm4ob2xkX2dwZm4pLCBfbWZuKG1mbiksIFBBR0VfT1JERVJfNEspOwo+ICAKPiAgICAgIC8qIE1h cCBhdCBuZXcgbG9jYXRpb24uICovCj4gLSAgICByYyA9IGd1ZXN0X3BoeXNtYXBfYWRkX3BhZ2Uo ZCwgZ3BmbiwgbWZuLCBQQUdFX09SREVSXzRLKTsKPiArICAgIHJjID0gZ3Vlc3RfcGh5c21hcF9h ZGRfcGFnZShkLCBfZ2ZuKGdwZm4pLCBfbWZuKG1mbiksIFBBR0VfT1JERVJfNEspOwo+ICAKPiAg ICAgIC8qIEluIHRoZSBYRU5NQVBTUEFDRV9nbWZuLCB3ZSB0b29rIGEgcmVmIG9mIHRoZSBnZm4g YXQgdGhlIHRvcCAqLwo+ICAgICAgaWYgKCBzcGFjZSA9PSBYRU5NQVBTUEFDRV9nbWZuIHx8IHNw YWNlID09IFhFTk1BUFNQQUNFX2dtZm5fcmFuZ2UgKQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvbW0vcDJtLmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKPiBpbmRleCA4OTQ2MmIyLi4xNjcz M2E0IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwo+ICsrKyBiL3hlbi9hcmNo L3g4Ni9tbS9wMm0uYwo+IEBAIC02NzUsMjEgKzY3NSwyMCBAQCBwMm1fcmVtb3ZlX3BhZ2Uoc3Ry dWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZu LAo+ICB9Cj4gIAo+ICBpbnQKPiAtZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFnZShzdHJ1Y3QgZG9t YWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBsb25nIG1mbiwgdW5zaWduZWQgaW50IHBhZ2Vfb3JkZXIpCj4gK2d1ZXN0X3BoeXNt YXBfcmVtb3ZlX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgIG1mbl90IG1mbiwgdW5zaWduZWQgaW50IHBhZ2Vfb3JkZXIpCj4gIHsK PiAgICAgIHN0cnVjdCBwMm1fZG9tYWluICpwMm0gPSBwMm1fZ2V0X2hvc3RwMm0oZCk7Cj4gICAg ICBpbnQgcmM7Cj4gICAgICBnZm5fbG9jayhwMm0sIGdmbiwgcGFnZV9vcmRlcik7Cj4gLSAgICBy YyA9IHAybV9yZW1vdmVfcGFnZShwMm0sIGdmbiwgbWZuLCBwYWdlX29yZGVyKTsKPiArICAgIHJj ID0gcDJtX3JlbW92ZV9wYWdlKHAybSwgZ2ZuX3goZ2ZuKSwgbWZuX3gobWZuKSwgcGFnZV9vcmRl cik7Cj4gICAgICBnZm5fdW5sb2NrKHAybSwgZ2ZuLCBwYWdlX29yZGVyKTsKPiAgICAgIHJldHVy biByYzsKPiAgfQo+ICAKPiAgaW50Cj4gLWd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5KHN0cnVjdCBk b21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBsb25nIG1mbiwgdW5zaWduZWQgaW50IHBhZ2Vfb3JkZXIsIAo+IC0gICAgICAgICAg ICAgICAgICAgICAgICBwMm1fdHlwZV90IHQpCj4gK2d1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5KHN0 cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwgbWZuX3QgbWZuLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBpbnQgcGFnZV9vcmRlciwgcDJtX3R5cGVfdCB0KQo+ICB7Cj4gICAg ICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtID0gcDJtX2dldF9ob3N0cDJtKGQpOwo+ICAgICAgdW5z aWduZWQgbG9uZyBpLCBvZ2ZuOwo+IEBAIC03MDUsMTMgKzcwNCwxNCBAQCBndWVzdF9waHlzbWFw X2FkZF9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKPiAgICAgICAg ICB7Cj4gICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgKDEgPDwgcGFnZV9vcmRlcik7IGkr KyApCj4gICAgICAgICAgICAgIHsKPiAtICAgICAgICAgICAgICAgIHJjID0gaW9tbXVfbWFwX3Bh Z2UoCj4gLSAgICAgICAgICAgICAgICAgICAgZCwgbWZuICsgaSwgbWZuICsgaSwgSU9NTVVGX3Jl YWRhYmxlfElPTU1VRl93cml0YWJsZSk7Cj4gKyAgICAgICAgICAgICAgICByYyA9IGlvbW11X21h cF9wYWdlKGQsIG1mbl94KG1mbl9hZGQobWZuLCBpKSksCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1mbl94KG1mbl9hZGQobWZuLCBpKSksCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIElPTU1VRl9yZWFkYWJsZXxJT01NVUZfd3JpdGFibGUpOwo+ ICAgICAgICAgICAgICAgICAgaWYgKCByYyAhPSAwICkKPiAgICAgICAgICAgICAgICAgIHsKPiAg ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIGktLSA+IDAgKQo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAvKiBJZiBzdGF0ZW1lbnQgdG8gc2F0aXNmeSBfX211c3RfY2hlY2suICovCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgIGlmICggaW9tbXVfdW5tYXBfcGFnZShkLCBtZm4gKyBpKSAp Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaW9tbXVfdW5tYXBfcGFnZShkLCBtZm5f eChtZm5fYWRkKG1mbiwgaSkpKSApCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250 aW51ZTsKPiAgCj4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJjOwo+IEBAIC03MjcsMTgg KzcyNywyMCBAQCBndWVzdF9waHlzbWFwX2FkZF9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBsb25nIGdmbiwKPiAgCj4gICAgICBwMm1fbG9jayhwMm0pOwo+ICAKPiAtICAgIFAyTV9E RUJVRygiYWRkaW5nIGdmbj0lI2x4IG1mbj0lI2x4XG4iLCBnZm4sIG1mbik7Cj4gKyAgICBQMk1f REVCVUcoImFkZGluZyBnZm49JSNseCBtZm49JSNseFxuIiwgZ2ZuX3goZ2ZuKSwgbWZuX3gobWZu KSk7Cj4gIAo+ICAgICAgLyogRmlyc3QsIHJlbW92ZSBtLT5wIG1hcHBpbmdzIGZvciBleGlzdGlu ZyBwLT5tIG1hcHBpbmdzICovCj4gICAgICBmb3IgKCBpID0gMDsgaSA8ICgxVUwgPDwgcGFnZV9v cmRlcik7IGkrKyApCj4gICAgICB7Cj4gLSAgICAgICAgb21mbiA9IHAybS0+Z2V0X2VudHJ5KHAy bSwgZ2ZuICsgaSwgJm90LCAmYSwgMCwgTlVMTCwgTlVMTCk7Cj4gKyAgICAgICAgb21mbiA9IHAy bS0+Z2V0X2VudHJ5KHAybSwgZ2ZuX3goZ2ZuX2FkZChnZm4sIGkpKSwgJm90LAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmYSwgMCwgTlVMTCwgTlVMTCk7Cj4gICAgICAgICAgaWYg KCBwMm1faXNfc2hhcmVkKG90KSApCj4gICAgICAgICAgewo+ICAgICAgICAgICAgICAvKiBEbyBh biB1bnNoYXJlIHRvIGNsZWFubHkgdGFrZSBjYXJlIG9mIGFsbCBjb3JuZXIgCj4gICAgICAgICAg ICAgICAqIGNhc2VzLiAqLwo+ICAgICAgICAgICAgICBpbnQgcmM7Cj4gLSAgICAgICAgICAgIHJj ID0gbWVtX3NoYXJpbmdfdW5zaGFyZV9wYWdlKHAybS0+ZG9tYWluLCBnZm4gKyBpLCAwKTsKPiAr ICAgICAgICAgICAgcmMgPSBtZW1fc2hhcmluZ191bnNoYXJlX3BhZ2UocDJtLT5kb21haW4sCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmbl94KGdmbl9hZGQo Z2ZuLCBpKSksIDApOwo+ICAgICAgICAgICAgICBpZiAoIHJjICkKPiAgICAgICAgICAgICAgewo+ ICAgICAgICAgICAgICAgICAgcDJtX3VubG9jayhwMm0pOwo+IEBAIC03NTMsMTAgKzc1NSwxMyBA QCBndWVzdF9waHlzbWFwX2FkZF9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25n IGdmbiwKPiAgICAgICAgICAgICAgICAgICAqCj4gICAgICAgICAgICAgICAgICAgKiBGb3JlaWdu IGRvbWFpbnMgYXJlIG9rYXkgdG8gcGxhY2UgYW4gZXZlbnQgYXMgdGhleSAKPiAgICAgICAgICAg ICAgICAgICAqIHdvbid0IGdvIHRvIHNsZWVwLiAqLwo+IC0gICAgICAgICAgICAgICAgKHZvaWQp bWVtX3NoYXJpbmdfbm90aWZ5X2Vub21lbShwMm0tPmRvbWFpbiwgZ2ZuICsgaSwgMCk7Cj4gKyAg ICAgICAgICAgICAgICAodm9pZCltZW1fc2hhcmluZ19ub3RpZnlfZW5vbWVtKHAybS0+ZG9tYWlu LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm5f eChnZm5fYWRkKGdmbiwgaSkpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAwKTsKPiAgICAgICAgICAgICAgICAgIHJldHVybiByYzsKPiAgICAgICAg ICAgICAgfQo+IC0gICAgICAgICAgICBvbWZuID0gcDJtLT5nZXRfZW50cnkocDJtLCBnZm4gKyBp LCAmb3QsICZhLCAwLCBOVUxMLCBOVUxMKTsKPiArICAgICAgICAgICAgb21mbiA9IHAybS0+Z2V0 X2VudHJ5KHAybSwgZ2ZuX3goZ2ZuX2FkZChnZm4sIGkpKSwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZvdCwgJmEsIDAsIE5VTEwsIE5VTEwpOwo+ICAgICAgICAgICAgICBB U1NFUlQoIXAybV9pc19zaGFyZWQob3QpKTsKPiAgICAgICAgICB9Cj4gICAgICAgICAgaWYgKCBw Mm1faXNfZ3JhbnQob3QpIHx8IHAybV9pc19mb3JlaWduKG90KSApCj4gQEAgLTc4NywzOSArNzky LDM5IEBAIGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk IGxvbmcgZ2ZuLAo+ICAgICAgLyogVGhlbiwgbG9vayBmb3IgbS0+cCBtYXBwaW5ncyBmb3IgdGhp cyByYW5nZSBhbmQgZGVhbCB3aXRoIHRoZW0gKi8KPiAgICAgIGZvciAoIGkgPSAwOyBpIDwgKDFV TCA8PCBwYWdlX29yZGVyKTsgaSsrICkKPiAgICAgIHsKPiAtICAgICAgICBpZiAoIHBhZ2VfZ2V0 X293bmVyKG1mbl90b19wYWdlKF9tZm4obWZuICsgaSkpKSA9PSBkb21fY293ICkKPiArICAgICAg ICBpZiAoIHBhZ2VfZ2V0X293bmVyKG1mbl90b19wYWdlKG1mbl9hZGQobWZuLCBpKSkpID09IGRv bV9jb3cgKQo+ICAgICAgICAgIHsKPiAgICAgICAgICAgICAgLyogVGhpcyBpcyBubyB3YXkgdG8g YWRkIGEgc2hhcmVkIHBhZ2UgdG8geW91ciBwaHlzbWFwISAqLwo+IC0gICAgICAgICAgICBnZHBy aW50ayhYRU5MT0dfRVJSLCAiQWRkaW5nIHNoYXJlZCBtZm4gJWx4IGRpcmVjdGx5IHRvIGRvbSAl aHUgIgo+IC0gICAgICAgICAgICAgICAgICAgICAgICAicGh5c21hcCBub3QgYWxsb3dlZC5cbiIs IG1mbitpLCBkLT5kb21haW5faWQpOwo+ICsgICAgICAgICAgICBnZHByaW50ayhYRU5MT0dfRVJS LCAiQWRkaW5nIHNoYXJlZCBtZm4gJWx4IGRpcmVjdGx5IHRvIGRvbSVkIHBoeXNtYXAgbm90IGFs bG93ZWQuXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICBtZm5feChtZm5fYWRkKG1mbiwgaSkp LCBkLT5kb21haW5faWQpOwo+ICAgICAgICAgICAgICBwMm1fdW5sb2NrKHAybSk7Cj4gICAgICAg ICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICAgICAgICAgIH0KPiAtICAgICAgICBpZiAoIHBhZ2Vf Z2V0X293bmVyKG1mbl90b19wYWdlKF9tZm4obWZuICsgaSkpKSAhPSBkICkKPiArICAgICAgICBp ZiAoIHBhZ2VfZ2V0X293bmVyKG1mbl90b19wYWdlKG1mbl9hZGQobWZuLCBpKSkpICE9IGQgKQo+ ICAgICAgICAgICAgICBjb250aW51ZTsKPiAtICAgICAgICBvZ2ZuID0gbWZuX3RvX2dmbihkLCBf bWZuKG1mbitpKSk7Cj4gLSAgICAgICAgaWYgKCAob2dmbiAhPSBJTlZBTElEX00yUF9FTlRSWSkg JiYgKG9nZm4gIT0gZ2ZuICsgaSkgKQo+ICsgICAgICAgIG9nZm4gPSBtZm5fdG9fZ2ZuKGQsIG1m bl9hZGQobWZuLCBpKSk7Cj4gKyAgICAgICAgaWYgKCAob2dmbiAhPSBJTlZBTElEX00yUF9FTlRS WSkgJiYgKG9nZm4gIT0gZ2ZuX3goZ2ZuX2FkZChnZm4sIGkpKSkgKQo+ICAgICAgICAgIHsKPiAg ICAgICAgICAgICAgLyogVGhpcyBtYWNoaW5lIGZyYW1lIGlzIGFscmVhZHkgbWFwcGVkIGF0IGFu b3RoZXIgcGh5c2ljYWwKPiAgICAgICAgICAgICAgICogYWRkcmVzcyAqLwo+ICAgICAgICAgICAg ICBQMk1fREVCVUcoImFsaWFzZWQhIG1mbj0lI2x4LCBvbGQgZ2ZuPSUjbHgsIG5ldyBnZm49JSNs eFxuIiwKPiAtICAgICAgICAgICAgICAgICAgICAgIG1mbiArIGksIG9nZm4sIGdmbiArIGkpOwo+ ICsgICAgICAgICAgICAgICAgICAgICAgbWZuX3gobWZuX2FkZChtZm4sIGkpKSwgb2dmbiwgZ2Zu X3goZ2ZuX2FkZChnZm4sIGkpKSk7Cj4gICAgICAgICAgICAgIG9tZm4gPSBwMm0tPmdldF9lbnRy eShwMm0sIG9nZm4sICZvdCwgJmEsIDAsIE5VTEwsIE5VTEwpOwo+ICAgICAgICAgICAgICBpZiAo IHAybV9pc19yYW0ob3QpICYmICFwMm1faXNfcGFnZWQob3QpICkKPiAgICAgICAgICAgICAgewo+ ICAgICAgICAgICAgICAgICAgQVNTRVJUKG1mbl92YWxpZChvbWZuKSk7Cj4gICAgICAgICAgICAg ICAgICBQMk1fREVCVUcoIm9sZCBnZm49JSNseCAtPiBtZm4gJSNseFxuIiwKPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvZ2ZuICwgbWZuX3gob21mbikpOwo+IC0gICAgICAgICAgICAgICAg aWYgKCBtZm5feChvbWZuKSA9PSAobWZuICsgaSkgKQo+IC0gICAgICAgICAgICAgICAgICAgIHAy bV9yZW1vdmVfcGFnZShwMm0sIG9nZm4sIG1mbiArIGksIDApOwo+ICsgICAgICAgICAgICAgICAg aWYgKCBtZm5fZXEob21mbiwgbWZuX2FkZChtZm4sIGkpKSApCj4gKyAgICAgICAgICAgICAgICAg ICAgcDJtX3JlbW92ZV9wYWdlKHAybSwgb2dmbiwgbWZuX3gobWZuX2FkZChtZm4sIGkpKSwgMCk7 Cj4gICAgICAgICAgICAgIH0KPiAgICAgICAgICB9Cj4gICAgICB9Cj4gIAo+ICAgICAgLyogTm93 LCBhY3R1YWxseSBkbyB0aGUgdHdvLXdheSBtYXBwaW5nICovCj4gLSAgICBpZiAoIG1mbl92YWxp ZChfbWZuKG1mbikpICkgCj4gKyAgICBpZiAoIG1mbl92YWxpZChtZm4pICkKPiAgICAgIHsKPiAt ICAgICAgICByYyA9IHAybV9zZXRfZW50cnkocDJtLCBnZm4sIF9tZm4obWZuKSwgcGFnZV9vcmRl ciwgdCwKPiArICAgICAgICByYyA9IHAybV9zZXRfZW50cnkocDJtLCBnZm5feChnZm4pLCBtZm4s IHBhZ2Vfb3JkZXIsIHQsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAybS0+ZGVmYXVs dF9hY2Nlc3MpOwo+ICAgICAgICAgIGlmICggcmMgKQo+ICAgICAgICAgICAgICBnb3RvIG91dDsg LyogRmFpbGVkIHRvIHVwZGF0ZSBwMm0sIGJhaWwgd2l0aG91dCB1cGRhdGluZyBtMnAuICovCj4g QEAgLTgyNywxNCArODMyLDE1IEBAIGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5KHN0cnVjdCBkb21h aW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAo+ICAgICAgICAgIGlmICggIXAybV9pc19ncmFudCh0 KSApCj4gICAgICAgICAgewo+ICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8ICgxVUwgPDwg cGFnZV9vcmRlcik7IGkrKyApCj4gLSAgICAgICAgICAgICAgICBzZXRfZ3Bmbl9mcm9tX21mbiht Zm4raSwgZ2ZuK2kpOwo+ICsgICAgICAgICAgICAgICAgc2V0X2dwZm5fZnJvbV9tZm4obWZuX3go bWZuX2FkZChtZm4sIGkpKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdm bl94KGdmbl9hZGQoZ2ZuLCBpKSkpOwo+ICAgICAgICAgIH0KPiAgICAgIH0KPiAgICAgIGVsc2UK PiAgICAgIHsKPiAgICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywgIkFkZGluZyBiYWQg bWZuIHRvIHAybSBtYXAgKCUjbHggLT4gJSNseClcbiIsCj4gLSAgICAgICAgICAgICAgICAgZ2Zu LCBtZm4pOwo+IC0gICAgICAgIHJjID0gcDJtX3NldF9lbnRyeShwMm0sIGdmbiwgX21mbihJTlZB TElEX01GTiksIHBhZ2Vfb3JkZXIsCj4gKyAgICAgICAgICAgICAgICAgZ2ZuX3goZ2ZuKSwgbWZu X3gobWZuKSk7Cj4gKyAgICAgICAgcmMgPSBwMm1fc2V0X2VudHJ5KHAybSwgZ2ZuX3goZ2ZuKSwg X21mbihJTlZBTElEX01GTiksIHBhZ2Vfb3JkZXIsCj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHAybV9pbnZhbGlkLCBwMm0tPmRlZmF1bHRfYWNjZXNzKTsKPiAgICAgICAgICBpZiAoIHJj ID09IDAgKQo+ICAgICAgICAgIHsKPiBAQCAtMjc5OCw3ICsyODA0LDcgQEAgaW50IHAybV9hZGRf Zm9yZWlnbihzdHJ1Y3QgZG9tYWluICp0ZG9tLCB1bnNpZ25lZCBsb25nIGZnZm4sCj4gICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBncGZuLCBkb21pZF90IGZvcmVpZ25kb20pCj4g IHsKPiAgICAgIHAybV90eXBlX3QgcDJtdCwgcDJtdF9wcmV2Owo+IC0gICAgdW5zaWduZWQgbG9u ZyBwcmV2X21mbiwgbWZuOwo+ICsgICAgbWZuX3QgcHJldl9tZm4sIG1mbjsKPiAgICAgIHN0cnVj dCBwYWdlX2luZm8gKnBhZ2U7Cj4gICAgICBpbnQgcmM7Cj4gICAgICBzdHJ1Y3QgZG9tYWluICpm ZG9tOwo+IEBAIC0yODQxLDE1ICsyODQ3LDE1IEBAIGludCBwMm1fYWRkX2ZvcmVpZ24oc3RydWN0 IGRvbWFpbiAqdGRvbSwgdW5zaWduZWQgbG9uZyBmZ2ZuLAo+ICAgICAgICAgIHJjID0gLUVJTlZB TDsKPiAgICAgICAgICBnb3RvIG91dDsKPiAgICAgIH0KPiAtICAgIG1mbiA9IG1mbl94KHBhZ2Vf dG9fbWZuKHBhZ2UpKTsKPiArICAgIG1mbiA9IHBhZ2VfdG9fbWZuKHBhZ2UpOwo+ICAKPiAgICAg IC8qIFJlbW92ZSBwcmV2aW91c2x5IG1hcHBlZCBwYWdlIGlmIGl0IGlzIHByZXNlbnQuICovCj4g LSAgICBwcmV2X21mbiA9IG1mbl94KGdldF9nZm4odGRvbSwgZ3BmbiwgJnAybXRfcHJldikpOwo+ IC0gICAgaWYgKCBtZm5fdmFsaWQoX21mbihwcmV2X21mbikpICkKPiArICAgIHByZXZfbWZuID0g Z2V0X2dmbih0ZG9tLCBncGZuLCAmcDJtdF9wcmV2KTsKPiArICAgIGlmICggbWZuX3ZhbGlkKHBy ZXZfbWZuKSApCj4gICAgICB7Cj4gLSAgICAgICAgaWYgKCBpc194ZW5faGVhcF9tZm4ocHJldl9t Zm4pICkKPiArICAgICAgICBpZiAoIGlzX3hlbl9oZWFwX21mbihtZm5feChwcmV2X21mbikpICkK PiAgICAgICAgICAgICAgLyogWGVuIGhlYXAgZnJhbWVzIGFyZSBzaW1wbHkgdW5ob29rZWQgZnJv bSB0aGlzIHBoeXMgc2xvdCAqLwo+IC0gICAgICAgICAgICBndWVzdF9waHlzbWFwX3JlbW92ZV9w YWdlKHRkb20sIGdwZm4sIHByZXZfbWZuLCAwKTsKPiArICAgICAgICAgICAgZ3Vlc3RfcGh5c21h cF9yZW1vdmVfcGFnZSh0ZG9tLCBfZ2ZuKGdwZm4pLCBwcmV2X21mbiwgMCk7Cj4gICAgICAgICAg ZWxzZQo+ICAgICAgICAgICAgICAvKiBOb3JtYWwgZG9tYWluIG1lbW9yeSBpcyBmcmVlZCwgdG8g YXZvaWQgbGVha2luZyBtZW1vcnkuICovCj4gICAgICAgICAgICAgIGd1ZXN0X3JlbW92ZV9wYWdl KHRkb20sIGdwZm4pOwo+IEBAIC0yODU5LDExICsyODY1LDExIEBAIGludCBwMm1fYWRkX2ZvcmVp Z24oc3RydWN0IGRvbWFpbiAqdGRvbSwgdW5zaWduZWQgbG9uZyBmZ2ZuLAo+ICAgICAgICogd2ls bCB1cGRhdGUgdGhlIG0ycCB0YWJsZSB3aGljaCB3aWxsIHJlc3VsdCBpbiAgbWZuIC0+IGdwZm4g b2YgZG9tMAo+ICAgICAgICogYW5kIG5vdCBmZ2ZuIG9mIGRvbVUuCj4gICAgICAgKi8KPiAtICAg IHJjID0gc2V0X2ZvcmVpZ25fcDJtX2VudHJ5KHRkb20sIGdwZm4sIF9tZm4obWZuKSk7Cj4gKyAg ICByYyA9IHNldF9mb3JlaWduX3AybV9lbnRyeSh0ZG9tLCBncGZuLCBtZm4pOwo+ICAgICAgaWYg KCByYyApCj4gICAgICAgICAgZ2RwcmludGsoWEVOTE9HX1dBUk5JTkcsICJzZXRfZm9yZWlnbl9w Mm1fZW50cnkgZmFpbGVkLiAiCj4gICAgICAgICAgICAgICAgICAgImdwZm46JWx4IG1mbjolbHgg ZmdmbjolbHggdGQ6JWQgZmQ6JWRcbiIsCj4gLSAgICAgICAgICAgICAgICAgZ3BmbiwgbWZuLCBm Z2ZuLCB0ZG9tLT5kb21haW5faWQsIGZkb20tPmRvbWFpbl9pZCk7Cj4gKyAgICAgICAgICAgICAg ICAgZ3BmbiwgbWZuX3gobWZuKSwgZmdmbiwgdGRvbS0+ZG9tYWluX2lkLCBmZG9tLT5kb21haW5f aWQpOwo+ICAKPiAgICAgIHB1dF9wYWdlKHBhZ2UpOwo+ICAKPiBkaWZmIC0tZ2l0IGEveGVuL2Nv bW1vbi9ncmFudF90YWJsZS5jIGIveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jCj4gaW5kZXggM2Mz MDRmNC4uM2YxNTU0MyAxMDA2NDQKPiAtLS0gYS94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMKPiAr KysgYi94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMKPiBAQCAtMTgxOCw3ICsxODE4LDcgQEAgZ250 dGFiX3RyYW5zZmVyKAo+ICAgICAgICAgICAgICBnb3RvIGNvcHliYWNrOwo+ICAgICAgICAgIH0K PiAgCj4gLSAgICAgICAgZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFnZShkLCBnb3AubWZuLCBtZm4s IDApOwo+ICsgICAgICAgIGd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgX2dmbihnb3AubWZu KSwgX21mbihtZm4pLCAwKTsKPiAgICAgICAgICBnbnR0YWJfZmx1c2hfdGxiKGQpOwo+ICAKPiAg ICAgICAgICAvKiBGaW5kIHRoZSB0YXJnZXQgZG9tYWluLiAqLwo+IEBAIC0xOTQ2LDcgKzE5NDYs NyBAQCBnbnR0YWJfdHJhbnNmZXIoCj4gICAgICAgICAgewo+ICAgICAgICAgICAgICBncmFudF9l bnRyeV92MV90ICpzaGEgPSAmc2hhcmVkX2VudHJ5X3YxKGUtPmdyYW50X3RhYmxlLCBnb3AucmVm KTsKPiAgCj4gLSAgICAgICAgICAgIGd1ZXN0X3BoeXNtYXBfYWRkX3BhZ2UoZSwgc2hhLT5mcmFt ZSwgbWZuLCAwKTsKPiArICAgICAgICAgICAgZ3Vlc3RfcGh5c21hcF9hZGRfcGFnZShlLCBfZ2Zu KHNoYS0+ZnJhbWUpLCBfbWZuKG1mbiksIDApOwo+ICAgICAgICAgICAgICBpZiAoICFwYWdpbmdf bW9kZV90cmFuc2xhdGUoZSkgKQo+ICAgICAgICAgICAgICAgICAgc2hhLT5mcmFtZSA9IG1mbjsK PiAgICAgICAgICB9Cj4gQEAgLTE5NTQsNyArMTk1NCw4IEBAIGdudHRhYl90cmFuc2ZlcigKPiAg ICAgICAgICB7Cj4gICAgICAgICAgICAgIGdyYW50X2VudHJ5X3YyX3QgKnNoYSA9ICZzaGFyZWRf ZW50cnlfdjIoZS0+Z3JhbnRfdGFibGUsIGdvcC5yZWYpOwo+ICAKPiAtICAgICAgICAgICAgZ3Vl c3RfcGh5c21hcF9hZGRfcGFnZShlLCBzaGEtPmZ1bGxfcGFnZS5mcmFtZSwgbWZuLCAwKTsKPiAr ICAgICAgICAgICAgZ3Vlc3RfcGh5c21hcF9hZGRfcGFnZShlLCBfZ2ZuKHNoYS0+ZnVsbF9wYWdl LmZyYW1lKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbWZuKG1mbiks IDApOwo+ICAgICAgICAgICAgICBpZiAoICFwYWdpbmdfbW9kZV90cmFuc2xhdGUoZSkgKQo+ICAg ICAgICAgICAgICAgICAgc2hhLT5mdWxsX3BhZ2UuZnJhbWUgPSBtZm47Cj4gICAgICAgICAgfQo+ IGRpZmYgLS1naXQgYS94ZW4vY29tbW9uL21lbW9yeS5jIGIveGVuL2NvbW1vbi9tZW1vcnkuYwo+ IGluZGV4IGI1NGIwNzYuLmE4YTc1ZTAgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi9tZW1vcnku Ywo+ICsrKyBiL3hlbi9jb21tb24vbWVtb3J5LmMKPiBAQCAtMjEzLDcgKzIxMyw3IEBAIHN0YXRp YyB2b2lkIHBvcHVsYXRlX3BoeXNtYXAoc3RydWN0IG1lbW9wX2FyZ3MgKmEpCj4gICAgICAgICAg ICAgICAgICBtZm4gPSBwYWdlX3RvX21mbihwYWdlKTsKPiAgICAgICAgICAgICAgfQo+ICAKPiAt ICAgICAgICAgICAgZ3Vlc3RfcGh5c21hcF9hZGRfcGFnZShkLCBncGZuLCBtZm4sIGEtPmV4dGVu dF9vcmRlcik7Cj4gKyAgICAgICAgICAgIGd1ZXN0X3BoeXNtYXBfYWRkX3BhZ2UoZCwgX2dmbihn cGZuKSwgX21mbihtZm4pLCBhLT5leHRlbnRfb3JkZXIpOwo+ICAKPiAgICAgICAgICAgICAgaWYg KCAhcGFnaW5nX21vZGVfdHJhbnNsYXRlKGQpICkKPiAgICAgICAgICAgICAgewo+IEBAIC0yMzcs MjAgKzIzNywyMCBAQCBpbnQgZ3Vlc3RfcmVtb3ZlX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5z aWduZWQgbG9uZyBnbWZuKQo+ICAjaWZkZWYgQ09ORklHX1g4Ngo+ICAgICAgcDJtX3R5cGVfdCBw Mm10Owo+ICAjZW5kaWYKPiAtICAgIHVuc2lnbmVkIGxvbmcgbWZuOwo+ICsgICAgbWZuX3QgbWZu Owo+ICAKPiAgI2lmZGVmIENPTkZJR19YODYKPiAtICAgIG1mbiA9IG1mbl94KGdldF9nZm5fcXVl cnkoZCwgZ21mbiwgJnAybXQpKTsgCj4gKyAgICBtZm4gPSBnZXRfZ2ZuX3F1ZXJ5KGQsIGdtZm4s ICZwMm10KTsKPiAgICAgIGlmICggdW5saWtlbHkocDJtX2lzX3BhZ2luZyhwMm10KSkgKQo+ICAg ICAgewo+IC0gICAgICAgIGd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgZ21mbiwgbWZuLCAw KTsKPiArICAgICAgICBndWVzdF9waHlzbWFwX3JlbW92ZV9wYWdlKGQsIF9nZm4oZ21mbiksIG1m biwgMCk7Cj4gICAgICAgICAgcHV0X2dmbihkLCBnbWZuKTsKPiAgICAgICAgICAvKiBJZiB0aGUg cGFnZSBoYXNuJ3QgeWV0IGJlZW4gcGFnZWQgb3V0LCB0aGVyZSBpcyBhbgo+ICAgICAgICAgICAq IGFjdHVhbCBwYWdlIHRoYXQgbmVlZHMgdG8gYmUgcmVsZWFzZWQuICovCj4gICAgICAgICAgaWYg KCBwMm10ID09IHAybV9yYW1fcGFnaW5nX291dCApCj4gICAgICAgICAgewo+IC0gICAgICAgICAg ICBBU1NFUlQobWZuX3ZhbGlkKG1mbikpOwo+IC0gICAgICAgICAgICBwYWdlID0gbWZuX3RvX3Bh Z2UobWZuKTsKPiArICAgICAgICAgICAgQVNTRVJUKG1mbl92YWxpZChtZm5feChtZm4pKSk7Cj4g KyAgICAgICAgICAgIHBhZ2UgPSBtZm5fdG9fcGFnZShtZm5feChtZm4pKTsKPiAgICAgICAgICAg ICAgaWYgKCB0ZXN0X2FuZF9jbGVhcl9iaXQoX1BHQ19hbGxvY2F0ZWQsICZwYWdlLT5jb3VudF9p bmZvKSApCj4gICAgICAgICAgICAgICAgICBwdXRfcGFnZShwYWdlKTsKPiAgICAgICAgICB9Cj4g QEAgLTI1OSwxNCArMjU5LDE0IEBAIGludCBndWVzdF9yZW1vdmVfcGFnZShzdHJ1Y3QgZG9tYWlu ICpkLCB1bnNpZ25lZCBsb25nIGdtZm4pCj4gICAgICB9Cj4gICAgICBpZiAoIHAybXQgPT0gcDJt X21taW9fZGlyZWN0ICkKPiAgICAgIHsKPiAtICAgICAgICBjbGVhcl9tbWlvX3AybV9lbnRyeShk LCBnbWZuLCBfbWZuKG1mbiksIDApOwo+ICsgICAgICAgIGNsZWFyX21taW9fcDJtX2VudHJ5KGQs IGdtZm4sIG1mbiwgMCk7Cj4gICAgICAgICAgcHV0X2dmbihkLCBnbWZuKTsKPiAgICAgICAgICBy ZXR1cm4gMTsKPiAgICAgIH0KPiAgI2Vsc2UKPiAtICAgIG1mbiA9IG1mbl94KGdmbl90b19tZm4o ZCwgX2dmbihnbWZuKSkpOwo+ICsgICAgbWZuID0gZ2ZuX3RvX21mbihkLCBfZ2ZuKGdtZm4pKTsK PiAgI2VuZGlmCj4gLSAgICBpZiAoIHVubGlrZWx5KCFtZm5fdmFsaWQobWZuKSkgKQo+ICsgICAg aWYgKCB1bmxpa2VseSghbWZuX3ZhbGlkKG1mbl94KG1mbikpKSApCj4gICAgICB7Cj4gICAgICAg ICAgcHV0X2dmbihkLCBnbWZuKTsKPiAgICAgICAgICBnZHByaW50ayhYRU5MT0dfSU5GTywgIkRv bWFpbiAldSBwYWdlIG51bWJlciAlbHggaW52YWxpZFxuIiwKPiBAQCAtMjg4LDEyICsyODgsMTIg QEAgaW50IGd1ZXN0X3JlbW92ZV9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcg Z21mbikKPiAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gICAgICAgICAgfQo+ICAgICAgICAgIC8q IE1heWJlIHRoZSBtZm4gY2hhbmdlZCAqLwo+IC0gICAgICAgIG1mbiA9IG1mbl94KGdldF9nZm5f cXVlcnlfdW5sb2NrZWQoZCwgZ21mbiwgJnAybXQpKTsKPiArICAgICAgICBtZm4gPSBnZXRfZ2Zu X3F1ZXJ5X3VubG9ja2VkKGQsIGdtZm4sICZwMm10KTsKPiAgICAgICAgICBBU1NFUlQoIXAybV9p c19zaGFyZWQocDJtdCkpOwo+ICAgICAgfQo+ICAjZW5kaWYgLyogQ09ORklHX1g4NiAqLwo+ICAK PiAtICAgIHBhZ2UgPSBtZm5fdG9fcGFnZShtZm4pOwo+ICsgICAgcGFnZSA9IG1mbl90b19wYWdl KG1mbl94KG1mbikpOwo+ICAgICAgaWYgKCB1bmxpa2VseSghZ2V0X3BhZ2UocGFnZSwgZCkpICkK PiAgICAgIHsKPiAgICAgICAgICBwdXRfZ2ZuKGQsIGdtZm4pOwo+IEBAIC0zMTYsNyArMzE2LDcg QEAgaW50IGd1ZXN0X3JlbW92ZV9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcg Z21mbikKPiAgICAgICAgICAgdGVzdF9hbmRfY2xlYXJfYml0KF9QR0NfYWxsb2NhdGVkLCAmcGFn ZS0+Y291bnRfaW5mbykgKQo+ICAgICAgICAgIHB1dF9wYWdlKHBhZ2UpOwo+ICAKPiAtICAgIGd1 ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgZ21mbiwgbWZuLCAwKTsKPiArICAgIGd1ZXN0X3Bo eXNtYXBfcmVtb3ZlX3BhZ2UoZCwgX2dmbihnbWZuKSwgbWZuLCAwKTsKPiAgCj4gICAgICBwdXRf cGFnZShwYWdlKTsKPiAgICAgIHB1dF9nZm4oZCwgZ21mbik7Cj4gQEAgLTU0MCw3ICs1NDAsNyBA QCBzdGF0aWMgbG9uZyBtZW1vcnlfZXhjaGFuZ2UoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5f bWVtb3J5X2V4Y2hhbmdlX3QpIGFyZykKPiAgICAgICAgICAgICAgZ2ZuID0gbWZuX3RvX2dtZm4o ZCwgbWZuKTsKPiAgICAgICAgICAgICAgLyogUGFnZXMgd2VyZSB1bnNoYXJlZCBhYm92ZSAqLwo+ ICAgICAgICAgICAgICBCVUdfT04oU0hBUkVEX00yUChnZm4pKTsKPiAtICAgICAgICAgICAgZ3Vl c3RfcGh5c21hcF9yZW1vdmVfcGFnZShkLCBnZm4sIG1mbiwgMCk7Cj4gKyAgICAgICAgICAgIGd1 ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgX2dmbihnZm4pLCBfbWZuKG1mbiksIDApOwo+ICAg ICAgICAgICAgICBwdXRfcGFnZShwYWdlKTsKPiAgICAgICAgICB9Cj4gIAo+IEBAIC01ODQsNyAr NTg0LDggQEAgc3RhdGljIGxvbmcgbWVtb3J5X2V4Y2hhbmdlKFhFTl9HVUVTVF9IQU5ETEVfUEFS QU0oeGVuX21lbW9yeV9leGNoYW5nZV90KSBhcmcpCj4gICAgICAgICAgICAgIH0KPiAgCj4gICAg ICAgICAgICAgIG1mbiA9IHBhZ2VfdG9fbWZuKHBhZ2UpOwo+IC0gICAgICAgICAgICBndWVzdF9w aHlzbWFwX2FkZF9wYWdlKGQsIGdwZm4sIG1mbiwgZXhjaC5vdXQuZXh0ZW50X29yZGVyKTsKPiAr ICAgICAgICAgICAgZ3Vlc3RfcGh5c21hcF9hZGRfcGFnZShkLCBfZ2ZuKGdwZm4pLCBfbWZuKG1m biksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjaC5vdXQuZXh0ZW50 X29yZGVyKTsKPiAgCj4gICAgICAgICAgICAgIGlmICggIXBhZ2luZ19tb2RlX3RyYW5zbGF0ZShk KSApCj4gICAgICAgICAgICAgIHsKPiBAQCAtMTA5NSw3ICsxMDk2LDggQEAgbG9uZyBkb19tZW1v cnlfb3AodW5zaWduZWQgbG9uZyBjbWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJn KQo+ICAgICAgICAgIHBhZ2UgPSBnZXRfcGFnZV9mcm9tX2dmbihkLCB4cmZwLmdwZm4sIE5VTEws IFAyTV9BTExPQyk7Cj4gICAgICAgICAgaWYgKCBwYWdlICkKPiAgICAgICAgICB7Cj4gLSAgICAg ICAgICAgIGd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgeHJmcC5ncGZuLCBwYWdlX3RvX21m bihwYWdlKSwgMCk7Cj4gKyAgICAgICAgICAgIGd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwg X2dmbih4cmZwLmdwZm4pLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF9tZm4ocGFnZV90b19tZm4ocGFnZSkpLCAwKTsKPiAgICAgICAgICAgICAgcHV0X3BhZ2UocGFn ZSk7Cj4gICAgICAgICAgfQo+ICAgICAgICAgIGVsc2UKPiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZl cnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9z bW11LmMKPiBpbmRleCA4YTRiMTIzLi5jZjhiOGI4IDEwMDY0NAo+IC0tLSBhL3hlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL2FybS9zbW11LmMKPiArKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9h cm0vc21tdS5jCj4gQEAgLTI3NzQsNyArMjc3NCw3IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNr IGFybV9zbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAo+ ICAJICogVGhlIGZ1bmN0aW9uIGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5IHJlcGxhY2VzIHRoZSBj dXJyZW50IG1hcHBpbmcKPiAgCSAqIGlmIHRoZXJlIGlzIGFscmVhZHkgb25lLi4uCj4gIAkgKi8K PiAtCXJldHVybiBndWVzdF9waHlzbWFwX2FkZF9lbnRyeShkLCBnZm4sIG1mbiwgMCwgdCk7Cj4g KwlyZXR1cm4gZ3Vlc3RfcGh5c21hcF9hZGRfZW50cnkoZCwgX2dmbihnZm4pLCBfbWZuKG1mbiks IDAsIHQpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV91bm1h cF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKQo+IEBAIC0yNzg2LDcg KzI3ODYsNyBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV91bm1hcF9wYWdlKHN0 cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKQo+ICAJaWYgKCAhaXNfZG9tYWluX2Rp cmVjdF9tYXBwZWQoZCkgKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAtCWd1ZXN0X3BoeXNt YXBfcmVtb3ZlX3BhZ2UoZCwgZ2ZuLCBnZm4sIDApOwo+ICsJZ3Vlc3RfcGh5c21hcF9yZW1vdmVf cGFnZShkLCBfZ2ZuKGdmbiksIF9tZm4oZ2ZuKSwgMCk7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIH0K PiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9wMm0uaCBiL3hlbi9pbmNsdWRlL2Fz bS1hcm0vcDJtLmgKPiBpbmRleCA3NWM2NWE4Li4wZDFlNjFlIDEwMDY0NAo+IC0tLSBhL3hlbi9p bmNsdWRlL2FzbS1hcm0vcDJtLmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3AybS5oCj4g QEAgLTE2MCwyMyArMTYwLDIzIEBAIGludCBtYXBfZGV2X21taW9fcmVnaW9uKHN0cnVjdCBkb21h aW4gKmQsCj4gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuKTsKPiAg Cj4gIGludCBndWVzdF9waHlzbWFwX2FkZF9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLAo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4sCj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdmbl90IGdmbiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mbl90 IG1mbiwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcGFnZV9v cmRlciwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAybV90eXBlX3QgdCk7Cj4gIAo+ ICAvKiBVbnR5cGVkIHZlcnNpb24gZm9yIFJBTSBvbmx5LCBmb3IgY29tcGF0aWJpbGl0eSAqLwo+ ICBzdGF0aWMgaW5saW5lIGludCBndWVzdF9waHlzbWFwX2FkZF9wYWdlKHN0cnVjdCBkb21haW4g KmQsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg bG9uZyBnZm4sCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyBtZm4sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ2ZuX3QgZ2ZuLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1mbl90IG1mbiwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgcGFnZV9vcmRlcikKPiAgewo+ICAgICAgcmV0dXJuIGd1ZXN0X3BoeXNtYXBf YWRkX2VudHJ5KGQsIGdmbiwgbWZuLCBwYWdlX29yZGVyLCBwMm1fcmFtX3J3KTsKPiAgfQo+ICAK PiAgdm9pZCBndWVzdF9waHlzbWFwX3JlbW92ZV9wYWdlKHN0cnVjdCBkb21haW4gKmQsCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdwZm4sCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiwgdW5zaWduZWQgaW50 IHBhZ2Vfb3JkZXIpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ZuX3QgZ2Zu LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZuX3QgbWZuLCB1bnNpZ25lZCBp bnQgcGFnZV9vcmRlcik7Cj4gIAo+ICBtZm5fdCBnZm5fdG9fbWZuKHN0cnVjdCBkb21haW4gKmQs IGdmbl90IGdmbik7Cj4gIAo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3AybS5o IGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaAo+IGluZGV4IDY1Njc1YTIuLjRhYjM1NzQgMTAw NjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaAo+ICsrKyBiL3hlbi9pbmNsdWRl L2FzbS14ODYvcDJtLmgKPiBAQCAtNTQ1LDE0ICs1NDUsMTQgQEAgdm9pZCBwMm1fdGVhcmRvd24o c3RydWN0IHAybV9kb21haW4gKnAybSk7Cj4gIHZvaWQgcDJtX2ZpbmFsX3RlYXJkb3duKHN0cnVj dCBkb21haW4gKmQpOwo+ICAKPiAgLyogQWRkIGEgcGFnZSB0byBhIGRvbWFpbidzIHAybSB0YWJs ZSAqLwo+IC1pbnQgZ3Vlc3RfcGh5c21hcF9hZGRfZW50cnkoc3RydWN0IGRvbWFpbiAqZCwgdW5z aWduZWQgbG9uZyBnZm4sCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs b25nIG1mbiwgdW5zaWduZWQgaW50IHBhZ2Vfb3JkZXIsIAo+ICtpbnQgZ3Vlc3RfcGh5c21hcF9h ZGRfZW50cnkoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbWZuX3QgbWZuLCB1bnNpZ25lZCBpbnQgcGFnZV9vcmRlciwKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHAybV90eXBlX3QgdCk7Cj4gIAo+ICAvKiBVbnR5cGVkIHZl cnNpb24gZm9yIFJBTSBvbmx5LCBmb3IgY29tcGF0aWJpbGl0eSAqLwo+ICBzdGF0aWMgaW5saW5l IGludCBndWVzdF9waHlzbWFwX2FkZF9wYWdlKHN0cnVjdCBkb21haW4gKmQsCj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4sCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4s Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ZuX3QgZ2ZuLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mbl90IG1mbiwKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGFn ZV9vcmRlcikKPiAgewo+ICAgICAgcmV0dXJuIGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5KGQsIGdm biwgbWZuLCBwYWdlX29yZGVyLCBwMm1fcmFtX3J3KTsKPiBAQCAtNTYwLDggKzU2MCw3IEBAIHN0 YXRpYyBpbmxpbmUgaW50IGd1ZXN0X3BoeXNtYXBfYWRkX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwK PiAgCj4gIC8qIFJlbW92ZSBhIHBhZ2UgZnJvbSBhIGRvbWFpbidzIHAybSB0YWJsZSAqLwo+ICBp bnQgZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFnZShzdHJ1Y3QgZG9tYWluICpkLAo+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdmbiwKPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4sIHVuc2lnbmVkIGludCBwYWdlX29y ZGVyKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ZuX3QgZ2ZuLCBtZm5fdCBt Zm4sIHVuc2lnbmVkIGludCBwYWdlX29yZGVyKTsKPiAgCj4gIC8qIFNldCBhIHAybSByYW5nZSBh cyBwb3B1bGF0ZS1vbi1kZW1hbmQgKi8KPiAgaW50IGd1ZXN0X3BoeXNtYXBfbWFya19wb3B1bGF0 ZV9vbl9kZW1hbmQoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCj4gZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9tbS5oIGIveGVuL2luY2x1ZGUveGVuL21tLmgKPiBpbmRl eCAxM2Y3MDZlLi5iNjJmNDczIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL3hlbi9tbS5oCj4g KysrIGIveGVuL2luY2x1ZGUveGVuL21tLmgKPiBAQCAtNTUyLDcgKzU1Miw3IEBAIGludCB4ZW5t ZW1fYWRkX3RvX3BoeXNtYXBfb25lKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBzcGFj ZSwKPiAgCj4gIC8qIFJldHVybnMgMSBvbiBzdWNjZXNzLCAwIG9uIGVycm9yLCBuZWdhdGl2ZSBp ZiB0aGUgcmluZwo+ICAgKiBmb3IgZXZlbnQgcHJvcGFnYXRpb24gaXMgZnVsbCBpbiB0aGUgcHJl c2VuY2Ugb2YgcGFnaW5nICovCj4gLWludCBndWVzdF9yZW1vdmVfcGFnZShzdHJ1Y3QgZG9tYWlu ICpkLCB1bnNpZ25lZCBsb25nIGdtZm4pOwo+ICtpbnQgZ3Vlc3RfcmVtb3ZlX3BhZ2Uoc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4pOwo+ICAKPiAgI2RlZmluZSBSQU1fVFlQRV9D T05WRU5USU9OQUwgMHgwMDAwMDAwMQo+ICAjZGVmaW5lIFJBTV9UWVBFX1JFU0VSVkVEICAgICAw eDAwMDAwMDAyCj4gLS0gCj4gMS45LjEKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz Lnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==