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: Wed, 23 Mar 2016 22:49:43 -0400 Message-ID: <20160324024942.GB13266@localhost.localdomain> 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> <20160322201844.GA31231@char.us.oracle.com> <56F25FB702000078000DF844@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.bemta6.messagelabs.com ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aivLX-0001DS-D7 for xen-devel@lists.xenproject.org; Thu, 24 Mar 2016 02:50:03 +0000 Content-Disposition: inline In-Reply-To: <56F25FB702000078000DF844@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 PiA+PiA+ICsjaWZkZWYgQ09ORklHX1g4Ngo+ID4+ID4gKyNpbmNsdWRlIDxhc20vdWFjY2Vzcy5o Pgo+ID4+ID4gKyNlbmRpZgo+ID4+IAo+ID4+IFdoeT8KPiA+IAo+ID4gT3RoZXJ3aXNlIHRoZSBj b21waWxhdGlvbiB3aWxsIGZhaWwgb24gQVJNIGFzIHRoZXkgZG8gbm90IGhhdmUgZXhjZXB0aW9u cwo+ID4gKGFuZCBubyBhc20vdWFjY2Vzcy5oIGZpbGUpCj4gCj4gV2VsbCwgdGhlIHF1ZXN0aW9u IHdhcyBmb3IgdGhlICNpbmNsdWRlLCBub3QgdGhlICNpZmRlZi4KCkFoLCB5ZXMuIEFuZCB3aXRo IHRoZSAnZXgnIGJlaW5nIHBvaW50ZXJzIGl0IG1hdHRlcnMgbm8uCgo+IAo+ID4gLS0tIGEveGVu L2NvbW1vbi9zeW1ib2xzLmMKPiA+ICsrKyBiL3hlbi9jb21tb24vc3ltYm9scy5jCj4gPiBAQCAt MTcsNiArMTcsNyBAQAo+ID4gICNpbmNsdWRlIDx4ZW4vbGliLmg+Cj4gPiAgI2luY2x1ZGUgPHhl bi9zdHJpbmcuaD4KPiA+ICAjaW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+Cj4gPiArI2luY2x1ZGUg PHhlbi92aXJ0dWFsX3JlZ2lvbi5oPgo+ID4gICNpbmNsdWRlIDxwdWJsaWMvcGxhdGZvcm0uaD4K PiA+ICAjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgo+ID4gIAo+ID4gQEAgLTk3LDggKzk4 LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBnZXRfc3ltYm9sX29mZnNldCh1bnNpZ25lZCBsb25n IHBvcykKPiA+ICAKPiA+ICBib29sX3QgaXNfYWN0aXZlX2tlcm5lbF90ZXh0KHVuc2lnbmVkIGxv bmcgYWRkcikKPiA+ICB7Cj4gPiAtICAgIHJldHVybiAoaXNfa2VybmVsX3RleHQoYWRkcikgfHwK PiA+IC0gICAgICAgICAgICAoc3lzdGVtX3N0YXRlIDwgU1lTX1NUQVRFX2FjdGl2ZSAmJiBpc19r ZXJuZWxfaW5pdHRleHQoYWRkcikpKTsKPiA+ICsgICAgcmV0dXJuICEhc2VhcmNoX3ZpcnR1YWxf cmVnaW9ucyhhZGRyKTsKPiAKPiBzZWFyY2hfdmlydHVhbF9yZWdpb25zKCkgZG9lc24ndCBzb3Vu ZCBsaWtlIGl0IHdvdWxkIGJlIGxvb2tpbmcgZm9yCj4gdGV4dCBhZGRyZXNzZXMgb25seS4KCkkg YW0gbm90IHN1cmUgd2hhdCB3b3VsZCBiZSBhIGJldHRlciBuYW1lIC0gYXMgaXQKKHNlYXJjaF92 aXJ0dWFsX3JlZ2lvbnMpIGlzIHVzZWQgYnkgdGhyZWUgb3RoZXIgY2FsbGVycz8KCnNlYXJjaF9m b3JfYWRkcj8gCgouLiBzbmlwLi4KPiA+ICtzdGF0aWMgdm9pZCBfX3VucmVnaXN0ZXJfdmlydHVh bF9yZWdpb24oc3RydWN0IHZpcnR1YWxfcmVnaW9uICpyKQo+IAo+ID4gK3sKPiA+ICsgICAgdW5z aWduZWQgbG9uZyBmbGFnczsKPiA+ICsKPiA+ICsgICAgc3Bpbl9sb2NrX2lycXNhdmUoJnZpcnR1 YWxfcmVnaW9uX2xvY2ssIGZsYWdzKTsKPiA+ICsgICAgbGlzdF9kZWxfcmN1KCZyLT5saXN0KTsK PiA+ICsgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdmlydHVhbF9yZWdpb25fbG9jaywgZmxh Z3MpOwo+ID4gKyAgICAvKgo+ID4gKyAgICAgKiBXZSBkbyBub3QgbmVlZCB0byBpbnZva2UgY2Fs bF9yY3UuCj4gPiArICAgICAqCj4gPiArICAgICAqIFRoaXMgaXMgZHVlIHRvIHRoZSBmYWN0IHRo YXQgb24gdGhlIGRlbGV0aW9uIHdlIGhhdmUgbWFkZSBzdXJlCj4gPiArICAgICAqIHRvIHVzZSBz cGlubG9ja3MgKHRvIGd1YXJkIGFnYWluc3Qgc29tZWJvZHkgZWxzZSBjYWxsaW5nCj4gPiArICAg ICAqIHVucmVnaXN0ZXJfdmlydHVhbF9yZWdpb24pIGFuZCBsaXN0X2RlbGV0aW9uIHNwaWNlZCB3 aXRoIGFuIG1lbW9yeQo+ID4gKyAgICAgKiBiYXJyaWVyIC0gd2hpY2ggd2lsbCBmbHVzaCBvdXQg dGhlIGNhY2hlIGxpbmVzIGluIG90aGVyIENQVXMuCj4gCj4gSSBkb24ndCB0aGluayBiYXJyaWVy cyBkbyBhbnkga2luZCBvZiBjYWNoZSBmbHVzaGluZyBvbiByZW1vdGUgQ1BVcwo+IChub3QgZXZl biBvbiB0aGUgbG9jYWwgb25lKS4KCkkgYW0gbm90IHN1cmUgd2hhdCBJIGhhZCBiZWVuIHRoaW5r aW5nLiBUaGUgb25seSB0aGluZyBpdCBkb2VzIGlzIGEKbWVtb3J5IGJhcnJpZXIuCgouLiBzbmlw Li4KCkkgYmVsaWV2ZSBJJ3ZlIGFkZHJlc3NlZCB0aGUgcmV2aWV3IGNvbW1lbnRzIHlvdSBoYWQ6 CkZyb20gNGEyNjkwYmE4MTVkYjdlZGQ1ZmUwNzVjOGQ3ZTllMmFjNjJhMDAyMCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0Bv cmFjbGUuY29tPgpEYXRlOiBUaHUsIDEwIE1hciAyMDE2IDE2OjM1OjUwIC0wNTAwClN1YmplY3Q6 IFtQQVRDSF0gYXJtL3g4NjogVXNlIHN0cnVjdCB2aXJ0dWFsX3JlZ2lvbiB0byBkbyBidWcsIHN5 bWJvbCwgYW5kCiAoeDg2KSBleGNlcHRpb24gdGFibGVzIGxvb2t1cC4KCkR1cmluZyBleGVjdXRp b24gb2YgdGhlIGh5cGVydmlzb3Igd2UgaGF2ZSB0d28gcmVnaW9ucyBvZgpleGVjdXRhYmxlIGNv ZGUgLSBzdGV4dCAtPiBfZXRleHQsIGFuZCBfc2luaXR0ZXh0IC0+IF9laW5pdGV4dC4KClRoZSBs YXRlciBpcyBub3QgbmVlZGVkIGFmdGVyIGJvb3R1cC4KCldlIGFsc28gaGF2ZSB2YXJpb3VzIGJ1 aWx0LWluIG1hY3JvcyBhbmQgZnVuY3Rpb25zIHRvIHNlYXJjaAppbiBiZXR3ZWVuIHRob3NlIHR3 byBzd2F0aHMgZGVwZW5kaW5nIG9uIHRoZSBzdGF0ZSBvZiB0aGUgc3lzdGVtLgoKVGhhdCBpcyBl aXRoZXIgZm9yIGJ1Z19mcmFtZXMsIGV4Y2VwdGlvbnMgKHg4Nikgb3Igc3ltYm9sCm5hbWVzIGZv ciB0aGUgaW5zdHJ1Y3Rpb24uCgpXaXRoIHhTcGxpY2UgaW4gdGhlIHBpY3R1cmUgLSB3ZSBuZWVk IGEgbWVjaGFuc2ltIGZvciBuZXcgcGF5bG9hZHMKdG8gc2VhcmNoZWQgYXMgd2VsbCBmb3IgYWxs IG9mIHRoaXMuCgpPcmlnaW5hbGx5IHdlIGhhZCBleHRyYSAnaWYgKHhzcGxpY2UpLi4uJyBidXQg dGhhdCBnZXRzCmEgYml0IHRpcmluZyBhbmQgZG9lcyBub3QgaG9vayB1cCBuaWNlbHkuCgpUaGlz ICdzdHJ1Y3QgdmlydHVhbF9yZWdpb24nIGFuZCB2aXJ0dWFsX3JlZ2lvbl9saXN0IHByb3ZpZGUg YQptZWNoYW5pc20gdG8gc2VhcmNoIGZvciB0aGUgYnVnX2ZyYW1lcywgZXhjZXB0aW9uIHRhYmxl LAphbmQgc3ltYm9sIG5hbWVzIGVudHJpZXMgd2l0aG91dCBoYXZpbmcgdmFyaW91cyBjYWxscyBp bgpvdGhlciBzdWItY29tcG9uZW50cyBpbiB0aGUgc3lzdGVtLgoKQ29kZSB3aGljaCB3aXNoZXMg dG8gcGFydGljaXBhdGUgaW4gYnVnX2ZyYW1lcyBhbmQgZXhjZXB0aW9uIHRhYmxlCmVudHJpZXMg c2VhcmNoIGhhcyB0byBvbmx5IHVzZSB0d28gcHVibGljIEFQSXM6CiAtIHJlZ2lzdGVyX3ZpcnR1 YWxfcmVnaW9uCiAtIHVucmVnaXN0ZXJfdmlydHVhbF9yZWdpb24KCnRvIGxldCB0aGUgY29yZSBj b2RlIGtub3cuCgpJZiB0aGUgLT5sb29rdXBfc3ltYm9sIGlzIG5vdCB0aGVuIHRoZSBkZWZhdWx0 IGludGVybmFsIHN5bWJvbCBsb29rdXAKbWVjaGFuaXNtIGlzIHVzZWQuCgpTdWdnZXN0ZWQtYnk6 IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+ClNpZ25lZC1vZmYtYnk6 IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KCi0tLQpDYzog U3RlZmFubyBTdGFiZWxsaW5pIDxzdGVmYW5vLnN0YWJlbGxpbmlAY2l0cml4LmNvbT4KQ2M6IEp1 bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+CkNjOiBLZWlyIEZyYXNlciA8a2VpckB4 ZW4ub3JnPgpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogQW5kcmV3IENv b3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KCnY0OiBOZXcgcGF0Y2guCnY1OgogLSBS ZW5hbWUgdG8gdmlydHVhbF9yZWdpb24uCiAtIERpdGNoIHRoZSAnc2tpcCcgZnVuY3Rpb24uCiAt IFJlbW92ZSB0aGUgX3N0ZXh0LgogLSBVc2UgUkNVIGxpc3RzLgogLSBBZGQgYSBzZWFyY2ggZnVu Y3Rpb24uCiAtIFJlbW92ZSBleHRlcm4sIGFkZCByY3VfcmVhZF9sb2NrLiByZW1vdmUgX18gZnJv bSBuYW1lLgotLS0KLS0tCiB4ZW4vYXJjaC9hcm0vc2V0dXAuYyAgICAgICAgICAgICB8ICAgNCAr CiB4ZW4vYXJjaC9hcm0vdHJhcHMuYyAgICAgICAgICAgICB8ICAzOSArKysrKystLS0tCiB4ZW4v YXJjaC94ODYvZXh0YWJsZS5jICAgICAgICAgICB8ICAxMiArKy0KIHhlbi9hcmNoL3g4Ni9zZXR1 cC5jICAgICAgICAgICAgIHwgICA2ICsrCiB4ZW4vYXJjaC94ODYvdHJhcHMuYyAgICAgICAgICAg ICB8ICA0MCArKysrKystLS0tCiB4ZW4vY29tbW9uL01ha2VmaWxlICAgICAgICAgICAgICB8ICAg MSArCiB4ZW4vY29tbW9uL3N5bWJvbHMuYyAgICAgICAgICAgICB8ICAxMSArKy0KIHhlbi9jb21t b24vdmlydHVhbF9yZWdpb24uYyAgICAgIHwgMTYwICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogeGVuL2luY2x1ZGUveGVuL3N5bWJvbHMuaCAgICAgICAgfCAgIDkgKysr CiB4ZW4vaW5jbHVkZS94ZW4vdmlydHVhbF9yZWdpb24uaCB8ICA0OCArKysrKysrKysrKysKIDEw IGZpbGVzIGNoYW5nZWQsIDI5MyBpbnNlcnRpb25zKCspLCAzNyBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCB4ZW4vY29tbW9uL3ZpcnR1YWxfcmVnaW9uLmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCB4ZW4vaW5jbHVkZS94ZW4vdmlydHVhbF9yZWdpb24uaAoKZGlmZiAtLWdpdCBhL3hlbi9h cmNoL2FybS9zZXR1cC5jIGIveGVuL2FyY2gvYXJtL3NldHVwLmMKaW5kZXggNmQyMDVhOS4uMDlm ZjFlYSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL3NldHVwLmMKKysrIGIveGVuL2FyY2gvYXJt L3NldHVwLmMKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDx4ZW4va2V5aGFuZGxlci5oPgog I2luY2x1ZGUgPHhlbi9jcHUuaD4KICNpbmNsdWRlIDx4ZW4vcGZuLmg+CisjaW5jbHVkZSA8eGVu L3ZpcnR1YWxfcmVnaW9uLmg+CiAjaW5jbHVkZSA8eGVuL3ZtYXAuaD4KICNpbmNsdWRlIDx4ZW4v bGliZmR0L2xpYmZkdC5oPgogI2luY2x1ZGUgPHhlbi9hY3BpLmg+CkBAIC04NjAsNiArODYxLDkg QEAgdm9pZCBfX2luaXQgc3RhcnRfeGVuKHVuc2lnbmVkIGxvbmcgYm9vdF9waHlzX29mZnNldCwK IAogICAgIHN5c3RlbV9zdGF0ZSA9IFNZU19TVEFURV9hY3RpdmU7CiAKKyAgICAvKiBNdXN0IGJl IGRvbmUgcGFzdCBzZXR0aW5nIHN5c3RlbV9zdGF0ZS4gKi8KKyAgICB1bnJlZ2lzdGVyX2luaXRf dmlydHVhbF9yZWdpb24oKTsKKwogICAgIGRvbWFpbl91bnBhdXNlX2J5X3N5c3RlbWNvbnRyb2xs ZXIoZG9tMCk7CiAKICAgICAvKiBTd2l0Y2ggb24gdG8gdGhlIGR5bmFtaWNhbGx5IGFsbG9jYXRl ZCBzdGFjayBmb3IgdGhlIGlkbGUgdmNwdQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3RyYXBz LmMgYi94ZW4vYXJjaC9hcm0vdHJhcHMuYwppbmRleCAzMWQyMTE1Li42OWNjYjQ3IDEwMDY0NAot LS0gYS94ZW4vYXJjaC9hcm0vdHJhcHMuYworKysgYi94ZW4vYXJjaC9hcm0vdHJhcHMuYwpAQCAt MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHhlbi9zb2Z0aXJxLmg+CiAjaW5jbHVkZSA8eGVuL2Rv bWFpbl9wYWdlLmg+CiAjaW5jbHVkZSA8eGVuL3BlcmZjLmg+CisjaW5jbHVkZSA8eGVuL3ZpcnR1 YWxfcmVnaW9uLmg+CiAjaW5jbHVkZSA8cHVibGljL3NjaGVkLmg+CiAjaW5jbHVkZSA8cHVibGlj L3hlbi5oPgogI2luY2x1ZGUgPGFzbS9kZWJ1Z2dlci5oPgpAQCAtMTAxLDYgKzEwMiw4IEBAIGlu dGVnZXJfcGFyYW0oImRlYnVnX3N0YWNrX2xpbmVzIiwgZGVidWdfc3RhY2tfbGluZXMpOwogCiB2 b2lkIGluaXRfdHJhcHModm9pZCkKIHsKKyAgICBzZXR1cF92aXJ0dWFsX3JlZ2lvbnMoKTsKKwog ICAgIC8qIFNldHVwIEh5cCB2ZWN0b3IgYmFzZSAqLwogICAgIFdSSVRFX1NZU1JFRygodmFkZHJf dCloeXBfdHJhcHNfdmVjdG9yLCBWQkFSX0VMMik7CiAKQEAgLTEwNzcsMjcgKzEwODAsMzMgQEAg dm9pZCBkb191bmV4cGVjdGVkX3RyYXAoY29uc3QgY2hhciAqbXNnLCBzdHJ1Y3QgY3B1X3VzZXJf cmVncyAqcmVncykKIAogaW50IGRvX2J1Z19mcmFtZShzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVn cywgdmFkZHJfdCBwYykKIHsKLSAgICBjb25zdCBzdHJ1Y3QgYnVnX2ZyYW1lICpidWc7CisgICAg Y29uc3Qgc3RydWN0IGJ1Z19mcmFtZSAqYnVnID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpwcmVm aXggPSAiIiwgKmZpbGVuYW1lLCAqcHJlZGljYXRlOwogICAgIHVuc2lnbmVkIGxvbmcgZml4dXA7 Ci0gICAgaW50IGlkLCBsaW5lbm87Ci0gICAgc3RhdGljIGNvbnN0IHN0cnVjdCBidWdfZnJhbWUg KmNvbnN0IHN0b3BfZnJhbWVzW10gPSB7Ci0gICAgICAgIF9fc3RvcF9idWdfZnJhbWVzXzAsCi0g ICAgICAgIF9fc3RvcF9idWdfZnJhbWVzXzEsCi0gICAgICAgIF9fc3RvcF9idWdfZnJhbWVzXzIs Ci0gICAgICAgIE5VTEwKLSAgICB9OworICAgIGludCBpZCA9IC0xLCBsaW5lbm87CisgICAgc3Ry dWN0IHZpcnR1YWxfcmVnaW9uICpyZWdpb247CiAKLSAgICBmb3IgKCBidWcgPSBfX3N0YXJ0X2J1 Z19mcmFtZXMsIGlkID0gMDsgc3RvcF9mcmFtZXNbaWRdOyArK2J1ZyApCisgICAgcmVnaW9uID0g c2VhcmNoX2Zvcl9hZGRyKHBjKTsKKyAgICBpZiAoIHJlZ2lvbiApCiAgICAgewotICAgICAgICB3 aGlsZSAoIHVubGlrZWx5KGJ1ZyA9PSBzdG9wX2ZyYW1lc1tpZF0pICkKLSAgICAgICAgICAgICsr aWQ7CisgICAgICAgIGZvciAoIGlkID0gMDsgaWQgPCBCVUdGUkFNRV9OUjsgaWQrKyApCisgICAg ICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBidWdfZnJhbWUgKmI7CisgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgaTsKIAotICAgICAgICBpZiAoICgodmFkZHJfdClidWdfbG9jKGJ1Zykp ID09IHBjICkKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZm9yICggaSA9IDAsIGIg PSByZWdpb24tPmZyYW1lW2lkXS5idWdzOworICAgICAgICAgICAgICAgICAgaSA8IHJlZ2lvbi0+ ZnJhbWVbaWRdLm5fYnVnczsgYisrLCBpKysgKQorICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgIGlmICggKCh2YWRkcl90KWJ1Z19sb2MoYikpID09IHBjICkKKyAgICAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgICAgIGJ1ZyA9IGI7CisgICAgICAgICAgICAgICAgICAgIGdvdG8g Zm91bmQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAg fQotCi0gICAgaWYgKCAhc3RvcF9mcmFtZXNbaWRdICkKKyBmb3VuZDoKKyAgICBpZiAoICFidWcg KQogICAgICAgICByZXR1cm4gLUVOT0VOVDsKIAogICAgIC8qIFdBUk4sIEJVRyBvciBBU1NFUlQ6 IGRlY29kZSB0aGUgZmlsZW5hbWUgcG9pbnRlciBhbmQgbGluZSBudW1iZXIuICovCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvZXh0YWJsZS5jIGIveGVuL2FyY2gveDg2L2V4dGFibGUuYwppbmRl eCA4OWI1YmNiLi4xNGNkNTMzIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZXh0YWJsZS5jCisr KyBiL3hlbi9hcmNoL3g4Ni9leHRhYmxlLmMKQEAgLTEsMTAgKzEsMTIgQEAKIAotI2luY2x1ZGUg PHhlbi9jb25maWcuaD4KICNpbmNsdWRlIDx4ZW4vaW5pdC5oPgorI2luY2x1ZGUgPHhlbi9saXN0 Lmg+CiAjaW5jbHVkZSA8eGVuL3BlcmZjLmg+CisjaW5jbHVkZSA8eGVuL3JjdXBkYXRlLmg+CiAj aW5jbHVkZSA8eGVuL3NvcnQuaD4KICNpbmNsdWRlIDx4ZW4vc3BpbmxvY2suaD4KICNpbmNsdWRl IDxhc20vdWFjY2Vzcy5oPgorI2luY2x1ZGUgPHhlbi92aXJ0dWFsX3JlZ2lvbi5oPgogCiAjZGVm aW5lIEVYX0ZJRUxEKHB0ciwgZmllbGQpICgodW5zaWduZWQgbG9uZykmKHB0ciktPmZpZWxkICsg KHB0ciktPmZpZWxkKQogCkBAIC04MCw4ICs4MiwxMiBAQCBzZWFyY2hfb25lX3RhYmxlKGNvbnN0 IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmZpcnN0LAogdW5zaWduZWQgbG9uZwogc2Vh cmNoX2V4Y2VwdGlvbl90YWJsZSh1bnNpZ25lZCBsb25nIGFkZHIpCiB7Ci0gICAgcmV0dXJuIHNl YXJjaF9vbmVfdGFibGUoCi0gICAgICAgIF9fc3RhcnRfX19leF90YWJsZSwgX19zdG9wX19fZXhf dGFibGUtMSwgYWRkcik7CisgICAgc3RydWN0IHZpcnR1YWxfcmVnaW9uICpyZWdpb24gPSBzZWFy Y2hfZm9yX2FkZHIoYWRkcik7CisKKyAgICBpZiAoIHJlZ2lvbiAmJiByZWdpb24tPmV4ICkKKyAg ICAgICAgcmV0dXJuIHNlYXJjaF9vbmVfdGFibGUocmVnaW9uLT5leCwgcmVnaW9uLT5leF9lbmQt MSwgYWRkcik7CisKKyAgICByZXR1cm4gMDsKIH0KIAogdW5zaWduZWQgbG9uZwpkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L3NldHVwLmMgYi94ZW4vYXJjaC94ODYvc2V0dXAuYwppbmRleCBlZTY1 ZjU1Li5jOGE1YWRiIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvc2V0dXAuYworKysgYi94ZW4v YXJjaC94ODYvc2V0dXAuYwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPHhlbi9wZm4uaD4K ICNpbmNsdWRlIDx4ZW4vbm9kZW1hc2suaD4KICNpbmNsdWRlIDx4ZW4vdG1lbV94ZW4uaD4KKyNp bmNsdWRlIDx4ZW4vdmlydHVhbF9yZWdpb24uaD4KICNpbmNsdWRlIDx4ZW4vd2F0Y2hkb2cuaD4K ICNpbmNsdWRlIDxwdWJsaWMvdmVyc2lvbi5oPgogI2luY2x1ZGUgPGNvbXBhdC9wbGF0Zm9ybS5o PgpAQCAtNTE0LDYgKzUxNSw5IEBAIHN0YXRpYyB2b2lkIG5vaW5saW5lIGluaXRfZG9uZSh2b2lk KQogCiAgICAgc3lzdGVtX3N0YXRlID0gU1lTX1NUQVRFX2FjdGl2ZTsKIAorICAgIC8qIE1VU1Qg YmUgZG9uZSBwcmlvciB0byByZW1vdmluZyAuaW5pdCBkYXRhLiAqLworICAgIHVucmVnaXN0ZXJf aW5pdF92aXJ0dWFsX3JlZ2lvbigpOworCiAgICAgZG9tYWluX3VucGF1c2VfYnlfc3lzdGVtY29u dHJvbGxlcihoYXJkd2FyZV9kb21haW4pOwogCiAgICAgLyogWmVybyB0aGUgLmluaXQgY29kZSBh bmQgZGF0YS4gKi8KQEAgLTYxNiw2ICs2MjAsOCBAQCB2b2lkIF9faW5pdCBub3JldHVybiBfX3N0 YXJ0X3hlbih1bnNpZ25lZCBsb25nIG1iaV9wKQogICAgIHNtcF9wcmVwYXJlX2Jvb3RfY3B1KCk7 CiAgICAgc29ydF9leGNlcHRpb25fdGFibGVzKCk7CiAKKyAgICBzZXR1cF92aXJ0dWFsX3JlZ2lv bnMoKTsKKwogICAgIC8qIEZ1bGwgZXhjZXB0aW9uIHN1cHBvcnQgZnJvbSBoZXJlIG9uIGluLiAq LwogCiAgICAgbG9hZGVyID0gKG1iaS0+ZmxhZ3MgJiBNQklfTE9BREVSTkFNRSkKZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni90cmFwcy5jIGIveGVuL2FyY2gveDg2L3RyYXBzLmMKaW5kZXggNmZi YjFjZi4uMzcwODMwOSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3RyYXBzLmMKKysrIGIveGVu L2FyY2gveDg2L3RyYXBzLmMKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlIDx4ZW4va2V4ZWMu aD4KICNpbmNsdWRlIDx4ZW4vdHJhY2UuaD4KICNpbmNsdWRlIDx4ZW4vcGFnaW5nLmg+CisjaW5j bHVkZSA8eGVuL3ZpcnR1YWxfcmVnaW9uLmg+CiAjaW5jbHVkZSA8eGVuL3dhdGNoZG9nLmg+CiAj aW5jbHVkZSA8YXNtL3N5c3RlbS5oPgogI2luY2x1ZGUgPGFzbS9pby5oPgpAQCAtMTEzMiwxOCAr MTEzMywxMiBAQCBzdGF0aWMgaW50IGVtdWxhdGVfZm9yY2VkX2ludmFsaWRfb3Aoc3RydWN0IGNw dV91c2VyX3JlZ3MgKnJlZ3MpCiAKIHZvaWQgZG9faW52YWxpZF9vcChzdHJ1Y3QgY3B1X3VzZXJf cmVncyAqcmVncykKIHsKLSAgICBjb25zdCBzdHJ1Y3QgYnVnX2ZyYW1lICpidWc7CisgICAgY29u c3Qgc3RydWN0IGJ1Z19mcmFtZSAqYnVnID0gTlVMTDsKICAgICB1OCBidWdfaW5zblsyXTsKICAg ICBjb25zdCBjaGFyICpwcmVmaXggPSAiIiwgKmZpbGVuYW1lLCAqcHJlZGljYXRlLCAqZWlwID0g KGNoYXIgKilyZWdzLT5laXA7CiAgICAgdW5zaWduZWQgbG9uZyBmaXh1cDsKLSAgICBpbnQgaWQs IGxpbmVubzsKLSAgICBzdGF0aWMgY29uc3Qgc3RydWN0IGJ1Z19mcmFtZSAqY29uc3Qgc3RvcF9m cmFtZXNbXSA9IHsKLSAgICAgICAgX19zdG9wX2J1Z19mcmFtZXNfMCwKLSAgICAgICAgX19zdG9w X2J1Z19mcmFtZXNfMSwKLSAgICAgICAgX19zdG9wX2J1Z19mcmFtZXNfMiwKLSAgICAgICAgX19z dG9wX2J1Z19mcmFtZXNfMywKLSAgICAgICAgTlVMTAotICAgIH07CisgICAgaW50IGlkID0gLTEs IGxpbmVubzsKKyAgICBzdHJ1Y3QgdmlydHVhbF9yZWdpb24gKnJlZ2lvbjsKIAogICAgIERFQlVH R0VSX3RyYXBfZW50cnkoVFJBUF9pbnZhbGlkX29wLCByZWdzKTsKIApAQCAtMTE2MCwxNiArMTE1 NSwyOSBAQCB2b2lkIGRvX2ludmFsaWRfb3Aoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiAg ICAgICAgICBtZW1jbXAoYnVnX2luc24sICJceGZceGIiLCBzaXplb2YoYnVnX2luc24pKSApCiAg ICAgICAgIGdvdG8gZGllOwogCi0gICAgZm9yICggYnVnID0gX19zdGFydF9idWdfZnJhbWVzLCBp ZCA9IDA7IHN0b3BfZnJhbWVzW2lkXTsgKytidWcgKQorICAgIHJlZ2lvbiA9IHNlYXJjaF9mb3Jf YWRkcihyZWdzLT5laXApOworICAgIGlmICggcmVnaW9uICkKICAgICB7Ci0gICAgICAgIHdoaWxl ICggdW5saWtlbHkoYnVnID09IHN0b3BfZnJhbWVzW2lkXSkgKQotICAgICAgICAgICAgKytpZDsK LSAgICAgICAgaWYgKCBidWdfbG9jKGJ1ZykgPT0gZWlwICkKLSAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICBmb3IgKCBpZCA9IDA7IGlkIDwgQlVHRlJBTUVfTlI7IGlkKysgKQorICAgICAgICB7 CisgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYnVnX2ZyYW1lICpiOworICAgICAgICAgICAgdW5z aWduZWQgaW50IGk7CisKKyAgICAgICAgICAgIGZvciAoIGkgPSAwLCBiID0gcmVnaW9uLT5mcmFt ZVtpZF0uYnVnczsKKyAgICAgICAgICAgICAgICAgIGkgPCByZWdpb24tPmZyYW1lW2lkXS5uX2J1 Z3M7IGIrKywgaSsrICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIGJ1Z19s b2MoYikgPT0gZWlwICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGJ1 ZyA9IGI7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZm91bmQ7CisgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQotICAgIGlmICggIXN0b3BfZnJhbWVz W2lkXSApCi0gICAgICAgIGdvdG8gZGllOwogCisgZm91bmQ6CisgICAgaWYgKCAhYnVnICkKKyAg ICAgICAgZ290byBkaWU7CiAgICAgZWlwICs9IHNpemVvZihidWdfaW5zbik7CiAgICAgaWYgKCBp ZCA9PSBCVUdGUkFNRV9ydW5fZm4gKQogICAgIHsKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vTWFr ZWZpbGUgYi94ZW4vY29tbW9uL01ha2VmaWxlCmluZGV4IDc3ZGUyN2UuLmU0M2VjNDkgMTAwNjQ0 Ci0tLSBhL3hlbi9jb21tb24vTWFrZWZpbGUKKysrIGIveGVuL2NvbW1vbi9NYWtlZmlsZQpAQCAt NTEsNiArNTEsNyBAQCBvYmoteSArPSB0aW1lLm8KIG9iai15ICs9IHRpbWVyLm8KIG9iai15ICs9 IHRyYWNlLm8KIG9iai15ICs9IHZlcnNpb24ubworb2JqLXkgKz0gdmlydHVhbF9yZWdpb24ubwog b2JqLXkgKz0gdm1fZXZlbnQubwogb2JqLXkgKz0gdm1hcC5vCiBvYmoteSArPSB2c3ByaW50Zi5v CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3N5bWJvbHMuYyBiL3hlbi9jb21tb24vc3ltYm9scy5j CmluZGV4IGE1OWM1OWQuLjIzYjE0MmQgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vc3ltYm9scy5j CisrKyBiL3hlbi9jb21tb24vc3ltYm9scy5jCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSA8 eGVuL2xpYi5oPgogI2luY2x1ZGUgPHhlbi9zdHJpbmcuaD4KICNpbmNsdWRlIDx4ZW4vc3Bpbmxv Y2suaD4KKyNpbmNsdWRlIDx4ZW4vdmlydHVhbF9yZWdpb24uaD4KICNpbmNsdWRlIDxwdWJsaWMv cGxhdGZvcm0uaD4KICNpbmNsdWRlIDx4ZW4vZ3Vlc3RfYWNjZXNzLmg+CiAKQEAgLTk3LDggKzk4 LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBnZXRfc3ltYm9sX29mZnNldCh1bnNpZ25lZCBsb25n IHBvcykKIAogYm9vbF90IGlzX2FjdGl2ZV9rZXJuZWxfdGV4dCh1bnNpZ25lZCBsb25nIGFkZHIp CiB7Ci0gICAgcmV0dXJuIChpc19rZXJuZWxfdGV4dChhZGRyKSB8fAotICAgICAgICAgICAgKHN5 c3RlbV9zdGF0ZSA8IFNZU19TVEFURV9hY3RpdmUgJiYgaXNfa2VybmVsX2luaXR0ZXh0KGFkZHIp KSk7CisgICAgcmV0dXJuICEhc2VhcmNoX2Zvcl9hZGRyKGFkZHIpOwogfQogCiBjb25zdCBjaGFy ICpzeW1ib2xzX2xvb2t1cCh1bnNpZ25lZCBsb25nIGFkZHIsCkBAIC0xMDgsMTMgKzEwOCwxOCBA QCBjb25zdCBjaGFyICpzeW1ib2xzX2xvb2t1cCh1bnNpZ25lZCBsb25nIGFkZHIsCiB7CiAgICAg dW5zaWduZWQgbG9uZyBpLCBsb3csIGhpZ2gsIG1pZDsKICAgICB1bnNpZ25lZCBsb25nIHN5bWJv bF9lbmQgPSAwOworICAgIHN0cnVjdCB2aXJ0dWFsX3JlZ2lvbiAqcmVnaW9uOwogCiAgICAgbmFt ZWJ1ZltLU1lNX05BTUVfTEVOXSA9IDA7CiAgICAgbmFtZWJ1ZlswXSA9IDA7CiAKLSAgICBpZiAo IWlzX2FjdGl2ZV9rZXJuZWxfdGV4dChhZGRyKSkKKyAgICByZWdpb24gPSBzZWFyY2hfZm9yX2Fk ZHIoYWRkcik7CisgICAgaWYgKCFyZWdpb24pCiAgICAgICAgIHJldHVybiBOVUxMOwogCisgICAg aWYgKHJlZ2lvbi0+c3ltYm9sc19sb29rdXApCisgICAgICAgIHJldHVybiByZWdpb24tPnN5bWJv bHNfbG9va3VwKGFkZHIsIHN5bWJvbHNpemUsIG9mZnNldCwgbmFtZWJ1Zik7CisKICAgICAgICAg LyogZG8gYSBiaW5hcnkgc2VhcmNoIG9uIHRoZSBzb3J0ZWQgc3ltYm9sc19hZGRyZXNzZXMgYXJy YXkgKi8KICAgICBsb3cgPSAwOwogICAgIGhpZ2ggPSBzeW1ib2xzX251bV9zeW1zOwpkaWZmIC0t Z2l0IGEveGVuL2NvbW1vbi92aXJ0dWFsX3JlZ2lvbi5jIGIveGVuL2NvbW1vbi92aXJ0dWFsX3Jl Z2lvbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmZjJkN2IKLS0tIC9k ZXYvbnVsbAorKysgYi94ZW4vY29tbW9uL3ZpcnR1YWxfcmVnaW9uLmMKQEAgLTAsMCArMSwxNjAg QEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRl cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKi8KKworI2luY2x1ZGUgPHhlbi9pbml0Lmg+ CisjaW5jbHVkZSA8eGVuL2tlcm5lbC5oPgorI2luY2x1ZGUgPHhlbi9yY3VwZGF0ZS5oPgorI2lu Y2x1ZGUgPHhlbi9zcGlubG9jay5oPgorI2luY2x1ZGUgPHhlbi92aXJ0dWFsX3JlZ2lvbi5oPgor CisjaWZkZWYgQ09ORklHX1g4NgorI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CisjZW5kaWYKKwor c3RhdGljIHN0cnVjdCB2aXJ0dWFsX3JlZ2lvbiBjb3JlID0geworICAgIC5saXN0ID0gTElTVF9I RUFEX0lOSVQoY29yZS5saXN0KSwKKyAgICAuc3RhcnQgPSAodW5zaWduZWQgbG9uZylfc3RleHQs CisgICAgLmVuZCA9ICh1bnNpZ25lZCBsb25nKV9ldGV4dCwKKyNpZmRlZiBDT05GSUdfWDg2Cisg ICAgLmV4ID0gKHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKilfX3N0YXJ0X19fZXhfdGFi bGUsCisgICAgLmV4X2VuZCA9IChzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICopX19zdG9w X19fZXhfdGFibGUsCisjZW5kaWYKK307CisKKy8qIEJlY29tZXMgaXJyZWxldmFudCB3aGVuIF9f aW5pdCBzZWN0aW9ucyBhcmUgY2xlYXJlZC4gKi8KK3N0YXRpYyBzdHJ1Y3QgdmlydHVhbF9yZWdp b24gY29yZV9pbml0IF9faW5pdGRhdGEgPSB7CisgICAgLmxpc3QgPSBMSVNUX0hFQURfSU5JVChj b3JlX2luaXQubGlzdCksCisgICAgLnN0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpX3Npbml0dGV4dCwK KyAgICAuZW5kID0gKHVuc2lnbmVkIGxvbmcpX2Vpbml0dGV4dCwKKyNpZmRlZiBDT05GSUdfWDg2 CisgICAgLyogRXZlbiBpZiB0aGV5IGFyZSBfX2luaXQgdGhlaXIgZXhjZXB0aW9uIGVudHJ5IHN0 aWxsIGdldHMgc3R1Y2sgaGVyZS4gKi8KKyAgICAuZXggPSAoc3RydWN0IGV4Y2VwdGlvbl90YWJs ZV9lbnRyeSAqKV9fc3RhcnRfX19leF90YWJsZSwKKyAgICAuZXhfZW5kID0gKHN0cnVjdCBleGNl cHRpb25fdGFibGVfZW50cnkgKilfX3N0b3BfX19leF90YWJsZSwKKyNlbmRpZgorfTsKKworLyoK KyAqIFJDVSBsb2NraW5nLiBBZGRpdGlvbnMgYXJlIGRvbmUgZWl0aGVyIGF0IHN0YXJ0dXAgKHdo ZW4gdGhlcmUgaXMgb25seQorICogb25lIENQVSkgb3Igd2hlbiBhbGwgQ1BVcyBhcmUgcnVubmlu ZyB3aXRob3V0IElSUXMuCisgKgorICogRGVsZXRpb25zIGFyZSBiaWcgdHJpY2t5LiBXZSBkbyBp dCB3aGVuIHhTcGxpY2luZyAoYWxsIENQVXMgcnVubmluZworICogd2l0aG91dCBJUlFzKSBvciBk dXJpbmcgYm9vdHVwICh3aGVuIGNsZWFyaW5nIHRoZSBpbml0KS4KKyAqCisgKiBIZW5jZSB3ZSB1 c2UgbGlzdF9kZWxfcmN1ICh3aGljaCBzcG9ydHMgYW4gbWVtb3J5IGZlbmNlKSBhbmQgYSBzcGlu bG9jaworICogb24gZGVsZXRpb24uCisgKgorICogQWxsIHJlYWRlcnMgb2YgdmlydHVhbF9yZWdp b25fbGlzdCBNVVNUIHVzZSBsaXN0IGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1LgorICoKKyAqLwor c3RhdGljIExJU1RfSEVBRCh2aXJ0dWFsX3JlZ2lvbl9saXN0KTsKK3N0YXRpYyBERUZJTkVfU1BJ TkxPQ0sodmlydHVhbF9yZWdpb25fbG9jayk7CitzdGF0aWMgREVGSU5FX1JDVV9SRUFEX0xPQ0so cmN1X3ZpcnR1YWxfcmVnaW9uX2xvY2spOworCitzdHJ1Y3QgdmlydHVhbF9yZWdpb24qIHNlYXJj aF9mb3JfYWRkcih1bnNpZ25lZCBsb25nIGFkZHIpCit7CisgICAgc3RydWN0IHZpcnR1YWxfcmVn aW9uICpyZWdpb247CisKKyAgICByY3VfcmVhZF9sb2NrKCZyY3VfdmlydHVhbF9yZWdpb25fbG9j ayk7CisKKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSggcmVnaW9uLCAmdmlydHVhbF9yZWdp b25fbGlzdCwgbGlzdCApCisgICAgeworICAgICAgICBpZiAoIGFkZHIgPj0gcmVnaW9uLT5zdGFy dCAmJiBhZGRyIDwgcmVnaW9uLT5lbmQgKQorICAgICAgICB7CisgICAgICAgICAgICByY3VfcmVh ZF91bmxvY2soJnJjdV92aXJ0dWFsX3JlZ2lvbl9sb2NrKTsKKyAgICAgICAgICAgIHJldHVybiBy ZWdpb247CisgICAgICAgIH0KKyAgICB9CisKKyAgICByY3VfcmVhZF91bmxvY2soJnJjdV92aXJ0 dWFsX3JlZ2lvbl9sb2NrKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworaW50IHJlZ2lzdGVyX3Zp cnR1YWxfcmVnaW9uKHN0cnVjdCB2aXJ0dWFsX3JlZ2lvbiAqcikKK3sKKyAgICBBU1NFUlQoIWxv Y2FsX2lycV9pc19lbmFibGVkKCkpOworCisgICAgbGlzdF9hZGRfdGFpbF9yY3UoJnItPmxpc3Qs ICZ2aXJ0dWFsX3JlZ2lvbl9saXN0KTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9p ZCByZW1vdmVfdmlydHVhbF9yZWdpb24oc3RydWN0IHZpcnR1YWxfcmVnaW9uICpyKQoreworICAg IHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKyAgICBzcGluX2xvY2tfaXJxc2F2ZSgmdmlydHVhbF9y ZWdpb25fbG9jaywgZmxhZ3MpOworICAgIGxpc3RfZGVsX3JjdSgmci0+bGlzdCk7CisgICAgc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmdmlydHVhbF9yZWdpb25fbG9jaywgZmxhZ3MpOworICAgIC8q CisgICAgICogV2UgZG8gbm90IG5lZWQgdG8gaW52b2tlIGNhbGxfcmN1LgorICAgICAqCisgICAg ICogVGhpcyBpcyBkdWUgdG8gdGhlIGZhY3QgdGhhdCBvbiB0aGUgZGVsZXRpb24gd2UgaGF2ZSBt YWRlIHN1cmUKKyAgICAgKiB0byB1c2Ugc3BpbmxvY2tzICh0byBndWFyZCBhZ2FpbnN0IHNvbWVi b2R5IGVsc2UgY2FsbGluZworICAgICAqIHVucmVnaXN0ZXJfdmlydHVhbF9yZWdpb24pIGFuZCBs aXN0X2RlbGV0aW9uIHNwaWNlZCB3aXRoCisgICAgICogbWVtb3J5IGJhcnJpZXIuCisgICAgICoK KyAgICAgKiBUaGF0IHByb3RlY3RzIHVzIGZyb20gY29ycnVwdGluZyB0aGUgbGlzdCBhcyB0aGUg cmVhZGVycyBhbGwKKyAgICAgKiB1c2UgbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3Ugd2hpY2ggaXMg c2FmZSBhZ2FpbnN0IGNvbmN1cnJlbnQKKyAgICAgKiBkZWxldGlvbnMuCisgICAgICovCit9CisK K3ZvaWQgdW5yZWdpc3Rlcl92aXJ0dWFsX3JlZ2lvbihzdHJ1Y3QgdmlydHVhbF9yZWdpb24gKnIp Cit7CisgICAgLyogRXhwZWN0ZWQgdG8gYmUgY2FsbGVkIGZyb20geFNwbGljZSAtIHdoaWNoIGhh cyBJUlFzIGRpc2FibGVkLiAqLworICAgIEFTU0VSVCghbG9jYWxfaXJxX2lzX2VuYWJsZWQoKSk7 CisKKyAgICByZW1vdmVfdmlydHVhbF9yZWdpb24ocik7Cit9CisKK3ZvaWQgdW5yZWdpc3Rlcl9p bml0X3ZpcnR1YWxfcmVnaW9uKHZvaWQpCit7CisgICAgQlVHX09OKHN5c3RlbV9zdGF0ZSAhPSBT WVNfU1RBVEVfYWN0aXZlKTsKKworICAgIHJlbW92ZV92aXJ0dWFsX3JlZ2lvbigmY29yZV9pbml0 KTsKK30KKwordm9pZCBfX2luaXQgc2V0dXBfdmlydHVhbF9yZWdpb25zKHZvaWQpCit7CisgICAg c3NpemVfdCBzejsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBzdGF0aWMgY29uc3Qgc3RydWN0 IGJ1Z19mcmFtZSAqY29uc3QgX19pbml0Y29uc3RyZWwgYnVnX2ZyYW1lc1tdID0geworICAgICAg ICBfX3N0YXJ0X2J1Z19mcmFtZXMsCisgICAgICAgIF9fc3RvcF9idWdfZnJhbWVzXzAsCisgICAg ICAgIF9fc3RvcF9idWdfZnJhbWVzXzEsCisgICAgICAgIF9fc3RvcF9idWdfZnJhbWVzXzIsCisj aWZkZWYgQ09ORklHX1g4NgorICAgICAgICBfX3N0b3BfYnVnX2ZyYW1lc18zLAorI2VuZGlmCisg ICAgICAgIE5VTEwKKyAgICB9OworCisgICAgZm9yICggaSA9IDE7IGJ1Z19mcmFtZXNbaV07IGkr KyApCisgICAgeworICAgICAgICBjb25zdCBzdHJ1Y3QgYnVnX2ZyYW1lICpzOworCisgICAgICAg IHMgPSBidWdfZnJhbWVzW2kgLSAxXTsKKyAgICAgICAgc3ogPSBidWdfZnJhbWVzW2ldIC0gczsK KworICAgICAgICBjb3JlLmZyYW1lW2kgLSAxXS5uX2J1Z3MgPSBzejsKKyAgICAgICAgY29yZS5m cmFtZVtpIC0gMV0uYnVncyA9IHM7CisKKyAgICAgICAgY29yZV9pbml0LmZyYW1lW2kgLSAxXS5u X2J1Z3MgPSBzejsKKyAgICAgICAgY29yZV9pbml0LmZyYW1lW2kgLSAxXS5idWdzID0gczsKKyAg ICB9CisKKyAgICByZWdpc3Rlcl92aXJ0dWFsX3JlZ2lvbigmY29yZV9pbml0KTsKKyAgICByZWdp c3Rlcl92aXJ0dWFsX3JlZ2lvbigmY29yZSk7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6 CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDog NAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAq LwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3N5bWJvbHMuaCBiL3hlbi9pbmNsdWRlL3hl bi9zeW1ib2xzLmgKaW5kZXggMWZhMDUzNy4uZjU4ZTYxMSAxMDA2NDQKLS0tIGEveGVuL2luY2x1 ZGUveGVuL3N5bWJvbHMuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vc3ltYm9scy5oCkBAIC01LDYg KzUsMTUgQEAKIAogI2RlZmluZSBLU1lNX05BTUVfTEVOIDEyNwogCisvKgorICogVHlwZWRlZiBm b3IgdGhlIGNhbGxiYWNrIGZ1bmN0aW9ucyB0aGF0IHN5bWJvbHNfbG9va3VwCisgKiBjYW4gY2Fs bCBpZiB2aXJ0dWFsX3JlZ2lvbl9saXN0IGhhcyBhbiBjYWxsYmFjayBmb3IgaXQuCisgKi8KK3R5 cGVkZWYgY29uc3QgY2hhciAqc3ltYm9sc19sb29rdXBfdCh1bnNpZ25lZCBsb25nIGFkZHIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqc3ltYm9s c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n ICpvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbmFt ZWJ1Zik7CisKIC8qIExvb2t1cCBhbiBhZGRyZXNzLiAqLwogY29uc3QgY2hhciAqc3ltYm9sc19s b29rdXAodW5zaWduZWQgbG9uZyBhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyAqc3ltYm9sc2l6ZSwKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi92aXJ0 dWFsX3JlZ2lvbi5oIGIveGVuL2luY2x1ZGUveGVuL3ZpcnR1YWxfcmVnaW9uLmgKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ2NDBjYwotLS0gL2Rldi9udWxsCisrKyBiL3hl bi9pbmNsdWRlL3hlbi92aXJ0dWFsX3JlZ2lvbi5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBD b3B5cmlnaHQgKGMpIDIwMTYgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4KKyAqCisgKi8KKworI2lmbmRlZiBfX1hFTl9WSVJUVUFMX1JFR0lPTl9MSVNU X18KKyNkZWZpbmUgX19YRU5fVklSVFVBTF9SRUdJT05fTElTVF9fCisKKyNpbmNsdWRlIDx4ZW4v bGlzdC5oPgorI2luY2x1ZGUgPHhlbi9zeW1ib2xzLmg+CisKK3N0cnVjdCB2aXJ0dWFsX3JlZ2lv bgoreworICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKKyAgICB1bnNpZ25lZCBsb25nIHN0YXJ0 OyAgICAgICAgLyogVmlydHVhbCBhZGRyZXNzIHN0YXJ0LiAqLworICAgIHVuc2lnbmVkIGxvbmcg ZW5kOyAgICAgICAgICAvKiBWaXJ0dWFsIGFkZHJlc3Mgc3RhcnQuICovCisKKyAgICAvKgorICAg ICAqIElmIHRoaXMgaXMgTlVMTCB0aGUgZGVmYXVsdCBsb29rdXAgbWVjaGFuaXNtIGlzIHVzZWQu CisgICAgICovCisgICAgc3ltYm9sc19sb29rdXBfdCAqc3ltYm9sc19sb29rdXA7CisKKyAgICBz dHJ1Y3QgeworICAgICAgICBjb25zdCBzdHJ1Y3QgYnVnX2ZyYW1lICpidWdzOyAvKiBUaGUgcG9p bnRlciB0byBhcnJheSBvZiBidWcgZnJhbWVzLiAqLworICAgICAgICBzc2l6ZV90IG5fYnVnczsg ICAgICAgICAvKiBUaGUgbnVtYmVyIG9mIHRoZW0uICovCisgICAgfSBmcmFtZVtCVUdGUkFNRV9O Ul07CisKKyAgICBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleDsKKyAgICBzdHJ1Y3Qg ZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleF9lbmQ7Cit9OworCitzdHJ1Y3QgdmlydHVhbF9yZWdp b24gKnNlYXJjaF9mb3JfYWRkcih1bnNpZ25lZCBsb25nIGFkZHIpOwordm9pZCBzZXR1cF92aXJ0 dWFsX3JlZ2lvbnModm9pZCk7Cit2b2lkIHVucmVnaXN0ZXJfaW5pdF92aXJ0dWFsX3JlZ2lvbih2 b2lkKTsKK2ludCByZWdpc3Rlcl92aXJ0dWFsX3JlZ2lvbihzdHJ1Y3QgdmlydHVhbF9yZWdpb24g KnIpOwordm9pZCB1bnJlZ2lzdGVyX3ZpcnR1YWxfcmVnaW9uKHN0cnVjdCB2aXJ0dWFsX3JlZ2lv biAqcik7CisKKyNlbmRpZiAvKiBfX1hFTl9WSVJUVUFMX1JFR0lPTl9MSVNUX18gKi8KKworLyoK KyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIK KyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1v ZGU6IG5pbAorICogRW5kOgorICovCi0tIAoyLjUuMAoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==