From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v4 07/34] arm/x86: Use struct virtual_region to do bug, symbol, and (x86) exception tables Date: Tue, 22 Mar 2016 16:18:44 -0400 Message-ID: <20160322201844.GA31231@char.us.oracle.com> References: <1458064616-23101-1-git-send-email-konrad.wilk@oracle.com> <1458064616-23101-8-git-send-email-konrad.wilk@oracle.com> <56EC0B9702000078000DE5A6@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.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aiSmY-0001yV-OJ for xen-devel@lists.xenproject.org; Tue, 22 Mar 2016 20:20:02 +0000 Content-Disposition: inline In-Reply-To: <56EC0B9702000078000DE5A6@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: Keir Fraser , ross.lagerwall@citrix.com, andrew.cooper3@citrix.com, mpohlack@amazon.de, Julien Grall , Stefano Stabellini , sasha.levin@oracle.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org LiBzbmlwLi4KPiA+ICtzdHJ1Y3QgdmlydHVhbF9yZWdpb24ga2VybmVsX3RleHQgPSB7Cj4gCj4g c3RhdGljCj4gCj4gPiArICAgIC5saXN0ID0gTElTVF9IRUFEX0lOSVQoa2VybmVsX3RleHQubGlz dCksCj4gPiArICAgIC5zdGFydCA9ICh1bnNpZ25lZCBsb25nKV9zdGV4dCwKPiA+ICsgICAgLmVu ZCA9ICh1bnNpZ25lZCBsb25nKV9ldGV4dCwKPiA+ICsjaWZkZWYgQ09ORklHX1g4Ngo+ID4gKyAg ICAuZXggPSAoc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqKV9fc3RhcnRfX19leF90YWJs ZSwKPiA+ICsgICAgLmV4X2VuZCA9IChzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICopX19z dG9wX19fZXhfdGFibGUsCj4gPiArI2VuZGlmCj4gCj4gSXMgdGhpcyB0b2dldGhlciB3aXRoIC4u Lgo+IAo+ID4gKy8qCj4gPiArICogQmVjb21lcyBpcnJlbGV2YW50IHdoZW4gX19pbml0IHNlY3Rp b25zIGFyZSBjbGVhcmVkLgo+ID4gKyAqLwo+ID4gK3N0cnVjdCB2aXJ0dWFsX3JlZ2lvbiBrZXJu ZWxfaW5pdHRleHQgID0gewo+ID4gKyAgICAubGlzdCA9IExJU1RfSEVBRF9JTklUKGtlcm5lbF9p bml0dGV4dC5saXN0KSwKPiA+ICsgICAgLnNraXAgPSBpZ25vcmVfaWZfYWN0aXZlLAo+ID4gKyAg ICAuc3RhcnQgPSAodW5zaWduZWQgbG9uZylfc2luaXR0ZXh0LAo+ID4gKyAgICAuZW5kID0gKHVu c2lnbmVkIGxvbmcpX2Vpbml0dGV4dCwKPiA+ICsjaWZkZWYgQ09ORklHX1g4Ngo+ID4gKyAgICAv KiBFdmVuIGlmIHRoZXkgYXJlIF9faW5pdCB0aGVpciBleGNlcHRpb24gZW50cnkgc3RpbGwgZ2V0 cyBzdHVjayBoZXJlLiAqLwo+ID4gKyAgICAuZXggPSAoc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9l bnRyeSAqKV9fc3RhcnRfX19leF90YWJsZSwKPiA+ICsgICAgLmV4X2VuZCA9IChzdHJ1Y3QgZXhj ZXB0aW9uX3RhYmxlX2VudHJ5ICopX19zdG9wX19fZXhfdGFibGUsCj4gPiArI2VuZGlmCj4gCj4g Li4uIHRoaXMgcmVhbGx5IGEgZ29vZCBpZGVhPyBJLmUuIGFyZSB0aGVyZSBub3QgZ29pbmcgdG8g YmUgYW55Cj4gb2RkIHNpZGUgZWZmZWN0cyBiZWNhdXNlIG9mIHRoYXQgcmVkdW5kYW5jeT8KCk5v bmUuIElmIHRoZSBFSVAgZmFsbHMgd2l0aGluIF9zdGV4dCBhbmQgX2V0ZXh0IHRoZW4gaXRzICdl eCcgdGFibGUKd2lsbCBiZSBzY2FubmVkLiBJZiBfaW5pdHRleHQgYW5kIF9laW5pdHRleHQgdGhl biB0aGlzIG9uZS4gQm90aCBvZgp0aGVtIGVuZCB1cCBzY2FubmluZyB0aGUgc2FtZSBleGFjdCBl eGNlcHRpb24gdGFibGUgKHdoaWNoIGlzIGtpbmQKc2lsbHkpIC0gYnV0IHRoZXJlIGFyZSBubyBz aWRlLWVmZmVjdC4KCkl0IHdvdWxkIGJlIGdvb2QgdG8gb25seSBoYXZlIF9faW5pdCByZWxhdGVk IGV4Y2VwdGlvbnMgb24gdGhlIF9faW5pdHRleHQKKGFuZCBhbHNvIGRpdGNoIHRoZSBfX2luaXQg ZXhjZXB0aW9uIHRhYmxlcyBvbmNlIHRoZSBib290IGlzIGNvbXBsZXRlZCkKYnV0IEkgYW0gbm90 IGV4YWN0bHkgc3VyZSBob3cgdG8gYXV0b21hdGljYWxseSBtYWtlIHRoZSBtYWNyb3MgcmVzb2x2 ZQp3aGF0IHNlY3Rpb25zIGl0IHNob3VsZCBnbyBpbi4gVGhhdCBpcyBhIGZ1cnRoZXIgVE9ETyB0 aG91Z2guCj4gCj4gQWxzbyBub3RlIHRoYXQgdGhlIGNvbW1lbnQgcHJlY2VkaW5nIHRoaXMgb2Jq ZWN0IGlzIGEgc2luZ2xlIGxpbmUgb25lLgo+IAo+ID4gKy8qCj4gPiArICogTm8gbG9ja2luZy4g QWRkaXRpb25zIGFyZSBkb25lIGVpdGhlciBhdCBzdGFydHVwICh3aGVuIHRoZXJlIGlzIG9ubHkK PiA+ICsgKiBvbmUgQ1BVKSBvciB3aGVuIGFsbCBDUFVzIGFyZSBydW5uaW5nIHdpdGhvdXQgSVJR cy4KPiA+ICsgKgo+ID4gKyAqIERlbGV0aW9ucyBhcmUgYmlnIHRyaWNreS4gV2UgTVVTVCBtYWtl IHN1cmUgYWxsIGJ1dCBvbmUgQ1BVCj4gPiArICogYXJlIHJ1bm5pbmcgY3B1X3JlbGF4KCkuCj4g PiArICoKPiA+ICsgKi8KPiA+ICtMSVNUX0hFQUQodmlydHVhbF9yZWdpb25fbGlzdCk7Cj4gCj4g SSB3b25kZXIgd2hldGhlciB0aGlzIHdvdWxkbid0IGJldHRlciBiZSBzdGF0aWMsIHdpdGggdGhl IGl0ZXJhdG9yCj4gdGhhdCB0aGUgdmFyaW91cyBwYXJ0aWVzIG5lZWQgZ2V0dGluZyBwdXQgaGVy ZSBhcyBhbiBvdXQtb2YtbGluZQo+IGZ1bmN0aW9uIChpbnN0ZWFkIG9mIGdldHRpbmcgb3BlbiBj b2RlZCBpbiBhIGNvdXBsZSBvZiBwbGFjZXMpLgoKVGhlcmUgYXJlIHRocmVlIHVzZXJzIG9mIHRo aXMgbGlzdDoKICogc2VhcmNoX2V4Y2VwdGlvbl90YWJsZSAtIHdoaWNoIGVuZHMgdXAgY2FsbGlu ZyBzZWFyY2hfb25lX3RhYmxlCiAgICBpZiB3aXRoaW4gc3RhcnQtPmVuZCBhbmQgaWYgcmVnaW9u LT5leCBpcyBkZWZpbmVkLgogKiBkb19pbnZhbGlkX3RyYXAgKHg4NiBhbmQgQVJNKSAtIHdoZXJl IGJvdGggc2NhbiBzdGFydC0+ZW5kLgogKiBzeW1ib2xzX2xvb2t1cCAtIHdoZXJlIHdlIHNjYW4g c3RhcnQtPmVuZC4KClRoZSBsYXN0IHR3byBjb3VsZCBiZSB1bmlmaWVkIGluIGE6CgpzdHJ1Y3Qg dmlydHVhbF9yZWdpb24gc2VhcmNoX3ZpcnR1YWxfcmVnaW9uKHVuc2lnbmVkIGxvbmcgYWRkcik7 CgpBbmQgdGhlIGZpcnN0IG9uZSBjYW4gdXNlIHRoaXMgYW5kIHRoZW4gY2hlY2sgaWYgcmVnaW9u LT5leCBpcyBzZXQgYXMgd2VsbC4KClt0cnlpbmcgaXQgb3V0XQoKLi4gc25pcC4uCj4gPiBAQCAt MTA4LDEzICsxMjcsMTcgQEAgY29uc3QgY2hhciAqc3ltYm9sc19sb29rdXAodW5zaWduZWQgbG9u ZyBhZGRyLAo+ID4gIHsKPiA+ICAgICAgdW5zaWduZWQgbG9uZyBpLCBsb3csIGhpZ2gsIG1pZDsK PiA+ICAgICAgdW5zaWduZWQgbG9uZyBzeW1ib2xfZW5kID0gMDsKPiA+ICsgICAgc3ltYm9sc19s b29rdXBfdCBzeW1ib2xfbG9va3VwID0gTlVMTDsKPiAKPiBQb2ludGxlc3MgaW5pdGlhbGl6ZXIu CgpJIGJlbGlldmUgd2UgbmVlZCBpdC4gVGhhdCBpcyB0aGUgY29udGVudHMgb24gdGhlIHN0YWNr IGNhbiBiZSBnYXJiYWdlCmFuZCB0aGUgX19pc19hY3RpdmVfa2VybmVsX3RleHQgd29uJ3QgdXBk YXRlIHN5bWJvbF9sb29rdXAgdW5sZXNzCml0IGZpbmRzIGEgbWF0Y2guIEFoLCBhbmQgYWxzbyB0 aGUgY29tcGlsZXIgaXMgdW5oYXBweToKCnN5bWJvbHMuYzogSW4gZnVuY3Rpb24g4oCYc3ltYm9s c19sb29rdXDigJk6CnN5bWJvbHMuYzoxMzY6ODogZXJyb3I6IOKAmHN5bWJvbF9sb29rdXDigJkg bWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJl LXVuaW5pdGlhbGl6ZWRdCiAgICAgaWYgKHN5bWJvbF9sb29rdXApCiAgICAgICAgXgpjYzE6IGFs bCB3YXJuaW5ncyBiZWluZyB0cmVhdGVkIGFzIGVycm9ycwoKPiAKPiA+ICAgICAgbmFtZWJ1ZltL U1lNX05BTUVfTEVOXSA9IDA7Cj4gPiAgICAgIG5hbWVidWZbMF0gPSAwOwo+ID4gIAo+ID4gLSAg ICBpZiAoIWlzX2FjdGl2ZV9rZXJuZWxfdGV4dChhZGRyKSkKPiA+ICsgICAgaWYgKCFfX2lzX2Fj dGl2ZV9rZXJuZWxfdGV4dChhZGRyLCAmc3ltYm9sX2xvb2t1cCkpCj4gPiAgICAgICAgICByZXR1 cm4gTlVMTDsKPiA+ICAKPiA+ICsgICAgaWYgKHN5bWJvbF9sb29rdXApCj4gPiArICAgICAgICBy ZXR1cm4gKHN5bWJvbF9sb29rdXApKGFkZHIsIHN5bWJvbHNpemUsIG9mZnNldCwgbmFtZWJ1Zik7 Cj4gCj4gTm90ZSB0aGF0IHRoZXJlIGFyZSBmZXcgY29kaW5nIHN0eWxlIGlzc3VlcyBoZXJlICht aXNzaW5nIGJsYW5rcywKPiBzdXBlcmZsdW91cyBwYXJlbnRoZXNlcykuCgpUaGF0IGZpbGUgdXNl cyBhIGRpZmZlcmVudCBTdHlsZUd1aWRlLiBUaGUgTGludXggb25lLiBXaGljaCByZW1pbmRzIG1l CnRoYXQgX19pc19hY3RpdmVfa2VybmVsX3RleHQgbmVlZHMgdG8gYWRoZXJlIHRvIGRpZmZlcmVu dCBTdHlsZUd1aWRlLgoKPiAKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL3hlbi9pbmNsdWRl L3hlbi9idWdfZXhfc3ltYm9scy5oCj4gPiBAQCAtMCwwICsxLDc0IEBACj4gPiArLyoKPiA+ICsg KiBDb3B5cmlnaHQgKGMpIDIwMTYgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJp Z2h0cyByZXNlcnZlZC4KPiA+ICsgKgo+ID4gKyAqLwo+ID4gKwo+ID4gKyNpZm5kZWYgX19CVUdf RVhfU1lNQk9MX0xJU1RfXwo+ID4gKyNkZWZpbmUgX19CVUdfRVhfU1lNQk9MX0xJU1RfXwo+ID4g Kwo+ID4gKyNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+Cj4gPiArI2luY2x1ZGUgPHhlbi9saXN0Lmg+ Cj4gPiArI2luY2x1ZGUgPHhlbi9zeW1ib2xzLmg+Cj4gPiArCj4gPiArI2lmZGVmIENPTkZJR19Y ODYKPiA+ICsjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KPiA+ICsjZW5kaWYKPiAKPiBXaHk/CgpP dGhlcndpc2UgdGhlIGNvbXBpbGF0aW9uIHdpbGwgZmFpbCBvbiBBUk0gYXMgdGhleSBkbyBub3Qg aGF2ZSBleGNlcHRpb25zCihhbmQgbm8gYXNtL3VhY2Nlc3MuaCBmaWxlKQo+IAo+ID4gKyNpbmNs dWRlIDxhc20vYnVnLmg+Cj4gPiArCj4gPiArc3RydWN0IHZpcnR1YWxfcmVnaW9uCj4gPiArewo+ ID4gKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Cj4gPiArCj4gPiArI2RlZmluZSBDSEVDS0lO R19TWU1CT0wgICAgICAgICAoMTw8MSkKPiA+ICsjZGVmaW5lIENIRUNLSU5HX0JVR19GUkFNRSAg ICAgICgxPDwyKQo+ID4gKyNkZWZpbmUgQ0hFQ0tJTkdfRVhDRVBUSU9OICAgICAgKDE8PDMpCj4g PiArICAgIC8qCj4gPiArICAgICAqIFdoZXRoZXIgdG8gc2tpcCB0aGlzIHJlZ2lvbiBmb3IgcGFy dGljdWxhciBzZWFyY2hlcy4gVGhlIGZsYWcKPiA+ICsgICAgICogY2FuIGJlIENIRUNLSU5HX1tT WU1CT0x8QlVHX0ZSQU1FU3xFWENFUFRJT05dLgo+ID4gKyAgICAgKgo+ID4gKyAgICAgKiBJZiB0 aGUgZnVuY3Rpb24gcmV0dXJucyAxIHRoaXMgcmVnaW9uIHdpbGwgYmUgc2tpcHBlZC4KPiA+ICsg ICAgICovCj4gPiArICAgIGJvb2xfdCAoKnNraXApKHVuc2lnbmVkIGludCBmbGFnLCB1bnNpZ25l ZCBsb25nIHByaXYpOwo+ID4gKwo+ID4gKyAgICB1bnNpZ25lZCBsb25nIHN0YXJ0OyAgICAgICAg LyogVmlydHVhbCBhZGRyZXNzIHN0YXJ0LiAqLwo+ID4gKyAgICB1bnNpZ25lZCBsb25nIGVuZDsg ICAgICAgICAgLyogVmlydHVhbCBhZGRyZXNzIHN0YXJ0LiAqLwo+ID4gKwo+ID4gKyAgICAvKgo+ ID4gKyAgICAgKiBJZiAtPnNraXAgcmV0dXJucyBmYWxzZSBmb3IgQ0hFQ0tJTkdfU1lNQk9MIHdl IHdpbGwgdXNlCj4gPiArICAgICAqICdzeW1ib2xzX2xvb2t1cCcgY2FsbGJhY2sgdG8gcmV0cmll dmUgdGhlIG5hbWUgb2YgdGhlCj4gPiArICAgICAqIGFkZHIgYmV0d2VlbiBzdGFydCBhbmQgZW5k LiBJZiB0aGlzIGlzIE5VTEwgdGhlCj4gPiArICAgICAqIGRlZmF1bHQgbG9va3VwIG1lY2hhbmlz bSBpcyB1c2VkICh0aGUgc2tpcCB2YWx1ZSBpcwo+ID4gKyAgICAgKiBpZ25vcmVkKS4KPiA+ICsg ICAgICovCj4gPiArICAgIHN5bWJvbHNfbG9va3VwX3Qgc3ltYm9sc19sb29rdXA7Cj4gPiArCj4g PiArICAgIHN0cnVjdCB7Cj4gPiArICAgICAgICBzdHJ1Y3QgYnVnX2ZyYW1lICpidWdzOyAvKiBU aGUgcG9pbnRlciB0byBhcnJheSBvZiBidWcgZnJhbWVzLiAqLwo+ID4gKyAgICAgICAgc3NpemVf dCBuX2J1Z3M7ICAgICAgICAgLyogVGhlIG51bWJlciBvZiB0aGVtLiAqLwo+ID4gKyAgICB9IGZy YW1lW0JVR0ZSQU1FX05SXTsKPiA+ICsKPiA+ICsjaWZkZWYgQ09ORklHX1g4Ngo+ID4gKyAgICBz dHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleDsKPiA+ICsgICAgc3RydWN0IGV4Y2VwdGlv bl90YWJsZV9lbnRyeSAqZXhfZW5kOwo+ID4gKyNlbmRpZgo+IAo+IFRoZSBidWcgZnJhbWUgYW5k IGV4Y2VwdGlvbiByZWxhdGVkIGRhdGEgYXJlIGtpbmQgb2Ygb2RkIHRvIGJlCj4gcGxhY2VkIGlu IGEgc3RydWN0dXJlIHdpdGggdGhpcyBuYW1lLiBXb3VsZCB0aGF0IG5vdCBiZXR0ZXIgYmUKPiBh Y2Nlc3NlZCB0aHJvdWdoIC4uLgo+IAo+ID4gKyAgICB1bnNpZ25lZCBsb25nIHByaXY7ICAgICAg ICAgLyogVG8gYmUgdXNlZCBieSBhYm92ZSBmdW5jaW9udHMgaWYgbmVlZCB0by4gKi8KPiAKPiAu Li4gdGhpcyBieSB0aGUgaW50ZXJlc3RlZCBwYXJ0aWVzPwoKVGhpcyBoYWQgYmVlbiByZS13b3Jr ZWQgd2l0aCBBbmRyZXcncyBzdWdnZXN0aW9ucyBhbmQgeW91cnMuIFBscyBzZWU6CgoKRnJvbSBk NTQyYWUyYjZkZTQyMWM1NDAyODg4NTE5ZDRkMTFhMDlhYmU4ZDQ2IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5j b20+CkRhdGU6IFRodSwgMTAgTWFyIDIwMTYgMTY6MzU6NTAgLTA1MDAKU3ViamVjdDogW1BBVENI XSBhcm0veDg2OiBVc2Ugc3RydWN0IHZpcnR1YWxfcmVnaW9uIHRvIGRvIGJ1Zywgc3ltYm9sLCBh bmQKICh4ODYpIGV4Y2VwdGlvbiB0YWJsZXMgbG9va3VwLgoKRHVyaW5nIGV4ZWN1dGlvbiBvZiB0 aGUgaHlwZXJ2aXNvciB3ZSBoYXZlIHR3byByZWdpb25zIG9mCmV4ZWN1dGFibGUgY29kZSAtIHN0 ZXh0IC0+IF9ldGV4dCwgYW5kIF9zaW5pdHRleHQgLT4gX2Vpbml0ZXh0LgoKVGhlIGxhdGVyIGlz IG5vdCBuZWVkZWQgYWZ0ZXIgYm9vdHVwLgoKV2UgYWxzbyBoYXZlIHZhcmlvdXMgYnVpbHQtaW4g bWFjcm9zIGFuZCBmdW5jdGlvbnMgdG8gc2VhcmNoCmluIGJldHdlZW4gdGhvc2UgdHdvIHN3YXRo cyBkZXBlbmRpbmcgb24gdGhlIHN0YXRlIG9mIHRoZSBzeXN0ZW0uCgpUaGF0IGlzIGVpdGhlciBm b3IgYnVnX2ZyYW1lcywgZXhjZXB0aW9ucyAoeDg2KSBvciBzeW1ib2wKbmFtZXMgZm9yIHRoZSBp bnN0cnVjdGlvbi4KCldpdGggeFNwbGljZSBpbiB0aGUgcGljdHVyZSAtIHdlIG5lZWQgYSBtZWNo YW5zaW0gZm9yIG5ldyBwYXlsb2Fkcwp0byBzZWFyY2hlZCBhcyB3ZWxsIGZvciBhbGwgb2YgdGhp cy4KCk9yaWdpbmFsbHkgd2UgaGFkIGV4dHJhICdpZiAoeHNwbGljZSkuLi4nIGJ1dCB0aGF0IGdl dHMKYSBiaXQgdGlyaW5nIGFuZCBkb2VzIG5vdCBob29rIHVwIG5pY2VseS4KClRoaXMgJ3N0cnVj dCB2aXJ0dWFsX3JlZ2lvbicgYW5kIHZpcnR1YWxfcmVnaW9uX2xpc3QgcHJvdmlkZSBhCm1lY2hh bmlzbSB0byBzZWFyY2ggZm9yIHRoZSBidWdfZnJhbWVzLCBleGNlcHRpb24gdGFibGUsCmFuZCBz eW1ib2wgbmFtZXMgZW50cmllcyB3aXRob3V0IGhhdmluZyB2YXJpb3VzIGNhbGxzIGluCm90aGVy IHN1Yi1jb21wb25lbnRzIGluIHRoZSBzeXN0ZW0uCgpDb2RlIHdoaWNoIHdpc2hlcyB0byBwYXJ0 aWNpcGF0ZSBpbiBidWdfZnJhbWVzIGFuZCBleGNlcHRpb24gdGFibGUKZW50cmllcyBzZWFyY2gg aGFzIHRvIG9ubHkgdXNlIHR3byBwdWJsaWMgQVBJczoKIC0gcmVnaXN0ZXJfdmlydHVhbF9yZWdp b24KIC0gdW5yZWdpc3Rlcl92aXJ0dWFsX3JlZ2lvbgoKdG8gbGV0IHRoZSBjb3JlIGNvZGUga25v dy4KCklmIHRoZSAtPmxvb2t1cF9zeW1ib2wgaXMgbm90IHRoZW4gdGhlIGRlZmF1bHQgaW50ZXJu YWwgc3ltYm9sIGxvb2t1cAptZWNoYW5pc20gaXMgdXNlZC4KClN1Z2dlc3RlZC1ieTogQW5kcmV3 IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KU2lnbmVkLW9mZi1ieTogS29ucmFk IFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgoKLS0tCkNjOiBTdGVmYW5v IFN0YWJlbGxpbmkgPHN0ZWZhbm8uc3RhYmVsbGluaUBjaXRyaXguY29tPgpDYzogSnVsaWVuIEdy YWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KQ2M6IEtlaXIgRnJhc2VyIDxrZWlyQHhlbi5vcmc+ CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBBbmRyZXcgQ29vcGVyIDxh bmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgoKdjQ6IE5ldyBwYXRjaC4KdjU6CiAtIFJlbmFtZSB0 byB2aXJ0dWFsX3JlZ2lvbi4KIC0gRGl0Y2ggdGhlICdza2lwJyBmdW5jdGlvbi4KIC0gUmVtb3Zl IHRoZSBfc3RleHQuCiAtIFVzZSBSQ1UgbGlzdHMuCiAtIEFkZCBhIHNlYXJjaCBmdW5jdGlvbi4K LS0tCi0tLQogeGVuL2FyY2gvYXJtL3NldHVwLmMgICAgICAgICAgICAgfCAgIDQgKysKIHhlbi9h cmNoL2FybS90cmFwcy5jICAgICAgICAgICAgIHwgIDM5ICsrKysrKy0tLS0KIHhlbi9hcmNoL3g4 Ni9leHRhYmxlLmMgICAgICAgICAgIHwgIDEyICsrKy0KIHhlbi9hcmNoL3g4Ni9zZXR1cC5jICAg ICAgICAgICAgIHwgICA2ICsrCiB4ZW4vYXJjaC94ODYvdHJhcHMuYyAgICAgICAgICAgICB8ICA0 MCArKysrKystLS0tLQogeGVuL2NvbW1vbi9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDEgKwog eGVuL2NvbW1vbi9zeW1ib2xzLmMgICAgICAgICAgICAgfCAgMTEgKystCiB4ZW4vY29tbW9uL3Zp cnR1YWxfcmVnaW9uLmMgICAgICB8IDE1MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIHhlbi9pbmNsdWRlL3hlbi9zeW1ib2xzLmggICAgICAgIHwgICA5ICsrKwogeGVu L2luY2x1ZGUveGVuL3ZpcnR1YWxfcmVnaW9uLmggfCAgNTYgKysrKysrKysrKysrKysrCiAxMCBm aWxlcyBjaGFuZ2VkLCAyOTIgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgeGVuL2NvbW1vbi92aXJ0dWFsX3JlZ2lvbi5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgeGVuL2luY2x1ZGUveGVuL3ZpcnR1YWxfcmVnaW9uLmgKCmRpZmYgLS1naXQgYS94ZW4vYXJj aC9hcm0vc2V0dXAuYyBiL3hlbi9hcmNoL2FybS9zZXR1cC5jCmluZGV4IDZkMjA1YTkuLjA5ZmYx ZWEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9zZXR1cC5jCisrKyBiL3hlbi9hcmNoL2FybS9z ZXR1cC5jCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8eGVuL2tleWhhbmRsZXIuaD4KICNp bmNsdWRlIDx4ZW4vY3B1Lmg+CiAjaW5jbHVkZSA8eGVuL3Bmbi5oPgorI2luY2x1ZGUgPHhlbi92 aXJ0dWFsX3JlZ2lvbi5oPgogI2luY2x1ZGUgPHhlbi92bWFwLmg+CiAjaW5jbHVkZSA8eGVuL2xp YmZkdC9saWJmZHQuaD4KICNpbmNsdWRlIDx4ZW4vYWNwaS5oPgpAQCAtODYwLDYgKzg2MSw5IEBA IHZvaWQgX19pbml0IHN0YXJ0X3hlbih1bnNpZ25lZCBsb25nIGJvb3RfcGh5c19vZmZzZXQsCiAK ICAgICBzeXN0ZW1fc3RhdGUgPSBTWVNfU1RBVEVfYWN0aXZlOwogCisgICAgLyogTXVzdCBiZSBk b25lIHBhc3Qgc2V0dGluZyBzeXN0ZW1fc3RhdGUuICovCisgICAgdW5yZWdpc3Rlcl9pbml0X3Zp cnR1YWxfcmVnaW9uKCk7CisKICAgICBkb21haW5fdW5wYXVzZV9ieV9zeXN0ZW1jb250cm9sbGVy KGRvbTApOwogCiAgICAgLyogU3dpdGNoIG9uIHRvIHRoZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQg c3RhY2sgZm9yIHRoZSBpZGxlIHZjcHUKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS90cmFwcy5j IGIveGVuL2FyY2gvYXJtL3RyYXBzLmMKaW5kZXggMzFkMjExNS4uOTdlNDBiYiAxMDA2NDQKLS0t IGEveGVuL2FyY2gvYXJtL3RyYXBzLmMKKysrIGIveGVuL2FyY2gvYXJtL3RyYXBzLmMKQEAgLTMx LDYgKzMxLDcgQEAKICNpbmNsdWRlIDx4ZW4vc29mdGlycS5oPgogI2luY2x1ZGUgPHhlbi9kb21h aW5fcGFnZS5oPgogI2luY2x1ZGUgPHhlbi9wZXJmYy5oPgorI2luY2x1ZGUgPHhlbi92aXJ0dWFs X3JlZ2lvbi5oPgogI2luY2x1ZGUgPHB1YmxpYy9zY2hlZC5oPgogI2luY2x1ZGUgPHB1YmxpYy94 ZW4uaD4KICNpbmNsdWRlIDxhc20vZGVidWdnZXIuaD4KQEAgLTEwMSw2ICsxMDIsOCBAQCBpbnRl Z2VyX3BhcmFtKCJkZWJ1Z19zdGFja19saW5lcyIsIGRlYnVnX3N0YWNrX2xpbmVzKTsKIAogdm9p ZCBpbml0X3RyYXBzKHZvaWQpCiB7CisgICAgc2V0dXBfdmlydHVhbF9yZWdpb25zKCk7CisKICAg ICAvKiBTZXR1cCBIeXAgdmVjdG9yIGJhc2UgKi8KICAgICBXUklURV9TWVNSRUcoKHZhZGRyX3Qp aHlwX3RyYXBzX3ZlY3RvciwgVkJBUl9FTDIpOwogCkBAIC0xMDc3LDI3ICsxMDgwLDMzIEBAIHZv aWQgZG9fdW5leHBlY3RlZF90cmFwKGNvbnN0IGNoYXIgKm1zZywgc3RydWN0IGNwdV91c2VyX3Jl Z3MgKnJlZ3MpCiAKIGludCBkb19idWdfZnJhbWUoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3Ms IHZhZGRyX3QgcGMpCiB7Ci0gICAgY29uc3Qgc3RydWN0IGJ1Z19mcmFtZSAqYnVnOworICAgIGNv bnN0IHN0cnVjdCBidWdfZnJhbWUgKmJ1ZyA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqcHJlZml4 ID0gIiIsICpmaWxlbmFtZSwgKnByZWRpY2F0ZTsKICAgICB1bnNpZ25lZCBsb25nIGZpeHVwOwot ICAgIGludCBpZCwgbGluZW5vOwotICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYnVnX2ZyYW1lICpj b25zdCBzdG9wX2ZyYW1lc1tdID0gewotICAgICAgICBfX3N0b3BfYnVnX2ZyYW1lc18wLAotICAg ICAgICBfX3N0b3BfYnVnX2ZyYW1lc18xLAotICAgICAgICBfX3N0b3BfYnVnX2ZyYW1lc18yLAot ICAgICAgICBOVUxMCi0gICAgfTsKKyAgICBpbnQgaWQgPSAtMSwgbGluZW5vOworICAgIHN0cnVj dCB2aXJ0dWFsX3JlZ2lvbiAqcmVnaW9uOwogCi0gICAgZm9yICggYnVnID0gX19zdGFydF9idWdf ZnJhbWVzLCBpZCA9IDA7IHN0b3BfZnJhbWVzW2lkXTsgKytidWcgKQorICAgIHJlZ2lvbiA9IHNl YXJjaF92aXJ0dWFsX3JlZ2lvbnMocGMpOworICAgIGlmICggcmVnaW9uICkKICAgICB7Ci0gICAg ICAgIHdoaWxlICggdW5saWtlbHkoYnVnID09IHN0b3BfZnJhbWVzW2lkXSkgKQotICAgICAgICAg ICAgKytpZDsKKyAgICAgICAgZm9yICggaWQgPSAwOyBpZCA8IEJVR0ZSQU1FX05SOyBpZCsrICkK KyAgICAgICAgeworICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJ1Z19mcmFtZSAqYjsKKyAgICAg ICAgICAgIHVuc2lnbmVkIGludCBpOwogCi0gICAgICAgIGlmICggKCh2YWRkcl90KWJ1Z19sb2Mo YnVnKSkgPT0gcGMgKQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBmb3IgKCBpID0g MCwgYiA9IHJlZ2lvbi0+ZnJhbWVbaWRdLmJ1Z3M7CisgICAgICAgICAgICAgICAgICBpIDwgcmVn aW9uLT5mcmFtZVtpZF0ubl9idWdzOyBiKyssIGkrKyApCisgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgaWYgKCAoKHZhZGRyX3QpYnVnX2xvYyhiKSkgPT0gcGMgKQorICAgICAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYnVnID0gYjsKKyAgICAgICAgICAgICAgICAgICAg Z290byBmb3VuZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K ICAgICB9Ci0KLSAgICBpZiAoICFzdG9wX2ZyYW1lc1tpZF0gKQorIGZvdW5kOgorICAgIGlmICgg IWJ1ZyApCiAgICAgICAgIHJldHVybiAtRU5PRU5UOwogCiAgICAgLyogV0FSTiwgQlVHIG9yIEFT U0VSVDogZGVjb2RlIHRoZSBmaWxlbmFtZSBwb2ludGVyIGFuZCBsaW5lIG51bWJlci4gKi8KZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9leHRhYmxlLmMgYi94ZW4vYXJjaC94ODYvZXh0YWJsZS5j CmluZGV4IDg5YjViY2IuLmQwZjEzNjEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9leHRhYmxl LmMKKysrIGIveGVuL2FyY2gveDg2L2V4dGFibGUuYwpAQCAtMSwxMCArMSwxMiBAQAogCi0jaW5j bHVkZSA8eGVuL2NvbmZpZy5oPgogI2luY2x1ZGUgPHhlbi9pbml0Lmg+CisjaW5jbHVkZSA8eGVu L2xpc3QuaD4KICNpbmNsdWRlIDx4ZW4vcGVyZmMuaD4KKyNpbmNsdWRlIDx4ZW4vcmN1cGRhdGUu aD4KICNpbmNsdWRlIDx4ZW4vc29ydC5oPgogI2luY2x1ZGUgPHhlbi9zcGlubG9jay5oPgogI2lu Y2x1ZGUgPGFzbS91YWNjZXNzLmg+CisjaW5jbHVkZSA8eGVuL3ZpcnR1YWxfcmVnaW9uLmg+CiAK ICNkZWZpbmUgRVhfRklFTEQocHRyLCBmaWVsZCkgKCh1bnNpZ25lZCBsb25nKSYocHRyKS0+Zmll bGQgKyAocHRyKS0+ZmllbGQpCiAKQEAgLTgwLDggKzgyLDEyIEBAIHNlYXJjaF9vbmVfdGFibGUo Y29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZmlyc3QsCiB1bnNpZ25lZCBsb25n CiBzZWFyY2hfZXhjZXB0aW9uX3RhYmxlKHVuc2lnbmVkIGxvbmcgYWRkcikKIHsKLSAgICByZXR1 cm4gc2VhcmNoX29uZV90YWJsZSgKLSAgICAgICAgX19zdGFydF9fX2V4X3RhYmxlLCBfX3N0b3Bf X19leF90YWJsZS0xLCBhZGRyKTsKKyAgICBzdHJ1Y3QgdmlydHVhbF9yZWdpb24gKnJlZ2lvbiA9 IHNlYXJjaF92aXJ0dWFsX3JlZ2lvbnMoYWRkcik7CisKKyAgICBpZiAoIHJlZ2lvbiAmJiByZWdp b24tPmV4ICkKKyAgICAgICAgcmV0dXJuIHNlYXJjaF9vbmVfdGFibGUocmVnaW9uLT5leCwgcmVn aW9uLT5leF9lbmQtMSwgYWRkcik7CisKKyAgICByZXR1cm4gMDsKIH0KIAogdW5zaWduZWQgbG9u ZwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3NldHVwLmMgYi94ZW4vYXJjaC94ODYvc2V0dXAu YwppbmRleCAxODc2YTI4Li4yMGNkOWIzIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvc2V0dXAu YworKysgYi94ZW4vYXJjaC94ODYvc2V0dXAuYwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg PHhlbi9wZm4uaD4KICNpbmNsdWRlIDx4ZW4vbm9kZW1hc2suaD4KICNpbmNsdWRlIDx4ZW4vdG1l bV94ZW4uaD4KKyNpbmNsdWRlIDx4ZW4vdmlydHVhbF9yZWdpb24uaD4KICNpbmNsdWRlIDx4ZW4v d2F0Y2hkb2cuaD4KICNpbmNsdWRlIDxwdWJsaWMvdmVyc2lvbi5oPgogI2luY2x1ZGUgPGNvbXBh dC9wbGF0Zm9ybS5oPgpAQCAtNTE0LDYgKzUxNSw5IEBAIHN0YXRpYyB2b2lkIG5vaW5saW5lIGlu aXRfZG9uZSh2b2lkKQogCiAgICAgc3lzdGVtX3N0YXRlID0gU1lTX1NUQVRFX2FjdGl2ZTsKIAor ICAgIC8qIE1VU1QgYmUgZG9uZSBwcmlvciB0byByZW1vdmluZyAuaW5pdCBkYXRhLiAqLworICAg IHVucmVnaXN0ZXJfaW5pdF92aXJ0dWFsX3JlZ2lvbigpOworCiAgICAgZG9tYWluX3VucGF1c2Vf Ynlfc3lzdGVtY29udHJvbGxlcihoYXJkd2FyZV9kb21haW4pOwogCiAgICAgLyogWmVybyB0aGUg LmluaXQgY29kZSBhbmQgZGF0YS4gKi8KQEAgLTYxNiw2ICs2MjAsOCBAQCB2b2lkIF9faW5pdCBu b3JldHVybiBfX3N0YXJ0X3hlbih1bnNpZ25lZCBsb25nIG1iaV9wKQogICAgIHNtcF9wcmVwYXJl X2Jvb3RfY3B1KCk7CiAgICAgc29ydF9leGNlcHRpb25fdGFibGVzKCk7CiAKKyAgICBzZXR1cF92 aXJ0dWFsX3JlZ2lvbnMoKTsKKwogICAgIC8qIEZ1bGwgZXhjZXB0aW9uIHN1cHBvcnQgZnJvbSBo ZXJlIG9uIGluLiAqLwogCiAgICAgbG9hZGVyID0gKG1iaS0+ZmxhZ3MgJiBNQklfTE9BREVSTkFN RSkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni90cmFwcy5jIGIveGVuL2FyY2gveDg2L3RyYXBz LmMKaW5kZXggNmZiYjFjZi4uZjkwZDZhYyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3RyYXBz LmMKKysrIGIveGVuL2FyY2gveDg2L3RyYXBzLmMKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRl IDx4ZW4va2V4ZWMuaD4KICNpbmNsdWRlIDx4ZW4vdHJhY2UuaD4KICNpbmNsdWRlIDx4ZW4vcGFn aW5nLmg+CisjaW5jbHVkZSA8eGVuL3ZpcnR1YWxfcmVnaW9uLmg+CiAjaW5jbHVkZSA8eGVuL3dh dGNoZG9nLmg+CiAjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgogI2luY2x1ZGUgPGFzbS9pby5oPgpA QCAtMTEzMiwxOCArMTEzMywxMiBAQCBzdGF0aWMgaW50IGVtdWxhdGVfZm9yY2VkX2ludmFsaWRf b3Aoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiAKIHZvaWQgZG9faW52YWxpZF9vcChzdHJ1 Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKIHsKLSAgICBjb25zdCBzdHJ1Y3QgYnVnX2ZyYW1lICpi dWc7CisgICAgY29uc3Qgc3RydWN0IGJ1Z19mcmFtZSAqYnVnID0gTlVMTDsKICAgICB1OCBidWdf aW5zblsyXTsKICAgICBjb25zdCBjaGFyICpwcmVmaXggPSAiIiwgKmZpbGVuYW1lLCAqcHJlZGlj YXRlLCAqZWlwID0gKGNoYXIgKilyZWdzLT5laXA7CiAgICAgdW5zaWduZWQgbG9uZyBmaXh1cDsK LSAgICBpbnQgaWQsIGxpbmVubzsKLSAgICBzdGF0aWMgY29uc3Qgc3RydWN0IGJ1Z19mcmFtZSAq Y29uc3Qgc3RvcF9mcmFtZXNbXSA9IHsKLSAgICAgICAgX19zdG9wX2J1Z19mcmFtZXNfMCwKLSAg ICAgICAgX19zdG9wX2J1Z19mcmFtZXNfMSwKLSAgICAgICAgX19zdG9wX2J1Z19mcmFtZXNfMiwK LSAgICAgICAgX19zdG9wX2J1Z19mcmFtZXNfMywKLSAgICAgICAgTlVMTAotICAgIH07CisgICAg aW50IGlkID0gLTEsIGxpbmVubzsKKyAgICBzdHJ1Y3QgdmlydHVhbF9yZWdpb24gKnJlZ2lvbjsK IAogICAgIERFQlVHR0VSX3RyYXBfZW50cnkoVFJBUF9pbnZhbGlkX29wLCByZWdzKTsKIApAQCAt MTE2MCwxNiArMTE1NSwyOSBAQCB2b2lkIGRvX2ludmFsaWRfb3Aoc3RydWN0IGNwdV91c2VyX3Jl Z3MgKnJlZ3MpCiAgICAgICAgICBtZW1jbXAoYnVnX2luc24sICJceGZceGIiLCBzaXplb2YoYnVn X2luc24pKSApCiAgICAgICAgIGdvdG8gZGllOwogCi0gICAgZm9yICggYnVnID0gX19zdGFydF9i dWdfZnJhbWVzLCBpZCA9IDA7IHN0b3BfZnJhbWVzW2lkXTsgKytidWcgKQorICAgIHJlZ2lvbiA9 IHNlYXJjaF92aXJ0dWFsX3JlZ2lvbnMocmVncy0+ZWlwKTsKKyAgICBpZiAoIHJlZ2lvbiApCiAg ICAgewotICAgICAgICB3aGlsZSAoIHVubGlrZWx5KGJ1ZyA9PSBzdG9wX2ZyYW1lc1tpZF0pICkK LSAgICAgICAgICAgICsraWQ7Ci0gICAgICAgIGlmICggYnVnX2xvYyhidWcpID09IGVpcCApCi0g ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZm9yICggaWQgPSAwOyBpZCA8IEJVR0ZSQU1FX05S OyBpZCsrICkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJ1Z19mcmFtZSAq YjsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBpOworCisgICAgICAgICAgICBmb3IgKCBpID0g MCwgYiA9IHJlZ2lvbi0+ZnJhbWVbaWRdLmJ1Z3M7CisgICAgICAgICAgICAgICAgICBpIDwgcmVn aW9uLT5mcmFtZVtpZF0ubl9idWdzOyBiKyssIGkrKyApCisgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgaWYgKCBidWdfbG9jKGIpID09IGVpcCApCisgICAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICAgICBidWcgPSBiOworICAgICAgICAgICAgICAgICAgICBnb3RvIGZvdW5k OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KLSAg ICBpZiAoICFzdG9wX2ZyYW1lc1tpZF0gKQotICAgICAgICBnb3RvIGRpZTsKIAorIGZvdW5kOgor ICAgIGlmICggIWJ1ZyApCisgICAgICAgIGdvdG8gZGllOwogICAgIGVpcCArPSBzaXplb2YoYnVn X2luc24pOwogICAgIGlmICggaWQgPT0gQlVHRlJBTUVfcnVuX2ZuICkKICAgICB7CmRpZmYgLS1n aXQgYS94ZW4vY29tbW9uL01ha2VmaWxlIGIveGVuL2NvbW1vbi9NYWtlZmlsZQppbmRleCA3N2Rl MjdlLi5lNDNlYzQ5IDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL01ha2VmaWxlCisrKyBiL3hlbi9j b21tb24vTWFrZWZpbGUKQEAgLTUxLDYgKzUxLDcgQEAgb2JqLXkgKz0gdGltZS5vCiBvYmoteSAr PSB0aW1lci5vCiBvYmoteSArPSB0cmFjZS5vCiBvYmoteSArPSB2ZXJzaW9uLm8KK29iai15ICs9 IHZpcnR1YWxfcmVnaW9uLm8KIG9iai15ICs9IHZtX2V2ZW50Lm8KIG9iai15ICs9IHZtYXAubwog b2JqLXkgKz0gdnNwcmludGYubwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zeW1ib2xzLmMgYi94 ZW4vY29tbW9uL3N5bWJvbHMuYwppbmRleCBhNTljNTlkLi5iYmEwZjJlIDEwMDY0NAotLS0gYS94 ZW4vY29tbW9uL3N5bWJvbHMuYworKysgYi94ZW4vY29tbW9uL3N5bWJvbHMuYwpAQCAtMTcsNiAr MTcsNyBAQAogI2luY2x1ZGUgPHhlbi9saWIuaD4KICNpbmNsdWRlIDx4ZW4vc3RyaW5nLmg+CiAj aW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8eGVuL3ZpcnR1YWxfcmVnaW9uLmg+ CiAjaW5jbHVkZSA8cHVibGljL3BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vz cy5oPgogCkBAIC05Nyw4ICs5OCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X3N5bWJvbF9v ZmZzZXQodW5zaWduZWQgbG9uZyBwb3MpCiAKIGJvb2xfdCBpc19hY3RpdmVfa2VybmVsX3RleHQo dW5zaWduZWQgbG9uZyBhZGRyKQogewotICAgIHJldHVybiAoaXNfa2VybmVsX3RleHQoYWRkcikg fHwKLSAgICAgICAgICAgIChzeXN0ZW1fc3RhdGUgPCBTWVNfU1RBVEVfYWN0aXZlICYmIGlzX2tl cm5lbF9pbml0dGV4dChhZGRyKSkpOworICAgIHJldHVybiAhIXNlYXJjaF92aXJ0dWFsX3JlZ2lv bnMoYWRkcik7CiB9CiAKIGNvbnN0IGNoYXIgKnN5bWJvbHNfbG9va3VwKHVuc2lnbmVkIGxvbmcg YWRkciwKQEAgLTEwOCwxMyArMTA4LDE4IEBAIGNvbnN0IGNoYXIgKnN5bWJvbHNfbG9va3VwKHVu c2lnbmVkIGxvbmcgYWRkciwKIHsKICAgICB1bnNpZ25lZCBsb25nIGksIGxvdywgaGlnaCwgbWlk OwogICAgIHVuc2lnbmVkIGxvbmcgc3ltYm9sX2VuZCA9IDA7CisgICAgc3RydWN0IHZpcnR1YWxf cmVnaW9uICpyZWdpb247CiAKICAgICBuYW1lYnVmW0tTWU1fTkFNRV9MRU5dID0gMDsKICAgICBu YW1lYnVmWzBdID0gMDsKIAotICAgIGlmICghaXNfYWN0aXZlX2tlcm5lbF90ZXh0KGFkZHIpKQor ICAgIHJlZ2lvbiA9IHNlYXJjaF92aXJ0dWFsX3JlZ2lvbnMoYWRkcik7CisgICAgaWYgKCFyZWdp b24pCiAgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgaWYgKHJlZ2lvbi0+c3ltYm9sc19sb29r dXApCisgICAgICAgIHJldHVybiByZWdpb24tPnN5bWJvbHNfbG9va3VwKGFkZHIsIHN5bWJvbHNp emUsIG9mZnNldCwgbmFtZWJ1Zik7CisKICAgICAgICAgLyogZG8gYSBiaW5hcnkgc2VhcmNoIG9u IHRoZSBzb3J0ZWQgc3ltYm9sc19hZGRyZXNzZXMgYXJyYXkgKi8KICAgICBsb3cgPSAwOwogICAg IGhpZ2ggPSBzeW1ib2xzX251bV9zeW1zOwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi92aXJ0dWFs X3JlZ2lvbi5jIGIveGVuL2NvbW1vbi92aXJ0dWFsX3JlZ2lvbi5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjYxOGEzMTIKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vY29tbW9u L3ZpcnR1YWxfcmVnaW9uLmMKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMp IDIwMTYgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K KyAqCisgKi8KKworI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KKyNpbmNsdWRlIDx4ZW4vaW5pdC5o PgorI2luY2x1ZGUgPHhlbi9rZXJuZWwuaD4KKyNpbmNsdWRlIDx4ZW4vcmN1cGRhdGUuaD4KKyNp bmNsdWRlIDx4ZW4vc3BpbmxvY2suaD4KKyNpbmNsdWRlIDx4ZW4vdmlydHVhbF9yZWdpb24uaD4K Kworc3RhdGljIHN0cnVjdCB2aXJ0dWFsX3JlZ2lvbiBjb21waWxlZCA9IHsKKyAgICAubGlzdCA9 IExJU1RfSEVBRF9JTklUKGNvbXBpbGVkLmxpc3QpLAorICAgIC5zdGFydCA9ICh1bnNpZ25lZCBs b25nKV9zdGV4dCwKKyAgICAuZW5kID0gKHVuc2lnbmVkIGxvbmcpX2V0ZXh0LAorI2lmZGVmIENP TkZJR19YODYKKyAgICAuZXggPSAoc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqKV9fc3Rh cnRfX19leF90YWJsZSwKKyAgICAuZXhfZW5kID0gKHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50 cnkgKilfX3N0b3BfX19leF90YWJsZSwKKyNlbmRpZgorfTsKKworLyogQmVjb21lcyBpcnJlbGV2 YW50IHdoZW4gX19pbml0IHNlY3Rpb25zIGFyZSBjbGVhcmVkLiAqLworc3RhdGljIHN0cnVjdCB2 aXJ0dWFsX3JlZ2lvbiBjb21waWxlZF9pbml0IF9faW5pdGRhdGEgPSB7CisgICAgLmxpc3QgPSBM SVNUX0hFQURfSU5JVChjb21waWxlZF9pbml0Lmxpc3QpLAorICAgIC5zdGFydCA9ICh1bnNpZ25l ZCBsb25nKV9zaW5pdHRleHQsCisgICAgLmVuZCA9ICh1bnNpZ25lZCBsb25nKV9laW5pdHRleHQs CisjaWZkZWYgQ09ORklHX1g4NgorICAgIC8qIEV2ZW4gaWYgdGhleSBhcmUgX19pbml0IHRoZWly IGV4Y2VwdGlvbiBlbnRyeSBzdGlsbCBnZXRzIHN0dWNrIGhlcmUuICovCisgICAgLmV4ID0gKHN0 cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKilfX3N0YXJ0X19fZXhfdGFibGUsCisgICAgLmV4 X2VuZCA9IChzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICopX19zdG9wX19fZXhfdGFibGUs CisjZW5kaWYKK307CisKKy8qCisgKiBSQ1UgbG9ja2luZy4gQWRkaXRpb25zIGFyZSBkb25lIGVp dGhlciBhdCBzdGFydHVwICh3aGVuIHRoZXJlIGlzIG9ubHkKKyAqIG9uZSBDUFUpIG9yIHdoZW4g YWxsIENQVXMgYXJlIHJ1bm5pbmcgd2l0aG91dCBJUlFzLgorICoKKyAqIERlbGV0aW9ucyBhcmUg YmlnIHRyaWNreS4gV2UgZG8gaXQgd2hlbiB4U3BsaWNpbmcgKGFsbCBDUFVzIHJ1bm5pbmcKKyAq IHdpdGhvdXQgSVJRcykgb3IgZHVyaW5nIGJvb3R1cCAod2hlbiBjbGVhcmluZyB0aGUgaW5pdCku CisgKgorICogSGVuY2Ugd2UgdXNlIGxpc3RfZGVsX3JjdSAod2hpY2ggc3BvcnRzIGFuIG1lbW9y eSBmZW5jZSkgYW5kIGEgc3BpbmxvY2sKKyAqIG9uIGRlbGV0aW9uLgorICoKKyAqIEFsbCByZWFk ZXJzIG9mIHZpcnR1YWxfcmVnaW9uX2xpc3QgTVVTVCB1c2UgbGlzdCBsaXN0X2Zvcl9lYWNoX2Vu dHJ5X3JjdS4KKyAqCisgKi8KK3N0YXRpYyBMSVNUX0hFQUQodmlydHVhbF9yZWdpb25fbGlzdCk7 CitzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHZpcnR1YWxfcmVnaW9uX2xvY2spOworCitzdHJ1Y3Qg dmlydHVhbF9yZWdpb24qIHNlYXJjaF92aXJ0dWFsX3JlZ2lvbnModW5zaWduZWQgbG9uZyBhZGRy KQoreworICAgIHN0cnVjdCB2aXJ0dWFsX3JlZ2lvbiAqcmVnaW9uOworCisgICAgbGlzdF9mb3Jf ZWFjaF9lbnRyeV9yY3UoIHJlZ2lvbiwgJnZpcnR1YWxfcmVnaW9uX2xpc3QsIGxpc3QgKQorICAg IHsKKyAgICAgICAgaWYgKCBhZGRyID49IHJlZ2lvbi0+c3RhcnQgJiYgYWRkciA8IHJlZ2lvbi0+ ZW5kICkKKyAgICAgICAgICAgIHJldHVybiByZWdpb247CisgICAgfQorCisgICAgcmV0dXJuIE5V TEw7Cit9CisKK2ludCByZWdpc3Rlcl92aXJ0dWFsX3JlZ2lvbihzdHJ1Y3QgdmlydHVhbF9yZWdp b24gKnIpCit7CisgICAgQVNTRVJUKCFsb2NhbF9pcnFfaXNfZW5hYmxlZCgpKTsKKworICAgIGxp c3RfYWRkX3RhaWxfcmN1KCZyLT5saXN0LCAmdmlydHVhbF9yZWdpb25fbGlzdCk7CisKKyAgICBy ZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgX191bnJlZ2lzdGVyX3ZpcnR1YWxfcmVnaW9uKHN0 cnVjdCB2aXJ0dWFsX3JlZ2lvbiAqcikKK3sKKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworCisg ICAgc3Bpbl9sb2NrX2lycXNhdmUoJnZpcnR1YWxfcmVnaW9uX2xvY2ssIGZsYWdzKTsKKyAgICBs aXN0X2RlbF9yY3UoJnItPmxpc3QpOworICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZpcnR1 YWxfcmVnaW9uX2xvY2ssIGZsYWdzKTsKKyAgICAvKgorICAgICAqIFdlIGRvIG5vdCBuZWVkIHRv IGludm9rZSBjYWxsX3JjdS4KKyAgICAgKgorICAgICAqIFRoaXMgaXMgZHVlIHRvIHRoZSBmYWN0 IHRoYXQgb24gdGhlIGRlbGV0aW9uIHdlIGhhdmUgbWFkZSBzdXJlCisgICAgICogdG8gdXNlIHNw aW5sb2NrcyAodG8gZ3VhcmQgYWdhaW5zdCBzb21lYm9keSBlbHNlIGNhbGxpbmcKKyAgICAgKiB1 bnJlZ2lzdGVyX3ZpcnR1YWxfcmVnaW9uKSBhbmQgbGlzdF9kZWxldGlvbiBzcGljZWQgd2l0aCBh biBtZW1vcnkKKyAgICAgKiBiYXJyaWVyIC0gd2hpY2ggd2lsbCBmbHVzaCBvdXQgdGhlIGNhY2hl IGxpbmVzIGluIG90aGVyIENQVXMuCisgICAgICoKKyAgICAgKiBUaGF0IHByb3RlY3RzIHVzIGZy b20gY29ycnVwdGluZyB0aGUgbGlzdCBhcyB0aGUgcmVhZGVycyBhbGwKKyAgICAgKiB1c2UgbGlz dF9mb3JfZWFjaF9lbnRyeV9yY3Ugd2hpY2ggaXMgc2FmZSBhZ2FpbnN0IGNvbmN1cnJlbnQKKyAg ICAgKiBkZWxldGlvbnMuCisgICAgICovCit9CisKK3ZvaWQgdW5yZWdpc3Rlcl92aXJ0dWFsX3Jl Z2lvbihzdHJ1Y3QgdmlydHVhbF9yZWdpb24gKnIpCit7CisgICAgLyogRXhwZWN0ZWQgdG8gYmUg Y2FsbGVkIGZyb20geFNwbGljZSAtIHdoaWNoIGhhcyBJUlFzIGRpc2FibGVkLiAqLworICAgIEFT U0VSVCghbG9jYWxfaXJxX2lzX2VuYWJsZWQoKSk7CisKKyAgICBfX3VucmVnaXN0ZXJfdmlydHVh bF9yZWdpb24ocik7Cit9CisKK3ZvaWQgdW5yZWdpc3Rlcl9pbml0X3ZpcnR1YWxfcmVnaW9uKHZv aWQpCit7CisgICAgQlVHX09OKHN5c3RlbV9zdGF0ZSAhPSBTWVNfU1RBVEVfYWN0aXZlKTsKKwor ICAgIF9fdW5yZWdpc3Rlcl92aXJ0dWFsX3JlZ2lvbigmY29tcGlsZWRfaW5pdCk7Cit9CisKK3Zv aWQgX19pbml0IHNldHVwX3ZpcnR1YWxfcmVnaW9ucyh2b2lkKQoreworICAgIHNzaXplX3Qgc3o7 CisgICAgdW5zaWduZWQgaW50IGk7CisgICAgc3RhdGljIGNvbnN0IHN0cnVjdCBidWdfZnJhbWUg KmNvbnN0IHN0b3BfZnJhbWVzW10gPSB7CisgICAgICAgIF9fc3RhcnRfYnVnX2ZyYW1lcywKKyAg ICAgICAgX19zdG9wX2J1Z19mcmFtZXNfMCwKKyAgICAgICAgX19zdG9wX2J1Z19mcmFtZXNfMSwK KyAgICAgICAgX19zdG9wX2J1Z19mcmFtZXNfMiwKKyNpZmRlZiBDT05GSUdfWDg2CisgICAgICAg IF9fc3RvcF9idWdfZnJhbWVzXzMsCisjZW5kaWYKKyAgICAgICAgTlVMTAorICAgIH07CisKKyAg ICAvKiBOLkIuIGlkeCAhPSBpICovCisgICAgZm9yICggaSA9IDE7IHN0b3BfZnJhbWVzW2ldOyBp KysgKQorICAgIHsKKyAgICAgICAgY29uc3Qgc3RydWN0IGJ1Z19mcmFtZSAqczsKKworICAgICAg ICBzID0gc3RvcF9mcmFtZXNbaS0xXTsKKyAgICAgICAgc3ogPSBzdG9wX2ZyYW1lc1tpXSAtIHM7 CisKKyAgICAgICAgY29tcGlsZWQuZnJhbWVbaS0xXS5uX2J1Z3MgPSBzejsKKyAgICAgICAgY29t cGlsZWQuZnJhbWVbaS0xXS5idWdzID0gczsKKworICAgICAgICBjb21waWxlZF9pbml0LmZyYW1l W2ktMV0ubl9idWdzID0gc3o7CisgICAgICAgIGNvbXBpbGVkX2luaXQuZnJhbWVbaS0xXS5idWdz ID0gczsKKyAgICB9CisKKyAgICByZWdpc3Rlcl92aXJ0dWFsX3JlZ2lvbigmY29tcGlsZWRfaW5p dCk7CisgICAgcmVnaXN0ZXJfdmlydHVhbF9yZWdpb24oJmNvbXBpbGVkKTsKK30KKworLyoKKyAq IExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAq IGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6 IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vc3ltYm9scy5o IGIveGVuL2luY2x1ZGUveGVuL3N5bWJvbHMuaAppbmRleCAxZmEwNTM3Li5mYTM1M2Y4IDEwMDY0 NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vc3ltYm9scy5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9z eW1ib2xzLmgKQEAgLTUsNiArNSwxNSBAQAogCiAjZGVmaW5lIEtTWU1fTkFNRV9MRU4gMTI3CiAK Ky8qCisgKiBUeXBlZGVmIGZvciB0aGUgY2FsbGJhY2sgZnVuY3Rpb25zIHRoYXQgc3ltYm9sc19s b29rdXAKKyAqIGNhbiBjYWxsIGlmIHZpcnR1YWxfcmVnaW9uX2xpc3QgaGFzIGFuIGNhbGxiYWNr IGZvciBpdC4KKyAqLwordHlwZWRlZiBjb25zdCBjaGFyICooc3ltYm9sc19sb29rdXBfdCkodW5z aWduZWQgbG9uZyBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgbG9uZyAqc3ltYm9sc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKm9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNoYXIgKm5hbWVidWYpOworCiAvKiBMb29rdXAgYW4gYWRkcmVzcy4g Ki8KIGNvbnN0IGNoYXIgKnN5bWJvbHNfbG9va3VwKHVuc2lnbmVkIGxvbmcgYWRkciwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKnN5bWJvbHNpemUsCmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS94ZW4vdmlydHVhbF9yZWdpb24uaCBiL3hlbi9pbmNsdWRlL3hlbi92 aXJ0dWFsX3JlZ2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmMTVm ZTkKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vaW5jbHVkZS94ZW4vdmlydHVhbF9yZWdpb24uaApA QCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDE2IE9yYWNsZSBhbmQvb3Ig aXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICovCisKKyNpZm5kZWYg X19CVUdfRVhfU1lNQk9MX0xJU1RfXworI2RlZmluZSBfX0JVR19FWF9TWU1CT0xfTElTVF9fCisK KyNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+CisjaW5jbHVkZSA8eGVuL2xpc3QuaD4KKyNpbmNsdWRl IDx4ZW4vc3ltYm9scy5oPgorCisjaWZkZWYgQ09ORklHX1g4NgorI2luY2x1ZGUgPGFzbS91YWNj ZXNzLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxhc20vYnVnLmg+CisKK3N0cnVjdCB2aXJ0dWFsX3Jl Z2lvbgoreworICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKKyAgICB1bnNpZ25lZCBsb25nIHN0 YXJ0OyAgICAgICAgLyogVmlydHVhbCBhZGRyZXNzIHN0YXJ0LiAqLworICAgIHVuc2lnbmVkIGxv bmcgZW5kOyAgICAgICAgICAvKiBWaXJ0dWFsIGFkZHJlc3Mgc3RhcnQuICovCisKKyAgICAvKgor ICAgICAqIElmIHRoaXMgaXMgTlVMTCB0aGUgZGVmYXVsdCBsb29rdXAgbWVjaGFuaXNtIGlzIHVz ZWQuCisgICAgICovCisgICAgc3ltYm9sc19sb29rdXBfdCAqc3ltYm9sc19sb29rdXA7CisKKyAg ICBzdHJ1Y3QgeworICAgICAgICBjb25zdCBzdHJ1Y3QgYnVnX2ZyYW1lICpidWdzOyAvKiBUaGUg cG9pbnRlciB0byBhcnJheSBvZiBidWcgZnJhbWVzLiAqLworICAgICAgICBzc2l6ZV90IG5fYnVn czsgICAgICAgICAvKiBUaGUgbnVtYmVyIG9mIHRoZW0uICovCisgICAgfSBmcmFtZVtCVUdGUkFN RV9OUl07CisKKyNpZmRlZiBDT05GSUdfWDg2CisgICAgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9l bnRyeSAqZXg7CisgICAgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXhfZW5kOworI2Vu ZGlmCit9OworCitleHRlcm4gc3RydWN0IHZpcnR1YWxfcmVnaW9uICpzZWFyY2hfdmlydHVhbF9y ZWdpb25zKHVuc2lnbmVkIGxvbmcgYWRkcik7CitleHRlcm4gdm9pZCBzZXR1cF92aXJ0dWFsX3Jl Z2lvbnModm9pZCk7CitleHRlcm4gdm9pZCB1bnJlZ2lzdGVyX2luaXRfdmlydHVhbF9yZWdpb24o dm9pZCk7CitleHRlcm4gaW50IHJlZ2lzdGVyX3ZpcnR1YWxfcmVnaW9uKHN0cnVjdCB2aXJ0dWFs X3JlZ2lvbiAqcik7CitleHRlcm4gdm9pZCB1bnJlZ2lzdGVyX3ZpcnR1YWxfcmVnaW9uKHN0cnVj dCB2aXJ0dWFsX3JlZ2lvbiAqcik7CisKKyNlbmRpZiAvKiBfX0JVR19FWF9TWU1CT0xfTElTVF9f ICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5 bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRl bnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwotLSAKMi41LjAKCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK