From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v9 08/27] arm/x86/vmap: Add v[z|m]alloc_xen and vm_init_type Date: Wed, 27 Apr 2016 09:46:44 -0400 Message-ID: <20160427134644.GA26384@x230.dumpdata.com> References: <1461598514-5440-1-git-send-email-konrad.wilk@oracle.com> <1461598514-5440-9-git-send-email-konrad.wilk@oracle.com> <571F637C02000078000E5C2E@prv-mh.provo.novell.com> <20160427023837.GC26540@localhost.localdomain> <5720827802000078000E6296@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1avPno-0004WU-F8 for xen-devel@lists.xenproject.org; Wed, 27 Apr 2016 13:46:52 +0000 Received: by mail-qk0-f196.google.com with SMTP id l68so3399859qkf.3 for ; Wed, 27 Apr 2016 06:46:50 -0700 (PDT) Content-Disposition: inline In-Reply-To: <5720827802000078000E6296@prv-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Jan Beulich Cc: Stefano Stabellini , Keir Fraser , andrew.cooper3@citrix.com, Ian Jackson , Tim Deegan , mpohlack@amazon.de, ross.lagerwall@citrix.com, Julien Grall , sasha.levin@oracle.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org T24gV2VkLCBBcHIgMjcsIDIwMTYgYXQgMDE6MTI6MjRBTSAtMDYwMCwgSmFuIEJldWxpY2ggd3Jv dGU6Cj4gPj4+IE9uIDI3LjA0LjE2IGF0IDA0OjM4LCA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4g d3JvdGU6Cj4gPj4gIFdpdGggdm1fYWxsb2MoKSBnZXR0aW5nIHJlbW92ZWQsIHZtX2ZyZWUoKSBz aG91bGQgZ2V0IHJlbW92ZWQKPiA+PiBoZXJlIHRvby4gQW5kIHdpdGggdGhhdCwgdm1fYWxsb2Nf dHlwZSgpIGFuZCB2bV9mcmVlX3R5cGUoKSBjYW4KPiA+PiB0aGVuIGp1c3QgYmVjb21lIHZtX2Fs bG9jKCkgYW5kIHZtX2ZyZWUoKSByZXNwZWN0aXZlbHkgKGFzIHN0YXRpYwo+ID4+IGludGVybmFs IGZ1bmN0aW9ucykuCj4gPiAKPiA+IFBsZWFzZSB0YWtlIGEgbG9vayBhdCB0aGlzIGlubGluZSBv bmU6Cj4gCj4gQmV0dGVyLCBhbmQgaXQgY2FuIGhhdmUgbXkgYWNrLCBidXQgaXQncyBzdGlsbCBk b2luZyBtb3JlIGNoYW5nZXMgdGhhbgo+IHJlYWxseSBuZWVkZWQ6Cj4gCj4gPiArc3RhdGljIHZv aWQgdnVubWFwX3BhZ2VzKGNvbnN0IHZvaWQgKnZhLCB1bnNpZ25lZCBpbnQgcGFnZXMpCj4gPiAr ewo+ID4gKyNpZm5kZWYgX1BBR0VfTk9ORQo+ID4gKyAgICB1bnNpZ25lZCBsb25nIGFkZHIgPSAo dW5zaWduZWQgbG9uZyl2YTsKPiA+ICsKPiA+ICsgICAgZGVzdHJveV94ZW5fbWFwcGluZ3MoYWRk ciwgYWRkciArIFBBR0VfU0laRSAqIHBhZ2VzKTsKPiA+ICsjZWxzZSAvKiBBdm9pZCB0ZWFyaW5n IGRvd24gaW50ZXJtZWRpYXRlIHBhZ2UgdGFibGVzLiAqLwo+ID4gKyAgICBtYXBfcGFnZXNfdG9f eGVuKCh1bnNpZ25lZCBsb25nKXZhLCAwLCBwYWdlcywgX1BBR0VfTk9ORSk7Cj4gPiArI2VuZGlm Cj4gPiArICAgIHZtX2ZyZWUodmEpOwo+ID4gK30KPiAKPiBUaGVyZSdzIG5vIHJlYWwgcmVhc29u IHRvIGJyZWFrIHRoaXMgb3V0IGFuZCBtb3ZlIHVwIGhlcmUgLSB0aGUKPiB0d28gY2FsbGVycyBv dGhlciB0aGFuIHZ1bm1hcCgpIGNvdWxkIGVhc2lseSBjb250aW51ZSB0byBjYWxsCj4gdnVubWFw KCkuIFRoZSBtb3JlIHRoYXQgeW91IGRvIG5vdCBzaW1pbGFybHkgbGV2ZXJhZ2Uga25vd2luZwo+ IHRoZSB0eXBlIGhlcmUgYWxyZWFkeSAoYWxsIGNhbGxlcnMgb2YgdnVubWFwX3BhZ2VzKCkgYWxy ZWFkeQo+IGtub3cgdGhlIHR5cGUsIGFuZCBoZW5jZSBjb3VsZCBwYXNzIGl0IGhlcmUpLgoKL21l IG5vZHMuCgo+IAo+ID4gK3ZvaWQgdnVubWFwKGNvbnN0IHZvaWQgKnZhKQo+ID4gK3sKPiA+ICsg ICAgZW51bSB2bWFwX3JlZ2lvbiB0eXBlID0gVk1BUF9ERUZBVUxUOwo+IAo+IElmIHZ1bm1hcF9w YWdlcygpIHdhcyB0byBzdGF5LCBhbmQgd2FzIHRvIGNvbnRpbnVlIHRvIG5vdCBoYXZlIGEKPiB0 eXBlIHBhcmFtZXRlciwgdGhpcyBsb2NhbCB2YXJpYWJsZSBpcyBwb2ludGxlc3MuCj4gCj4gPiBA QCAtMjY2LDE2ICszMDgsMzIgQEAgdm9pZCAqdnphbGxvYyhzaXplX3Qgc2l6ZSkKPiA+ICAgICAg cmV0dXJuIHA7Cj4gPiAgfQo+ID4gIAo+ID4gK3ZvaWQgKnZ6YWxsb2Moc2l6ZV90IHNpemUpCj4g PiArewo+ID4gKyAgICByZXR1cm4gdnphbGxvY190eXBlKHNpemUsIFZNQVBfREVGQVVMVCk7Cj4g PiArfQo+ID4gKwo+ID4gK3ZvaWQgKnZ6YWxsb2NfeGVuKHNpemVfdCBzaXplKQo+ID4gK3sKPiA+ ICsgICAgcmV0dXJuIHZ6YWxsb2NfdHlwZShzaXplLCBWTUFQX1hFTik7Cj4gPiArfQo+IAo+IEkg ZGlkbid0IGxvb2sgYXQgeW91ciByZXBsaWVzIHRvIHRoZSBsYXRlciBwYXRjaGVzIHlldCwgYnV0 IGNvbnNpZGVyaW5nCj4gbXkgcmVwbHkgdG8gdGhlIG9uZSB1c2luZyB2emFsbG9jX3hlbigpIEkg d29uZGVyIHdoZXRoZXIgaW4gZmFjdAo+IHlvdSBzdGlsbCBuZWVkIHRoaXMgZmxhdm9yIChhbmQg aGVuY2UgdnphbGxvY190eXBlKCkpLgoKL21lIG5vZHMuCgpUaGVuIHRoaXMgc2hvdWxkIGJlIHBl cmZlY3Q6CkZyb20gY2VmOTViYzA2ODJmOTRjYTVlNjE2MDkyMTFjNDc4NzQ5MTIxMmFjZiBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQu d2lsa0BvcmFjbGUuY29tPgpEYXRlOiBUdWUsIDI2IEFwciAyMDE2IDE0OjAzOjA2IC0wNDAwClN1 YmplY3Q6IFtQQVRDSF0gYXJtL3g4Ni92bWFwOiBBZGQgdm1hbGxvY194ZW4gYW5kIHZtX2luaXRf dHlwZQoKRm9yIHRob3NlIHVzZXJzIHdobyB3YW50IHRvIHVzZSB0aGUgdmlydHVhbCBhZGRyZXNz ZXMgdGhhdAphcmUgaW4gdGhlIGh5cGVydmlzb3IncyBjb2RlL2RhdGEgcmVnaW9uIGFkZHJlc3Mg c3BhY2UgLQp0aGVzZSB0aHJlZSBuZXcgZnVuY3Rpb25zIGFsbG93IHRoYXQuCgpJbXBsZW1lbnRh dGlvbiB3aXNlIHRoZSB2bWFwIEFQSSBrZWVwcyB0cmFjayBvZiB0d28gdmlydHVhbAphZGRyZXNz IHJlZ2lvbnMgbm93OgogYSkgVk1BUF9WSVJUX1NUQVJUCiBiKSBBbnkgcHJvdmlkZWQgdmlydHVh bCBhZGRyZXNzIHNwYWNlIChuZWVkIHN0YXJ0IGFuZCBlbmQpLgoKVGhlIGEpIG9uZSBpcyB0aGUg ZGVmYXVsdCBvbmUgYW5kIHRoZSBleGlzdGluZyBiZWhhdmlvcgpmb3IgdXNlcnMgb2Ygdm1hbGxv Yywgdm1hcCwgZXRjIGlzIHRoZSBzYW1lLgoKSWYgaG93ZXZlciBvbmUgd2lzaGVzIHRvIHVzZSB0 aGUgYikgb25lIG9ubHkgaGFzIHRvIHVzZQp0aGUgdm1faW5pdF90eXBlIHRvIGluaXRpYWxpemUg YW5kIHRoZSB2bXphbGxvY194ZW4gdG8gdXRpbGl6ZQppdCAodmZyZWUgYW5kIHZ1bm1hcCBhcmUg Y2FwYWJsZSBvZiBzZWFyY2hpbmcgYm90aCBhZGRyZXNzIHNwYWNlcykuCgpUaGlzIGFsbG93cyB1 c2VycyAoc3VjaCBhcyB4U3BsaWNlKSB0byBwcm92aWRlIHRoZWlyIG93bgptZWNoYW5pc20gdG8g Y2hhbmdlIHRoZSB0aGUgcGFnZSBmbGFncywgYW5kIGFsc28gdXNlIHZpcnR1YWwKYWRkcmVzc2Vz IGNsb3NlciB0byB0aGUgaHlwZXJ2aXNvciB2aXJ0dWFsIGFkZHJlc3NlcyAoYXQgbGVhc3QKb24g eDg2KSB3aGlsZSBub3QgaGF2aW5nIHRvIGRlYWwgd2l0aCB0aGUgYWxsb2NhdGlvbiBvZgpwYWdl cy4KCkZvciBleGFtcGxlIG9mIHVzZXJzLCBzZWUgcGF0Y2ggdGl0bGVkICJ4c3BsaWNlOiBJbXBs ZW1lbnQgcGF5bG9hZApsb2FkaW5nIiwgd2hlcmUgd2UgcGFyc2UgdGhlIHBheWxvYWQncyBFTEYg cmVsb2NhdGlvbnMgLSB3aGljaAppcyBkZWZpbmVkIHRvIGJlIHNpZ25lZCAzMi1iaXQgKG9uIHg4 NikgKG1heCBkaXNwbGFjZW1lbnQgaGVuY2UKaXMgMkdCIHZpcnR1YWwgc3BhY2UsIEFSTTMyIGlz IDEyOE1CKS4gVGhlIGRpc3BsYWNlbWVudCBvZiB0aGUKaHlwZXJ2aXNvciB2aXJ0dWFsIGFkZHJl c3NlcyB0byB0aGUgdm1hbGxvYyAob24geDg2KQppcyBtb3JlIHRoYW4gMzItYml0cyAtIHdoaWNo IG1lYW5zIHRoYXQgRUxGIHJlbG9jYXRpb25zIHdvdWxkCnRydW5jYXRlIHRoZSAzNCBhbmQgMzN0 aCBiaXQuIEhlbmNlIHRoaXMgYWx0ZXJuYXRlIEFQSS4KCldlIGFsc28gYWRkIGFkZCBleHRyYSBj aGVja3MgaW4gY2FzZSB0aGUgYikgcmFuZ2UgaGFzIG5vdCBiZWVuCmluaXRpYWxpemVkLgoKUGFy dCBvZiB0aGlzIHBhdGNoIGFsc28gcmVtb3ZlcyAndm1fYWxsb2MnIGFuZCAndm1fZnJlZScKZGVj bGVyYXRpb24gYXMgd2UgZG8gbm90IGhhdmUgYW55IHVzZXJzIG9mIGl0LgoKU2lnbmVkLW9mZi1i eTogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgpTdWdnZXN0 ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQWNrZWQtYnk6IEp1bGllbiBH cmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+IFtBUk1dCgotLS0KQ2M6IElhbiBKYWNrc29uIDxp YW4uamFja3NvbkBldS5jaXRyaXguY29tPgpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2Uu Y29tPgpDYzogS2VpciBGcmFzZXIgPGtlaXJAeGVuLm9yZz4KQ2M6IFRpbSBEZWVnYW4gPHRpbUB4 ZW4ub3JnPgpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgpD YzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KCnY0OiBOZXcgcGF0Y2guCnY1 OiBVcGRhdGUgcGVyIEphbidzIGNvbW1lbnRzLgp2NjogRHJvcCB0aGUgc3RyYXkgcGFyZW50aGVz ZXMgb24gdHlwZWRlZnMuCiAgICBEaXRjaCB0aGUgdnVubWFwIGNhbGxiYWNrLiBTdGFzaCBhd2F5 IHRoZSB2aXJ0dWFsIGFkZHJlc3NlcyBpbiBsaXN0cy4KICAgIERpdGNoIHRoZSB2bWFwIGNhbGxi YWNrLiBKdXN0IHByb3ZpZGUgdmlydHVhbCBhZGRyZXNzLgogICAgRGl0Y2ggdGhlIHZtYWxsb2Nf cmFuZ2UuIFJlcXVpcmUgdXNlcnMgb2YgYWx0ZXJuYXRpdmUgdmlydHVhbCBhZGRyZXNzCiAgICB0 byBjYWxsIHZtYXBfaW5pdF90eXBlIGZpcnN0Lgp2NzogRG9uJ3QgZXhwb3NlIHRoZSB2bWFsbG9j X3R5cGUgYW5kIHN1Y2guIEluc3RlYWQgcHJvdmlkZSBhbiB3cmFwcGVyCiAgICBjYWxsZWQgdm1h bGxvY194ZW4gZm9yIHRob3NlLgogICAgUmVuYW1lIHRoZSBlbnVtLCBjaGFuZ2Ugb25lIG9mIHRo ZSBuYW1lcy4KICAgIE1vdmVkIHRoZSB2dW5tYXBfdHlwZSBhcm91bmQgaW4gYyBmaWxlIHNvIHdl IGRvbid0IGhhdmUgdG8gZGVjbGFyZQogICAgaXQgaW4gdGhlIGhlYWRlci4Kdjk6IFJlbW92ZSB0 aGUgdnVubWFwX3hlbiwgcmVtb3ZlZCB2bV9hbGxvYyBmcm9tIGhlYWRlci4KICAgIEFkZCB2emFs bG9jX3hlbgp2MTA6CiAgICBQcm9wZXJseSBBU1NFUlQgb24gcmFuZ2VzCiAgICBNYWtlIHZtX2Zy ZWUgYW5kIHZ1bm1hcCBhdXRvbWF0aWNhbGx5IGRldGVjdCB0aGUgcmlnaHQgdmEgc3BhY2UuCiAg ICBSZW1vdmUgZnJvbSBoZWFkZXIgdm1fZnJlZS4gUmVuYW1lIHZtX2FsbG9jX3R5cGUgYW5kIHZt X2ZyZWVfdHlwZQogICAgdG8gIHZtX2FsbG9jIGFuZCB2bV9mcmVlIHJlc3BlY3RpdmVseS4KdjEw IC0gaW5saW5lIHBhdGNoIHNldCBpbiB2ODoKICAgIERpdGNoIHRoZSB2emFsbG9jX3hlbgogICAg U3F1YXNoIHZ1bm1hcCBhbmQgdnVubWFwX3BhZ2VzIHRvZ2V0aGVyLiBNb3ZlIGJhY2sgdG8gb3Jp Z2luYWwgcG9zaXRpb24uCiAgICBEcm9wIHZ6YWxsb2NfdHlwZSBhbmQgb25seSBleHBvc2Ugdnph bGxvYy4KLS0tCiB4ZW4vYXJjaC9hcm0va2VybmVsLmMgIHwgICAyICstCiB4ZW4vYXJjaC9hcm0v bW0uYyAgICAgIHwgICAyICstCiB4ZW4vYXJjaC94ODYvbW0uYyAgICAgIHwgICAyICstCiB4ZW4v Y29tbW9uL3ZtYXAuYyAgICAgIHwgMTY5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9kcml2ZXJzL2FjcGkvb3NsLmMgfCAgIDIgKy0KIHhlbi9p bmNsdWRlL3hlbi92bWFwLmggfCAgMjEgKysrKy0tCiA2IGZpbGVzIGNoYW5nZWQsIDEyNSBpbnNl cnRpb25zKCspLCA3MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0va2Vy bmVsLmMgYi94ZW4vYXJjaC9hcm0va2VybmVsLmMKaW5kZXggNjE4MDhhYy4uOTg3MWJkOSAxMDA2 NDQKLS0tIGEveGVuL2FyY2gvYXJtL2tlcm5lbC5jCisrKyBiL3hlbi9hcmNoL2FybS9rZXJuZWwu YwpAQCAtMjk5LDcgKzI5OSw3IEBAIHN0YXRpYyBfX2luaXQgaW50IGtlcm5lbF9kZWNvbXByZXNz KHN0cnVjdCBib290bW9kdWxlICptb2QpCiAgICAgICAgIHJldHVybiAtRU5PTUVNOwogICAgIH0K ICAgICBtZm4gPSBfbWZuKHBhZ2VfdG9fbWZuKHBhZ2VzKSk7Ci0gICAgb3V0cHV0ID0gX192bWFw KCZtZm4sIDEgPDwga2VybmVsX29yZGVyX291dCwgMSwgMSwgUEFHRV9IWVBFUlZJU09SKTsKKyAg ICBvdXRwdXQgPSBfX3ZtYXAoJm1mbiwgMSA8PCBrZXJuZWxfb3JkZXJfb3V0LCAxLCAxLCBQQUdF X0hZUEVSVklTT1IsIFZNQVBfREVGQVVMVCk7CiAKICAgICByYyA9IHBlcmZvcm1fZ3VuemlwKG91 dHB1dCwgaW5wdXQsIHNpemUpOwogICAgIGNsZWFuX2RjYWNoZV92YV9yYW5nZShvdXRwdXQsIG91 dHB1dF9zaXplKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9tbS5jIGIveGVuL2FyY2gvYXJt L21tLmMKaW5kZXggNzA2NWMzZS4uOTRlYTA1NCAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL21t LmMKKysrIGIveGVuL2FyY2gvYXJtL21tLmMKQEAgLTgwNyw3ICs4MDcsNyBAQCB2b2lkICppb3Jl bWFwX2F0dHIocGFkZHJfdCBwYSwgc2l6ZV90IGxlbiwgdW5zaWduZWQgaW50IGF0dHJpYnV0ZXMp CiAgICAgbWZuX3QgbWZuID0gX21mbihQRk5fRE9XTihwYSkpOwogICAgIHVuc2lnbmVkIGludCBv ZmZzID0gcGEgJiAoUEFHRV9TSVpFIC0gMSk7CiAgICAgdW5zaWduZWQgaW50IG5yID0gUEZOX1VQ KG9mZnMgKyBsZW4pOwotICAgIHZvaWQgKnB0ciA9IF9fdm1hcCgmbWZuLCBuciwgMSwgMSwgYXR0 cmlidXRlcyk7CisgICAgdm9pZCAqcHRyID0gX192bWFwKCZtZm4sIG5yLCAxLCAxLCBhdHRyaWJ1 dGVzLCBWTUFQX0RFRkFVTFQpOwogCiAgICAgaWYgKCBwdHIgPT0gTlVMTCApCiAgICAgICAgIHJl dHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tLmMgYi94ZW4vYXJjaC94ODYv bW0uYwppbmRleCBhNDIwOTdmLi4yYmI5MjBiIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0u YworKysgYi94ZW4vYXJjaC94ODYvbW0uYwpAQCAtNjE3OSw3ICs2MTc5LDcgQEAgdm9pZCBfX2lv bWVtICppb3JlbWFwKHBhZGRyX3QgcGEsIHNpemVfdCBsZW4pCiAgICAgICAgIHVuc2lnbmVkIGlu dCBvZmZzID0gcGEgJiAoUEFHRV9TSVpFIC0gMSk7CiAgICAgICAgIHVuc2lnbmVkIGludCBuciA9 IFBGTl9VUChvZmZzICsgbGVuKTsKIAotICAgICAgICB2YSA9IF9fdm1hcCgmbWZuLCBuciwgMSwg MSwgUEFHRV9IWVBFUlZJU09SX05PQ0FDSEUpICsgb2ZmczsKKyAgICAgICAgdmEgPSBfX3ZtYXAo Jm1mbiwgbnIsIDEsIDEsIFBBR0VfSFlQRVJWSVNPUl9OT0NBQ0hFLCBWTUFQX0RFRkFVTFQpICsg b2ZmczsKICAgICB9CiAKICAgICByZXR1cm4gKHZvaWQgX19mb3JjZSBfX2lvbWVtICopdmE7CmRp ZmYgLS1naXQgYS94ZW4vY29tbW9uL3ZtYXAuYyBiL3hlbi9jb21tb24vdm1hcC5jCmluZGV4IDEz NGVkYTAuLjIzOTNkZjEgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vdm1hcC5jCisrKyBiL3hlbi9j b21tb24vdm1hcC5jCkBAIC0xMCw0MCArMTAsNDMgQEAKICNpbmNsdWRlIDxhc20vcGFnZS5oPgog CiBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHZtX2xvY2spOwotc3RhdGljIHZvaWQgKl9fcmVhZF9t b3N0bHkgdm1fYmFzZTsKLSNkZWZpbmUgdm1fYml0bWFwICgodW5zaWduZWQgbG9uZyAqKXZtX2Jh c2UpCitzdGF0aWMgdm9pZCAqX19yZWFkX21vc3RseSB2bV9iYXNlW1ZNQVBfUkVHSU9OX05SXTsK KyNkZWZpbmUgdm1fYml0bWFwKHgpICgodW5zaWduZWQgbG9uZyAqKXZtX2Jhc2VbeF0pCiAvKiBo aWdoZXN0IGFsbG9jYXRlZCBiaXQgaW4gdGhlIGJpdG1hcCAqLwotc3RhdGljIHVuc2lnbmVkIGlu dCBfX3JlYWRfbW9zdGx5IHZtX3RvcDsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgX19yZWFkX21vc3Rs eSB2bV90b3BbVk1BUF9SRUdJT05fTlJdOwogLyogdG90YWwgbnVtYmVyIG9mIGJpdHMgaW4gdGhl IGJpdG1hcCAqLwotc3RhdGljIHVuc2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IHZtX2VuZDsKK3N0 YXRpYyB1bnNpZ25lZCBpbnQgX19yZWFkX21vc3RseSB2bV9lbmRbVk1BUF9SRUdJT05fTlJdOwog LyogbG93ZXN0IGtub3duIGNsZWFyIGJpdCBpbiB0aGUgYml0bWFwICovCi1zdGF0aWMgdW5zaWdu ZWQgaW50IHZtX2xvdzsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgdm1fbG93W1ZNQVBfUkVHSU9OX05S XTsKIAotdm9pZCBfX2luaXQgdm1faW5pdCh2b2lkKQordm9pZCBfX2luaXQgdm1faW5pdF90eXBl KGVudW0gdm1hcF9yZWdpb24gdHlwZSwgdm9pZCAqc3RhcnQsIHZvaWQgKmVuZCkKIHsKICAgICB1 bnNpZ25lZCBpbnQgaSwgbnI7CiAgICAgdW5zaWduZWQgbG9uZyB2YTsKIAotICAgIHZtX2Jhc2Ug PSAodm9pZCAqKVZNQVBfVklSVF9TVEFSVDsKLSAgICB2bV9lbmQgPSBQRk5fRE9XTihhcmNoX3Zt YXBfdmlydF9lbmQoKSAtIHZtX2Jhc2UpOwotICAgIHZtX2xvdyA9IFBGTl9VUCgodm1fZW5kICsg NykgLyA4KTsKLSAgICBuciA9IFBGTl9VUCgodm1fbG93ICsgNykgLyA4KTsKLSAgICB2bV90b3Ag PSBuciAqIFBBR0VfU0laRSAqIDg7CisgICAgQVNTRVJUKCF2bV9iYXNlW3R5cGVdKTsKIAotICAg IGZvciAoIGkgPSAwLCB2YSA9ICh1bnNpZ25lZCBsb25nKXZtX2JpdG1hcDsgaSA8IG5yOyArK2ks IHZhICs9IFBBR0VfU0laRSApCisgICAgdm1fYmFzZVt0eXBlXSA9IHN0YXJ0OworICAgIHZtX2Vu ZFt0eXBlXSA9IFBGTl9ET1dOKGVuZCAtIHN0YXJ0KTsKKyAgICB2bV9sb3dbdHlwZV09IFBGTl9V UCgodm1fZW5kW3R5cGVdICsgNykgLyA4KTsKKyAgICBuciA9IFBGTl9VUCgodm1fbG93W3R5cGVd ICsgNykgLyA4KTsKKyAgICB2bV90b3BbdHlwZV0gPSBuciAqIFBBR0VfU0laRSAqIDg7CisKKyAg ICBmb3IgKCBpID0gMCwgdmEgPSAodW5zaWduZWQgbG9uZyl2bV9iaXRtYXAodHlwZSk7IGkgPCBu cjsgKytpLCB2YSArPSBQQUdFX1NJWkUgKQogICAgIHsKICAgICAgICAgc3RydWN0IHBhZ2VfaW5m byAqcGcgPSBhbGxvY19kb21oZWFwX3BhZ2UoTlVMTCwgMCk7CiAKICAgICAgICAgbWFwX3BhZ2Vz X3RvX3hlbih2YSwgcGFnZV90b19tZm4ocGcpLCAxLCBQQUdFX0hZUEVSVklTT1IpOwogICAgICAg ICBjbGVhcl9wYWdlKCh2b2lkICopdmEpOwogICAgIH0KLSAgICBiaXRtYXBfZmlsbCh2bV9iaXRt YXAsIHZtX2xvdyk7CisgICAgYml0bWFwX2ZpbGwodm1fYml0bWFwKHR5cGUpLCB2bV9sb3dbdHlw ZV0pOwogCiAgICAgLyogUG9wdWxhdGUgcGFnZSB0YWJsZXMgZm9yIHRoZSBiaXRtYXAgaWYgbmVj ZXNzYXJ5LiAqLwotICAgIHBvcHVsYXRlX3B0X3JhbmdlKHZhLCAwLCB2bV9sb3cgLSBucik7Cisg ICAgcG9wdWxhdGVfcHRfcmFuZ2UodmEsIDAsIHZtX2xvd1t0eXBlXSAtIG5yKTsKIH0KIAotdm9p ZCAqdm1fYWxsb2ModW5zaWduZWQgaW50IG5yLCB1bnNpZ25lZCBpbnQgYWxpZ24pCitzdGF0aWMg dm9pZCAqdm1fYWxsb2ModW5zaWduZWQgaW50IG5yLCB1bnNpZ25lZCBpbnQgYWxpZ24sCisgICAg ICAgICAgICAgICAgICAgICAgZW51bSB2bWFwX3JlZ2lvbiB0KQogewogICAgIHVuc2lnbmVkIGlu dCBzdGFydCwgYml0OwogCkBAIC01MiwyNyArNTUsMzEgQEAgdm9pZCAqdm1fYWxsb2ModW5zaWdu ZWQgaW50IG5yLCB1bnNpZ25lZCBpbnQgYWxpZ24pCiAgICAgZWxzZSBpZiAoIGFsaWduICYgKGFs aWduIC0gMSkgKQogICAgICAgICBhbGlnbiAmPSAtYWxpZ247CiAKKyAgICBBU1NFUlQoKHQgPj0g Vk1BUF9ERUZBVUxUKSAmJiAodCA8IFZNQVBfUkVHSU9OX05SKSk7CisgICAgaWYgKCAhdm1fYmFz ZVt0XSApCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgc3Bpbl9sb2NrKCZ2bV9sb2NrKTsK ICAgICBmb3IgKCA7IDsgKQogICAgIHsKICAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGc7CiAK LSAgICAgICAgQVNTRVJUKHZtX2xvdyA9PSB2bV90b3AgfHwgIXRlc3RfYml0KHZtX2xvdywgdm1f Yml0bWFwKSk7Ci0gICAgICAgIGZvciAoIHN0YXJ0ID0gdm1fbG93OyBzdGFydCA8IHZtX3RvcDsg KQorICAgICAgICBBU1NFUlQodm1fbG93W3RdID09IHZtX3RvcFt0XSB8fCAhdGVzdF9iaXQodm1f bG93W3RdLCB2bV9iaXRtYXAodCkpKTsKKyAgICAgICAgZm9yICggc3RhcnQgPSB2bV9sb3dbdF07 IHN0YXJ0IDwgdm1fdG9wW3RdOyApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGJpdCA9IGZpbmRf bmV4dF9iaXQodm1fYml0bWFwLCB2bV90b3AsIHN0YXJ0ICsgMSk7Ci0gICAgICAgICAgICBpZiAo IGJpdCA+IHZtX3RvcCApCi0gICAgICAgICAgICAgICAgYml0ID0gdm1fdG9wOworICAgICAgICAg ICAgYml0ID0gZmluZF9uZXh0X2JpdCh2bV9iaXRtYXAodCksIHZtX3RvcFt0XSwgc3RhcnQgKyAx KTsKKyAgICAgICAgICAgIGlmICggYml0ID4gdm1fdG9wW3RdICkKKyAgICAgICAgICAgICAgICBi aXQgPSB2bV90b3BbdF07CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogTm90ZSB0aGF0 IHRoaXMgc2tpcHMgdGhlIGZpcnN0IGJpdCwgbWFraW5nIHRoZQogICAgICAgICAgICAgICogY29y cmVzcG9uZGluZyBwYWdlIGEgZ3VhcmQgb25lLgogICAgICAgICAgICAgICovCiAgICAgICAgICAg ICBzdGFydCA9IChzdGFydCArIGFsaWduKSAmIH4oYWxpZ24gLSAxKTsKLSAgICAgICAgICAgIGlm ICggYml0IDwgdm1fdG9wICkKKyAgICAgICAgICAgIGlmICggYml0IDwgdm1fdG9wW3RdICkKICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoIHN0YXJ0ICsgbnIgPCBiaXQgKQogICAg ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBzdGFydCA9IGZpbmRfbmV4 dF96ZXJvX2JpdCh2bV9iaXRtYXAsIHZtX3RvcCwgYml0ICsgMSk7CisgICAgICAgICAgICAgICAg c3RhcnQgPSBmaW5kX25leHRfemVyb19iaXQodm1fYml0bWFwKHQpLCB2bV90b3BbdF0sIGJpdCAr IDEpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewpAQCAt ODIsMTIgKzg5LDEyIEBAIHZvaWQgKnZtX2FsbG9jKHVuc2lnbmVkIGludCBuciwgdW5zaWduZWQg aW50IGFsaWduKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCBzdGFy dCA8IHZtX3RvcCApCisgICAgICAgIGlmICggc3RhcnQgPCB2bV90b3BbdF0gKQogICAgICAgICAg ICAgYnJlYWs7CiAKICAgICAgICAgc3Bpbl91bmxvY2soJnZtX2xvY2spOwogCi0gICAgICAgIGlm ICggdm1fdG9wID49IHZtX2VuZCApCisgICAgICAgIGlmICggdm1fdG9wW3RdID49IHZtX2VuZFt0 XSApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgICAgICBwZyA9IGFsbG9jX2RvbWhl YXBfcGFnZShOVUxMLCAwKTsKQEAgLTk2LDIzICsxMDMsMjMgQEAgdm9pZCAqdm1fYWxsb2ModW5z aWduZWQgaW50IG5yLCB1bnNpZ25lZCBpbnQgYWxpZ24pCiAKICAgICAgICAgc3Bpbl9sb2NrKCZ2 bV9sb2NrKTsKIAotICAgICAgICBpZiAoIHN0YXJ0ID49IHZtX3RvcCApCisgICAgICAgIGlmICgg c3RhcnQgPj0gdm1fdG9wW3RdICkKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyB2YSA9ICh1bnNpZ25lZCBsb25nKXZtX2JpdG1hcCArIHZtX3RvcCAvIDg7CisgICAgICAgICAg ICB1bnNpZ25lZCBsb25nIHZhID0gKHVuc2lnbmVkIGxvbmcpdm1fYml0bWFwKHQpICsgdm1fdG9w W3RdIC8gODsKIAogICAgICAgICAgICAgaWYgKCAhbWFwX3BhZ2VzX3RvX3hlbih2YSwgcGFnZV90 b19tZm4ocGcpLCAxLCBQQUdFX0hZUEVSVklTT1IpICkKICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICBjbGVhcl9wYWdlKCh2b2lkICopdmEpOwotICAgICAgICAgICAgICAgIHZtX3RvcCAr PSBQQUdFX1NJWkUgKiA4OwotICAgICAgICAgICAgICAgIGlmICggdm1fdG9wID4gdm1fZW5kICkK LSAgICAgICAgICAgICAgICAgICAgdm1fdG9wID0gdm1fZW5kOworICAgICAgICAgICAgICAgIHZt X3RvcFt0XSArPSBQQUdFX1NJWkUgKiA4OworICAgICAgICAgICAgICAgIGlmICggdm1fdG9wW3Rd ID4gdm1fZW5kW3RdICkKKyAgICAgICAgICAgICAgICAgICAgdm1fdG9wW3RdID0gdm1fZW5kW3Rd OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAK ICAgICAgICAgZnJlZV9kb21oZWFwX3BhZ2UocGcpOwogCi0gICAgICAgIGlmICggc3RhcnQgPj0g dm1fdG9wICkKKyAgICAgICAgaWYgKCBzdGFydCA+PSB2bV90b3BbdF0gKQogICAgICAgICB7CiAg ICAgICAgICAgICBzcGluX3VubG9jaygmdm1fbG9jayk7CiAgICAgICAgICAgICByZXR1cm4gTlVM TDsKQEAgLTEyMCw0NyArMTI3LDU4IEBAIHZvaWQgKnZtX2FsbG9jKHVuc2lnbmVkIGludCBuciwg dW5zaWduZWQgaW50IGFsaWduKQogICAgIH0KIAogICAgIGZvciAoIGJpdCA9IHN0YXJ0OyBiaXQg PCBzdGFydCArIG5yOyArK2JpdCApCi0gICAgICAgIF9fc2V0X2JpdChiaXQsIHZtX2JpdG1hcCk7 Ci0gICAgaWYgKCBiaXQgPCB2bV90b3AgKQotICAgICAgICBBU1NFUlQoIXRlc3RfYml0KGJpdCwg dm1fYml0bWFwKSk7CisgICAgICAgIF9fc2V0X2JpdChiaXQsIHZtX2JpdG1hcCh0KSk7CisgICAg aWYgKCBiaXQgPCB2bV90b3BbdF0gKQorICAgICAgICBBU1NFUlQoIXRlc3RfYml0KGJpdCwgdm1f Yml0bWFwKHQpKSk7CiAgICAgZWxzZQotICAgICAgICBBU1NFUlQoYml0ID09IHZtX3RvcCk7Ci0g ICAgaWYgKCBzdGFydCA8PSB2bV9sb3cgKyAyICkKLSAgICAgICAgdm1fbG93ID0gYml0OworICAg ICAgICBBU1NFUlQoYml0ID09IHZtX3RvcFt0XSk7CisgICAgaWYgKCBzdGFydCA8PSB2bV9sb3db dF0gKyAyICkKKyAgICAgICAgdm1fbG93W3RdID0gYml0OwogICAgIHNwaW5fdW5sb2NrKCZ2bV9s b2NrKTsKIAotICAgIHJldHVybiB2bV9iYXNlICsgc3RhcnQgKiBQQUdFX1NJWkU7CisgICAgcmV0 dXJuIHZtX2Jhc2VbdF0gKyBzdGFydCAqIFBBR0VfU0laRTsKIH0KIAotc3RhdGljIHVuc2lnbmVk IGludCB2bV9pbmRleChjb25zdCB2b2lkICp2YSkKK3N0YXRpYyB1bnNpZ25lZCBpbnQgdm1faW5k ZXgoY29uc3Qgdm9pZCAqdmEsIGVudW0gdm1hcF9yZWdpb24gdHlwZSkKIHsKICAgICB1bnNpZ25l ZCBsb25nIGFkZHIgPSAodW5zaWduZWQgbG9uZyl2YSAmIH4oUEFHRV9TSVpFIC0gMSk7CiAgICAg dW5zaWduZWQgaW50IGlkeDsKKyAgICB1bnNpZ25lZCBsb25nIHN0YXJ0ID0gKHVuc2lnbmVkIGxv bmcpdm1fYmFzZVt0eXBlXTsKKworICAgIGlmICggIXN0YXJ0ICkKKyAgICAgICAgcmV0dXJuIDA7 CiAKLSAgICBpZiAoIGFkZHIgPCBWTUFQX1ZJUlRfU1RBUlQgKyAodm1fZW5kIC8gOCkgfHwKLSAg ICAgICAgIGFkZHIgPj0gVk1BUF9WSVJUX1NUQVJUICsgdm1fdG9wICogUEFHRV9TSVpFICkKKyAg ICBpZiAoIGFkZHIgPCBzdGFydCArICh2bV9lbmRbdHlwZV0gLyA4KSB8fAorICAgICAgICAgYWRk ciA+PSBzdGFydCArIHZtX3RvcFt0eXBlXSAqIFBBR0VfU0laRSApCiAgICAgICAgIHJldHVybiAw OwogCi0gICAgaWR4ID0gUEZOX0RPV04odmEgLSB2bV9iYXNlKTsKLSAgICByZXR1cm4gIXRlc3Rf Yml0KGlkeCAtIDEsIHZtX2JpdG1hcCkgJiYKLSAgICAgICAgICAgdGVzdF9iaXQoaWR4LCB2bV9i aXRtYXApID8gaWR4IDogMDsKKyAgICBpZHggPSBQRk5fRE9XTih2YSAtIHZtX2Jhc2VbdHlwZV0p OworICAgIHJldHVybiAhdGVzdF9iaXQoaWR4IC0gMSwgdm1fYml0bWFwKHR5cGUpKSAmJgorICAg ICAgICAgICB0ZXN0X2JpdChpZHgsIHZtX2JpdG1hcCh0eXBlKSkgPyBpZHggOiAwOwogfQogCi1z dGF0aWMgdW5zaWduZWQgaW50IHZtX3NpemUoY29uc3Qgdm9pZCAqdmEpCitzdGF0aWMgdW5zaWdu ZWQgaW50IHZtX3NpemUoY29uc3Qgdm9pZCAqdmEsIGVudW0gdm1hcF9yZWdpb24gdHlwZSkKIHsK LSAgICB1bnNpZ25lZCBpbnQgc3RhcnQgPSB2bV9pbmRleCh2YSksIGVuZDsKKyAgICB1bnNpZ25l ZCBpbnQgc3RhcnQgPSB2bV9pbmRleCh2YSwgdHlwZSksIGVuZDsKIAogICAgIGlmICggIXN0YXJ0 ICkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBlbmQgPSBmaW5kX25leHRfemVyb19iaXQodm1f Yml0bWFwLCB2bV90b3AsIHN0YXJ0ICsgMSk7CisgICAgZW5kID0gZmluZF9uZXh0X3plcm9fYml0 KHZtX2JpdG1hcCh0eXBlKSwgdm1fdG9wW3R5cGVdLCBzdGFydCArIDEpOwogCi0gICAgcmV0dXJu IG1pbihlbmQsIHZtX3RvcCkgLSBzdGFydDsKKyAgICByZXR1cm4gbWluKGVuZCwgdm1fdG9wW3R5 cGVdKSAtIHN0YXJ0OwogfQogCi12b2lkIHZtX2ZyZWUoY29uc3Qgdm9pZCAqdmEpCitzdGF0aWMg dm9pZCB2bV9mcmVlKGNvbnN0IHZvaWQgKnZhKQogewotICAgIHVuc2lnbmVkIGludCBiaXQgPSB2 bV9pbmRleCh2YSk7CisgICAgZW51bSB2bWFwX3JlZ2lvbiB0eXBlID0gVk1BUF9ERUZBVUxUOwor ICAgIHVuc2lnbmVkIGludCBiaXQgPSB2bV9pbmRleCh2YSwgdHlwZSk7CisKKyAgICBpZiAoICFi aXQgKQorICAgIHsKKyAgICAgICAgdHlwZSA9IFZNQVBfWEVOOworICAgICAgICBiaXQgPSB2bV9p bmRleCh2YSwgdHlwZSk7CisgICAgfQogCiAgICAgaWYgKCAhYml0ICkKICAgICB7CkBAIC0xNjks MjIgKzE4NywyMyBAQCB2b2lkIHZtX2ZyZWUoY29uc3Qgdm9pZCAqdmEpCiAgICAgfQogCiAgICAg c3Bpbl9sb2NrKCZ2bV9sb2NrKTsKLSAgICBpZiAoIGJpdCA8IHZtX2xvdyApCisgICAgaWYgKCBi aXQgPCB2bV9sb3dbdHlwZV0gKQogICAgIHsKLSAgICAgICAgdm1fbG93ID0gYml0IC0gMTsKLSAg ICAgICAgd2hpbGUgKCAhdGVzdF9iaXQodm1fbG93IC0gMSwgdm1fYml0bWFwKSApCi0gICAgICAg ICAgICAtLXZtX2xvdzsKKyAgICAgICAgdm1fbG93W3R5cGVdID0gYml0IC0gMTsKKyAgICAgICAg d2hpbGUgKCAhdGVzdF9iaXQodm1fbG93W3R5cGVdIC0gMSwgdm1fYml0bWFwKHR5cGUpKSApCisg ICAgICAgICAgICAtLXZtX2xvd1t0eXBlXTsKICAgICB9Ci0gICAgd2hpbGUgKCBfX3Rlc3RfYW5k X2NsZWFyX2JpdChiaXQsIHZtX2JpdG1hcCkgKQotICAgICAgICBpZiAoICsrYml0ID09IHZtX3Rv cCApCisgICAgd2hpbGUgKCBfX3Rlc3RfYW5kX2NsZWFyX2JpdChiaXQsIHZtX2JpdG1hcCh0eXBl KSkgKQorICAgICAgICBpZiAoICsrYml0ID09IHZtX3RvcFt0eXBlXSApCiAgICAgICAgICAgICBi cmVhazsKICAgICBzcGluX3VubG9jaygmdm1fbG9jayk7CiB9CiAKIHZvaWQgKl9fdm1hcChjb25z dCBtZm5fdCAqbWZuLCB1bnNpZ25lZCBpbnQgZ3JhbnVsYXJpdHksCi0gICAgICAgICAgICAgdW5z aWduZWQgaW50IG5yLCB1bnNpZ25lZCBpbnQgYWxpZ24sIHVuc2lnbmVkIGludCBmbGFncykKKyAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnIsIHVuc2lnbmVkIGludCBhbGlnbiwgdW5zaWduZWQg aW50IGZsYWdzLAorICAgICAgICAgICAgIGVudW0gdm1hcF9yZWdpb24gdHlwZSkKIHsKLSAgICB2 b2lkICp2YSA9IHZtX2FsbG9jKG5yICogZ3JhbnVsYXJpdHksIGFsaWduKTsKKyAgICB2b2lkICp2 YSA9IHZtX2FsbG9jKG5yICogZ3JhbnVsYXJpdHksIGFsaWduLCB0eXBlKTsKICAgICB1bnNpZ25l ZCBsb25nIGN1ciA9ICh1bnNpZ25lZCBsb25nKXZhOwogCiAgICAgZm9yICggOyB2YSAmJiBuci0t OyArK21mbiwgY3VyICs9IFBBR0VfU0laRSAqIGdyYW51bGFyaXR5ICkKQEAgLTIwMSwyMiArMjIw LDI4IEBAIHZvaWQgKl9fdm1hcChjb25zdCBtZm5fdCAqbWZuLCB1bnNpZ25lZCBpbnQgZ3JhbnVs YXJpdHksCiAKIHZvaWQgKnZtYXAoY29uc3QgbWZuX3QgKm1mbiwgdW5zaWduZWQgaW50IG5yKQog ewotICAgIHJldHVybiBfX3ZtYXAobWZuLCAxLCBuciwgMSwgUEFHRV9IWVBFUlZJU09SKTsKKyAg ICByZXR1cm4gX192bWFwKG1mbiwgMSwgbnIsIDEsIFBBR0VfSFlQRVJWSVNPUiwgVk1BUF9ERUZB VUxUKTsKIH0KIAogdm9pZCB2dW5tYXAoY29uc3Qgdm9pZCAqdmEpCiB7CiAjaWZuZGVmIF9QQUdF X05PTkUKICAgICB1bnNpZ25lZCBsb25nIGFkZHIgPSAodW5zaWduZWQgbG9uZyl2YTsKKyNlbmRp ZgorICAgIHVuc2lnbmVkIGludCBwYWdlcyA9IHZtX3NpemUodmEsIFZNQVBfREVGQVVMVCk7CisK KyAgICBpZiAoICFwYWdlcyApCisgICAgICAgIHBhZ2VzID0gdm1fc2l6ZSh2YSwgVk1BUF9YRU4p OwogCi0gICAgZGVzdHJveV94ZW5fbWFwcGluZ3MoYWRkciwgYWRkciArIFBBR0VfU0laRSAqIHZt X3NpemUodmEpKTsKKyNpZm5kZWYgX1BBR0VfTk9ORQorICAgIGRlc3Ryb3lfeGVuX21hcHBpbmdz KGFkZHIsIGFkZHIgKyBQQUdFX1NJWkUgKiBwYWdlcyk7CiAjZWxzZSAvKiBBdm9pZCB0ZWFyaW5n IGRvd24gaW50ZXJtZWRpYXRlIHBhZ2UgdGFibGVzLiAqLwotICAgIG1hcF9wYWdlc190b194ZW4o KHVuc2lnbmVkIGxvbmcpdmEsIDAsIHZtX3NpemUodmEpLCBfUEFHRV9OT05FKTsKKyAgICBtYXBf cGFnZXNfdG9feGVuKCh1bnNpZ25lZCBsb25nKXZhLCAwLCBwYWdlcywgX1BBR0VfTk9ORSk7CiAj ZW5kaWYKICAgICB2bV9mcmVlKHZhKTsKIH0KIAotdm9pZCAqdm1hbGxvYyhzaXplX3Qgc2l6ZSkK K3N0YXRpYyB2b2lkICp2bWFsbG9jX3R5cGUoc2l6ZV90IHNpemUsIGVudW0gdm1hcF9yZWdpb24g dHlwZSkKIHsKICAgICBtZm5fdCAqbWZuOwogICAgIHNpemVfdCBwYWdlcywgaTsKQEAgLTIzOCw3 ICsyNjMsNyBAQCB2b2lkICp2bWFsbG9jKHNpemVfdCBzaXplKQogICAgICAgICBtZm5baV0gPSBf bWZuKHBhZ2VfdG9fbWZuKHBnKSk7CiAgICAgfQogCi0gICAgdmEgPSB2bWFwKG1mbiwgcGFnZXMp OworICAgIHZhID0gX192bWFwKG1mbiwgMSwgcGFnZXMsIDEsIFBBR0VfSFlQRVJWSVNPUiwgdHlw ZSk7CiAgICAgaWYgKCB2YSA9PSBOVUxMICkKICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtMjUy LDkgKzI3NywxOSBAQCB2b2lkICp2bWFsbG9jKHNpemVfdCBzaXplKQogICAgIHJldHVybiBOVUxM OwogfQogCit2b2lkICp2bWFsbG9jKHNpemVfdCBzaXplKQoreworICAgIHJldHVybiB2bWFsbG9j X3R5cGUoc2l6ZSwgVk1BUF9ERUZBVUxUKTsKK30KKwordm9pZCAqdm1hbGxvY194ZW4oc2l6ZV90 IHNpemUpCit7CisgICAgcmV0dXJuIHZtYWxsb2NfdHlwZShzaXplLCBWTUFQX1hFTik7Cit9CisK IHZvaWQgKnZ6YWxsb2Moc2l6ZV90IHNpemUpCiB7Ci0gICAgdm9pZCAqcCA9IHZtYWxsb2Moc2l6 ZSk7CisgICAgdm9pZCAqcCA9IHZtYWxsb2NfdHlwZShzaXplLCBWTUFQX0RFRkFVTFQpOwogICAg IGludCBpOwogCiAgICAgaWYgKCBwID09IE5VTEwgKQpAQCAtMjcxLDExICszMDYsMTcgQEAgdm9p ZCB2ZnJlZSh2b2lkICp2YSkKICAgICB1bnNpZ25lZCBpbnQgaSwgcGFnZXM7CiAgICAgc3RydWN0 IHBhZ2VfaW5mbyAqcGc7CiAgICAgUEFHRV9MSVNUX0hFQUQocGdfbGlzdCk7CisgICAgZW51bSB2 bWFwX3JlZ2lvbiB0eXBlID0gVk1BUF9ERUZBVUxUOwogCiAgICAgaWYgKCAhdmEgKQogICAgICAg ICByZXR1cm47CiAKLSAgICBwYWdlcyA9IHZtX3NpemUodmEpOworICAgIHBhZ2VzID0gdm1fc2l6 ZSh2YSwgdHlwZSk7CisgICAgaWYgKCAhcGFnZXMgKQorICAgIHsKKyAgICAgICAgdHlwZSA9IFZN QVBfWEVOOworICAgICAgICBwYWdlcyA9IHZtX3NpemUodmEsIHR5cGUpOworICAgIH0KICAgICBB U1NFUlQocGFnZXMpOwogCiAgICAgZm9yICggaSA9IDA7IGkgPCBwYWdlczsgaSsrICkKZGlmZiAt LWdpdCBhL3hlbi9kcml2ZXJzL2FjcGkvb3NsLmMgYi94ZW4vZHJpdmVycy9hY3BpL29zbC5jCmlu ZGV4IDhhMjhkODcuLjlhNDkwMjkgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL2FjcGkvb3NsLmMK KysrIGIveGVuL2RyaXZlcnMvYWNwaS9vc2wuYwpAQCAtOTcsNyArOTcsNyBAQCBhY3BpX29zX21h cF9tZW1vcnkoYWNwaV9waHlzaWNhbF9hZGRyZXNzIHBoeXMsIGFjcGlfc2l6ZSBzaXplKQogCQlp ZiAoSVNfRU5BQkxFRChDT05GSUdfWDg2KSAmJiAhKChwaHlzICsgc2l6ZSAtIDEpID4+IDIwKSkK IAkJCXJldHVybiBfX3ZhKHBoeXMpOwogCQlyZXR1cm4gX192bWFwKCZtZm4sIFBGTl9VUChvZmZz ICsgc2l6ZSksIDEsIDEsCi0JCQkgICAgICBBQ1BJX01BUF9NRU1fQVRUUikgKyBvZmZzOworCQkJ ICAgICAgQUNQSV9NQVBfTUVNX0FUVFIsIFZNQVBfREVGQVVMVCkgKyBvZmZzOwogCX0KIAlyZXR1 cm4gX19hY3BpX21hcF90YWJsZShwaHlzLCBzaXplKTsKIH0KZGlmZiAtLWdpdCBhL3hlbi9pbmNs dWRlL3hlbi92bWFwLmggYi94ZW4vaW5jbHVkZS94ZW4vdm1hcC5oCmluZGV4IDU2NzFhYzguLjM2 OTU2MGUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi92bWFwLmgKKysrIGIveGVuL2luY2x1 ZGUveGVuL3ZtYXAuaApAQCAtNCwxNCArNCwyMiBAQAogI2luY2x1ZGUgPHhlbi9tbS5oPgogI2lu Y2x1ZGUgPGFzbS9wYWdlLmg+CiAKLXZvaWQgKnZtX2FsbG9jKHVuc2lnbmVkIGludCBuciwgdW5z aWduZWQgaW50IGFsaWduKTsKLXZvaWQgdm1fZnJlZShjb25zdCB2b2lkICopOworZW51bSB2bWFw X3JlZ2lvbiB7CisgICAgVk1BUF9ERUZBVUxULAorICAgIFZNQVBfWEVOLAorICAgIFZNQVBfUkVH SU9OX05SLAorfTsKIAotdm9pZCAqX192bWFwKGNvbnN0IG1mbl90ICptZm4sIHVuc2lnbmVkIGlu dCBncmFudWxhcml0eSwKLSAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnIsIHVuc2lnbmVkIGlu dCBhbGlnbiwgdW5zaWduZWQgaW50IGZsYWdzKTsKK3ZvaWQgdm1faW5pdF90eXBlKGVudW0gdm1h cF9yZWdpb24gdHlwZSwgdm9pZCAqc3RhcnQsIHZvaWQgKmVuZCk7CisKK3ZvaWQgKl9fdm1hcChj b25zdCBtZm5fdCAqbWZuLCB1bnNpZ25lZCBpbnQgZ3JhbnVsYXJpdHksIHVuc2lnbmVkIGludCBu ciwKKyAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYWxpZ24sIHVuc2lnbmVkIGludCBmbGFncywg ZW51bSB2bWFwX3JlZ2lvbik7CiB2b2lkICp2bWFwKGNvbnN0IG1mbl90ICptZm4sIHVuc2lnbmVk IGludCBucik7CiB2b2lkIHZ1bm1hcChjb25zdCB2b2lkICopOworCiB2b2lkICp2bWFsbG9jKHNp emVfdCBzaXplKTsKK3ZvaWQgKnZtYWxsb2NfeGVuKHNpemVfdCBzaXplKTsKKwogdm9pZCAqdnph bGxvYyhzaXplX3Qgc2l6ZSk7CiB2b2lkIHZmcmVlKHZvaWQgKnZhKTsKIApAQCAtMjQsNyArMzIs MTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGlvdW5tYXAodm9pZCBfX2lvbWVtICp2YSkKICAgICB2 dW5tYXAoKHZvaWQgKikoYWRkciAmIFBBR0VfTUFTSykpOwogfQogCi12b2lkIHZtX2luaXQodm9p ZCk7CiB2b2lkICphcmNoX3ZtYXBfdmlydF9lbmQodm9pZCk7CitzdGF0aWMgaW5saW5lIHZvaWQg dm1faW5pdCh2b2lkKQoreworICAgIHZtX2luaXRfdHlwZShWTUFQX0RFRkFVTFQsICh2b2lkICop Vk1BUF9WSVJUX1NUQVJULCBhcmNoX3ZtYXBfdmlydF9lbmQoKSk7Cit9CiAKICNlbmRpZiAvKiBf X1hFTl9WTUFQX0hfXyAqLwotLSAKMi40LjMKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=