From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v9 10/27] xsplice: Add helper elf routines Date: Wed, 27 Apr 2016 00:06:55 -0400 Message-ID: <20160427040655.GG26540@localhost.localdomain> References: <1461598514-5440-1-git-send-email-konrad.wilk@oracle.com> <1461598514-5440-11-git-send-email-konrad.wilk@oracle.com> <571F7D1A02000078000E5D4E@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 1avGlM-0002P5-0r for xen-devel@lists.xenproject.org; Wed, 27 Apr 2016 04:07:44 +0000 Content-Disposition: inline In-Reply-To: <571F7D1A02000078000E5D4E@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, Ian Jackson , Tim Deegan , mpohlack@amazon.de, sasha.levin@oracle.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org PiA+ICtzdGF0aWMgaW50IGVsZl9yZXNvbHZlX3NlY3Rpb25zKHN0cnVjdCB4c3BsaWNlX2VsZiAq ZWxmLCBjb25zdCB2b2lkICpkYXRhKQo+ID4gK3sKLi5zbmlwLi4KPiA+ICsgICAgLyogZV9zaG9m ZiBhbmQgZV9zaG51bSBvdmVyZmxvdyBjaGVja3MgYXJlIGRvbmUgaW4geHNwbGljZV9oZWFkZXJf Y2hlY2suICovCj4gPiArICAgIGRlbHRhID0gZWxmLT5oZHItPmVfc2hvZmYgKyBlbGYtPmhkci0+ ZV9zaG51bSAqIGVsZi0+aGRyLT5lX3NoZW50c2l6ZTsKPiAKPiBUaGUgYWRkZWQgY29tbWVudCBq dXN0IGhlbHBzIG1ha2Ugb2J2aW91cyB0aGF0IHRoZSBvdmVyZmxvdyBJCj4gYmVsaWV2ZSBBbmRy ZXcgd2FzIHdvcnJpZWQgYWJvdXQgaXMgc3RpbGwgbm90IGJlaW5nIHRha2VuIGNhcmUgb2Y6Cj4g QWxsIHhzcGxpY2VfaGVhZGVyX2NoZWNrKCkgZG9lcyBpcyByYW5nZSBjaGVjayB0aGUgdHdvIHZh bHVlcwo+IG1lbnRpb25lZCBpbiB0aGUgY29tbWVudC4gQnV0IEkgYWdyZWUgdGhhdCBhIHByb3Bl ciByYW5nZSBjaGVjawo+IChhdCBvbmNlIGVsaW1pbmF0aW5nIG92ZXJmbG93IGNvbmNlcm5zIGZv ciB0aGUgYXJpdGhtZXRpYyBoZXJlKQo+IHdvdWxkIGJldHRlciBsaXZlIHRoZXJlIChhbmQgYWxz byBzZWUgdGhlcmUpLgoKLi5zbmlwLi4KPiA+ICtzdGF0aWMgaW50IHhzcGxpY2VfaGVhZGVyX2No ZWNrKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQo+ID4gK3sgCi4uc25pcC4uCj4gPiAr ICAgIGlmICggZWxmLT5oZHItPmVfc2hudW0gPiA2NCApCj4gPiArICAgIHsKPiA+ICsgICAgICAg IGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFRvbyBtYW55ICgldSkgc2VjdGlvbnMh XG4iLAo+ID4gKyAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIGVsZi0+aGRyLT5lX3NobnVtKTsK PiA+ICsgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAg ICBpZiAoIGVsZi0+aGRyLT5lX3Nob2ZmID4gVUxPTkdfTUFYICkKPiAKPiBXaHkgbm90ICI+PSBl bGYtPmxlbiIgKGFuZCBJIHNlZSBpdCB3YXMgYWxtb3N0IHRoYXQgd2F5IGluIHY4LjEpPwoKSSBt aXN1bmRlcnN0b29kIHlvdXIgY29tbWVudC4gWW91IG1lbnRpb25lZCB0byBtZSB0aGF0IHdlIGhh dmUKYW4gYm91bmRhcnkgY2hlY2sgaGVyZSAod2hlbiBpdCB3YXMgYWdhaW5zdCBlbGYtPmxlbikg YW5kIHRoYXQgeW91CndhbnRlZCBhbiBvdmVyZmxvdyAtIHNvIEkgcmVwbGFjZWQgaXQgLSB3aGls ZSB5b3UgbWVhbnQgLSBpbiBhZGRpdGlvbiB0by4KCkJ1dCBhZGRpbmcgaW4gYm90aDoKCgllbGYt Pmhkci0+ZV9zaG9mZiA+PSBVTE9OR19NQVggfHwgZWxmLT5oZHItPmVfc2hvZmYgPj0gZWxmLT5s ZW4KCmZlZWxzIHVubmVjY2Vzc2FyeS4gQW5kIHRoZSBib3VuZGFyeSBjaGVjayBpcyBtb3JlIGlt cG9yYW50LgpJIGFkZGVkIGJvdGggaW4gdGhlIGNvZGUuCgoKPiBBbmQgdGhlbiBmb2xsb3dlZCAo ZnVydGhlciBkb3duKSBieSBhbm90aGVyIGNoZWNrIHRha2luZwo+IGVsZi0+aGRyLT5lX3NobnVt ICogZWxmLT5oZHItPmVfc2hlbnRzaXplIGludG8gYWNjb3VudCAob2YKPiBjb3Vyc2UgYXMgdGhp bmdzIHN0YW5kIG5vdywgZWxmLT5oZHItPmVfc2hlbnRzaXplIGNhbiBhbHNvIGJlCj4gYXJiaXRy YXJpbHkgbGFyZ2UsIHNvIHRoaXMgd291bGQgbmVlZCB0byBiZSBzdWl0YWJseSBzdHJ1Y3R1cmVk Cj4gLSBlLmcuICIoZWxmLT5sZW4gLSBlbGYtPmhkci0+ZV9zaG9mZikgLyBlbGYtPmhkci0+ZV9z aGVudHNpemUgPAo+IGVsZi0+aGRyLT5lX3NobnVtIikuCgpBaCwgc28gdGhhdCBpcyBob3cgeW91 IHdhbnQgdG8gY2hlY2sgZm9yIGVfc2hudW0hCgpIZXJlIGlzIHRoZSB1cGRhdGVkIHBhdGNoOgoK CkZyb20gZWI5MDMxMmQ0ZmY2NmMxN2ZhZDJkNGNkNTM3OTk3NGZjNGM5ZjJmNiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogUm9zcyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJp eC5jb20+CkRhdGU6IEZyaSwgMTkgRmViIDIwMTYgMTQ6Mzc6MTcgLTA1MDAKU3ViamVjdDogW1BB VENIXSB4c3BsaWNlOiBBZGQgaGVscGVyIGVsZiByb3V0aW5lcwoKQWRkIEVsZiByb3V0aW5lcyBh bmQgZGF0YSBzdHJ1Y3R1cmVzIGluIHByZXBhcmF0aW9uIGZvciBsb2FkaW5nIGFuCnhTcGxpY2Ug cGF5bG9hZC4KCldlIG1ha2UgYW4gYXNzdW1wdGlvbiB0aGF0IHRoZSBtYXggbnVtYmVyIG9mIHNl Y3Rpb25zIGFuIEVMRiBwYXlsb2FkCmNhbiBoYXZlIGlzIDY0LiBXZSBjYW4gaW4gZnV0dXJlIG1h a2UgdGhpcyBiZSBkZXBlbmRlbnQgb24gdGhlCm5hbWVzIG9mIHRoZSBzZWN0aW9ucyBhbmQgdmVy aWZ5aW5nIGFnYWluc3QgYSBsaXN0LCBidXQgZm9yIHJpZ2h0IG5vdwp0aGlzIHN1ZmZpY2VzLgoK QWxzbyB3ZSBhIHdob2xlIGxvdCBvZiBjaGVja3MgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIEVMRiBw YXlsb2FkCmZpbGUgaXMgbm90IGNvcnJ1cHRlZCBub3IgdGhhdCB0aGUgb2Zmc2V0cyBwb2ludCBw YXN0IHRoZSBmaWxlLgoKRm9yIG1vc3Qgb2YgdGhlIGNoZWNrcyB3ZSBwcmludCBhbiBtZXNzYWdl IGlmIHRoZSBoeXBlcnZpc29yIGlzIGJ1aWx0CndpdGggZGVidWcgZW5hYmxlZC4KClNpZ25lZC1v ZmYtYnk6IFJvc3MgTGFnZXJ3YWxsIDxyb3NzLmxhZ2Vyd2FsbEBjaXRyaXguY29tPgpTaWduZWQt b2ZmLWJ5OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CkFj a2VkLWJ5OiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KCi0tLQpDYzog SWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkNjOiBKYW4gQmV1bGljaCA8 amJldWxpY2hAc3VzZS5jb20+CkNjOiBLZWlyIEZyYXNlciA8a2VpckB4ZW4ub3JnPgpDYzogVGlt IERlZWdhbiA8dGltQHhlbi5vcmc+Cgp2MjogLSBXaXRoIHRoZSAjZGVmaW5lIEVMRlNJWkUgaW4g dGhlIEFSTSBmaWxlIHdlIGNhbiB1c2UgdGhlIGNvbW1vbgogICAgICNkZWZpbmVzIGluc3RlYWQg b2YgdXNpbmcgI2lmZGVmIENPTkZJR19BUk1fMzIuIE1vdmVkIHRvIGFub3RoZXIKICAgIHBhdGNo LgogICAgLSBBZGQgY2hlY2tzIGZvciBFTEYgZmlsZS4KICAgIC0gQWRkIG5hbWUgdG8gYmUgcHJp bnRlZC4KICAgIC0gQWRkIGxlbiBmb3IgZWFzaWVyIEVMRiBjaGVja3MuCiAgICAtIEV4cGFuZCBv biB0aGUgY2hlY2tzLiBBZGQgbWFjcm8uCnYzOiBSZW1vdmUgdGhlIHJldHVybl8gbWFjcm8KICAt IEFkZCByZXR1cm5fIG1hY3JvIGJhY2sgYnV0IG1ha2UgaXQgZGVwZW5kIG9uIGRlYnVnPXkKICAt IFBlciBBbmRyZXcgcmV2aWV3OiBhZGQgbG9jYWwgdmFyaWFibGUuIEZpeCBtZW1vcnkgbGVhayBp bgogICAgZWxmX3Jlc29sdmVfc2VjdGlvbnMsIFJlbW92ZSBtYWNybyBhbmQgdXNlIGRwcmludGsu IEZpeCBhbGlnbm1lbnQuCiAgICBVc2Ugdm9pZCogaW5zdGVhZCBvZiB1aW50OF90IHRvIGhhbmRs ZSByYXcgcGF5bG9hZC4KdjQgLSBGaXggbWVtb3J5IGxlYWsgaW4gZWxmX2dldF9zeW0KICAtIEFk ZCBYU1BMSUNFIHRvIHByaW50ay9kcHJpbnRrCnY1OiBTcHJpbmtsZSBuZXdsaW5lcy4KdjY6IFNx dWFzaCB0aGUgRUxGIGhlYWRlciBjaGVja3MgZnJvbSAneHNwbGljZTogSW1wbGVtZW50IHBheWxv YWQgbG9hZGluZycgaGVyZSwKICAgIERvIGJldHRlciBqb2IgYXQgY2hlY2tpbmcgc3RyaW5nIHNl Y3Rpb25zIGFuZCB0aGUgdXNlcnMgb2YgdGhlbSAoc2hfc2l6ZSksCiAgICBVc2UgWFNQTElDRSBh cyBhIHN0cmluZyBsaXRlcmFsLAogICAgTW92ZSBzb21lIGNoZWNrcyBvdXRzaWRlIHRoZSBsb29w LAogICAgTWFrZSBzdXJlIHRoYXQgU0hUX1NUUlRBQiBhcmUgcmVhbGx5IHdoYXQgdGhleSBzYXkK ICAgIFNwcmlua2xlIGNvbnN0cy4Kdjc6CiAgICBDaGVjayBzaF9lbnRzaXplIGFuZCBzaF9vZmZz ZXQuCiAgICBBZGRlZCBBbmRyZXcncyBSZXZpZXdlZC1ieSBhbmQgSWFuJ3MgQWNrZWQtYnkKICAg IFJlZG8gY2hlY2sgb24gc2hfZW50c2l6ZSB0byBub3QgYmUgIT0Kdjg6IE1ha2UgYWxsIHRoZSBk cHJpbnRrKFhFTkxPR19ERUJVRyBiZSBYRU5MT0dfRVJSCnY5OiBDaGFuZ2VkIGVsZl92ZXJpZnlf c3RydGFiIHRvIHVzZSBjb25zdCBjaGFyIGFuZCByZXR1cm4gRUlOVkFMLgogICAgUmVtb3ZlICdp ZiAoICFkZWx0YSApJyBjaGVjayBpbiBlbGZfcmVzb2x2ZV9zZWN0aW9ucwogICAgUmVtb3ZlIHN0 YWxlIGNvbW1lbnRzLgogICAgRml4ZWQgb25lIG9mZiBjaGVjayBhZ2FpbnN0ICBzaF9saW5rLgog ICAgRG9jdW1lbnQgYm91bmRhcnkgY2hlY2tzIGFnYWluc3Qgc2hzdHJ0YWIgYW5kIHN5bXRhYi4K ICAgIEZpeGVkIHJldHVybiBjb2RlcyBpbiB4c3BsaWNlX2hlYWRlcl9jaGVjay4KICAgIEFkZCBj aGVjayBmb3Igc2VjdGlvbnMgdG8gbm90IGJlIHdpdGhpbiBFTEYgaGVhZGVyLgogICAgQWRkZWQg b3ZlcmZsb3cgY2hlY2sgZm9yIGVfc2hvZmYgaW4geHNwbGljZV9oZWFkZXJfY2hlY2suCiAgICBN b3ZlZCBYU1BMSUNFIG1hY3JvIGJ5IGZvdXIgdGFicy4KICAgIE1ha2UgLT5zeW0gYmUgY29uc3Qu CnYxMDoKICAtIENoYW5nZSB0aGUgY2hlY2sgYWdhaW5zdCA2NCB0byBiZSBhZ2FpbnN0IFNITl9M T1JFU0VSVkUKICAtIFJlbW92ZSBSZXZpZXdlZC1ieQogIC0gSW4gZWxmX3Jlc29sdmVfc2VjdGlv bnMgc2tpcCBkZWx0YSBjaGVjayBpZiBTSFRfTk9CSVRTIGlzIHNldCBpbgogICAgc2Vjb25kIGNv bmRpdGlvbmFsLgogIC0gSW4gZWxmX2dldF9zeW0gdXNlIHN5bXRhYl9zZWMtPnNlYy0+c2hfZW50 c2l6ZSB0byBhY2Nlc3MKICAgIEVsZl9TeW0gc3ltYm9scyBhbmQgYWxzbyBtYWtlIGl0IGEgY29u c3QuIEFsc28KICAgIGZpeCBib3VuZGFyeSBjaGVjayBhZ2FpbnN0IC5zdHJ0YWIgYW5kIG1ha2Ug YXNzaWdtZW50IG9mCiAgICBzeW1baV0ubmFtZSBtb3JlIG5hdHVyYWwuCiAgLSBJbiB4c3BsaWNl X2hlYWRlcl9jaGVjayBhZGQgY29tbWVudCBhYm91dCBFSV9DTEFTUyBhbmQgZV9mbGFncwogICAg YmVpbmcgcGxhdGZvcm0gc3BlY2lmaWMuIENoZWNrIGFnYWluc3QgZV92ZXJzaW9uIGFuZCBFSV9W RVJTSU9OLgogICAgQWxzbyByZWluc3RhdGUgZWxmLT5oZHItPmVfc2hvZmYgPj0gZWxmLT5sZW4g IGNoZWNrLiBBZGQgSmFuJ3MgY2hlY2sgYWdhaW5zdAogICAgZWxmLT5oZHItPmVfc2hudW0gKiBl bGYtPmhkci0+ZV9zaGVudHNpemUKLS0tCiB4ZW4vY29tbW9uL01ha2VmaWxlICAgICAgICAgICB8 ICAgMSArCiB4ZW4vY29tbW9uL3hzcGxpY2VfZWxmLmMgICAgICB8IDM3NSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgg ICAgIHwgICAzICsKIHhlbi9pbmNsdWRlL3hlbi94c3BsaWNlX2VsZi5oIHwgIDUxICsrKysrKwog NCBmaWxlcyBjaGFuZ2VkLCA0MzAgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhl bi9jb21tb24veHNwbGljZV9lbGYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3hl bi94c3BsaWNlX2VsZi5oCgpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9NYWtlZmlsZSBiL3hlbi9j b21tb24vTWFrZWZpbGUKaW5kZXggMWU0YmM3MC4uYWZkODRiNiAxMDA2NDQKLS0tIGEveGVuL2Nv bW1vbi9NYWtlZmlsZQorKysgYi94ZW4vY29tbW9uL01ha2VmaWxlCkBAIC01OSw2ICs1OSw3IEBA IG9iai15ICs9IHdhaXQubwogb2JqLSQoQ09ORklHX1hFTk9QUk9GKSArPSB4ZW5vcHJvZi5vCiBv YmoteSArPSB4bWFsbG9jX3Rsc2Yubwogb2JqLSQoQ09ORklHX1hTUExJQ0UpICs9IHhzcGxpY2Uu bworb2JqLSQoQ09ORklHX1hTUExJQ0UpICs9IHhzcGxpY2VfZWxmLm8KIAogb2JqLWJpbi0kKENP TkZJR19YODYpICs9ICQoZm9yZWFjaCBuLGRlY29tcHJlc3MgYnVuemlwMiB1bnh6IHVubHptYSB1 bmx6byB1bmx6NCBlYXJseWNwaW8sJChuKS5pbml0Lm8pCiAKZGlmZiAtLWdpdCBhL3hlbi9jb21t b24veHNwbGljZV9lbGYuYyBiL3hlbi9jb21tb24veHNwbGljZV9lbGYuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDJkNDNlCi0tLSAvZGV2L251bGwKKysrIGIveGVuL2Nv bW1vbi94c3BsaWNlX2VsZi5jCkBAIC0wLDAgKzEsMzc1IEBACisvKgorICogQ29weXJpZ2h0IChD KSAyMDE2IENpdHJpeCBTeXN0ZW1zIFImRCBMdGQuCisgKi8KKworI2luY2x1ZGUgPHhlbi9lcnJu by5oPgorI2luY2x1ZGUgPHhlbi9saWIuaD4KKyNpbmNsdWRlIDx4ZW4veHNwbGljZV9lbGYuaD4K KyNpbmNsdWRlIDx4ZW4veHNwbGljZS5oPgorCitjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2Vj ICp4c3BsaWNlX2VsZl9zZWNfYnlfbmFtZShjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKm5hbWUpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IgKCBpID0g MTsgaSA8IGVsZi0+aGRyLT5lX3NobnVtOyBpKysgKQorICAgIHsKKyAgICAgICAgaWYgKCAhc3Ry Y21wKG5hbWUsIGVsZi0+c2VjW2ldLm5hbWUpICkKKyAgICAgICAgICAgIHJldHVybiAmZWxmLT5z ZWNbaV07CisgICAgfQorCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBpbnQgZWxmX3Zl cmlmeV9zdHJ0YWIoY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqc2VjKQoreworICAgIGNv bnN0IEVsZl9TaGRyICpzOworICAgIGNvbnN0IGNoYXIgKmNvbnRlbnRzOworCisgICAgcyA9IHNl Yy0+c2VjOworCisgICAgaWYgKCBzLT5zaF90eXBlICE9IFNIVF9TVFJUQUIgKQorICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICggIXMtPnNoX3NpemUgKQorICAgICAgICByZXR1cm4g LUVJTlZBTDsKKworICAgIGNvbnRlbnRzID0gc2VjLT5kYXRhOworCisgICAgaWYgKCBjb250ZW50 c1swXSB8fCBjb250ZW50c1tzLT5zaF9zaXplIC0gMV0gKQorICAgICAgICByZXR1cm4gLUVJTlZB TDsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGVsZl9yZXNvbHZlX3NlY3Rpb25z KHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLCBjb25zdCB2b2lkICpkYXRhKQoreworICAgIHN0cnVj dCB4c3BsaWNlX2VsZl9zZWMgKnNlYzsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBFbGZfT2Zm IGRlbHRhOworICAgIGludCByYzsKKworICAgIC8qIHhzcGxpY2VfZWxmX2xvYWQgc2FuaXR5IGNo ZWNrZWQgZV9zaG51bS4gKi8KKyAgICBzZWMgPSB4bWFsbG9jX2FycmF5KHN0cnVjdCB4c3BsaWNl X2VsZl9zZWMsIGVsZi0+aGRyLT5lX3NobnVtKTsKKyAgICBpZiAoICFzZWMgKQorICAgIHsKKyAg ICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFIiVzOiBDb3VsZCBub3QgYWxsb2NhdGUg bWVtb3J5IGZvciBzZWN0aW9uIHRhYmxlIVxuIiwKKyAgICAgICAgICAgICAgIGVsZi0+bmFtZSk7 CisgICAgICAgIHJldHVybiAtRU5PTUVNOworICAgIH0KKworICAgIGVsZi0+c2VjID0gc2VjOwor CisgICAgLyogZV9zaG9mZiBhbmQgZV9zaG51bSBvdmVyZmxvdyBjaGVja3MgYXJlIGRvbmUgaW4g eHNwbGljZV9oZWFkZXJfY2hlY2suICovCisgICAgZGVsdGEgPSBlbGYtPmhkci0+ZV9zaG9mZiAr IGVsZi0+aGRyLT5lX3NobnVtICogZWxmLT5oZHItPmVfc2hlbnRzaXplOworICAgIGlmICggZGVs dGEgPiBlbGYtPmxlbiApCisgICAgeworICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBY U1BMSUNFICIlczogU2VjdGlvbiB0YWJsZSBpcyBwYXN0IGVuZCBvZiBwYXlsb2FkIVxuIiwKKyAg ICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFM OworICAgIH0KKworICAgIGZvciAoIGkgPSAxOyBpIDwgZWxmLT5oZHItPmVfc2hudW07IGkrKyAp CisgICAgeworICAgICAgICBkZWx0YSA9IGVsZi0+aGRyLT5lX3Nob2ZmICsgaSAqIGVsZi0+aGRy LT5lX3NoZW50c2l6ZTsKKworICAgICAgICBzZWNbaV0uc2VjID0gZGF0YSArIGRlbHRhOworCisg ICAgICAgIGRlbHRhID0gc2VjW2ldLnNlYy0+c2hfb2Zmc2V0OworICAgICAgICAvKgorICAgICAg ICAgKiBOLkIuIGVsZl9yZXNvbHZlX3NlY3Rpb25fbmFtZXMsIGVsZl9nZXRfc3ltIHNraXAgdGhp cyBjaGVjayBhcworICAgICAgICAgKiB3ZSBkbyBpdCBoZXJlLgorICAgICAgICAgKi8KKyAgICAg ICAgaWYgKCBkZWx0YSA8IHNpemVvZihFbGZfRWhkcikgfHwKKyAgICAgICAgICAgICAoc2VjW2ld LnNlYy0+c2hfdHlwZSAhPSBTSFRfTk9CSVRTICYmIC8qIFNraXAgU0hUX05PQklUUyAqLworICAg ICAgICAgICAgICAoZGVsdGEgPiBlbGYtPmxlbiB8fCAoZGVsdGEgKyBzZWNbaV0uc2VjLT5zaF9z aXplID4gZWxmLT5sZW4pKSkgKQorICAgICAgICB7CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxP R19FUlIsIFhTUExJQ0UgIiVzOiBTZWN0aW9uIFsldV0gZGF0YSAlcyBvZiBwYXlsb2FkIVxuIiwK KyAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBpLAorICAgICAgICAgICAgICAgICAgICBk ZWx0YSA8IHNpemVvZihFbGZfRWhkcikgPyAiYXQgRUxGIGhlYWRlciIgOiAiaXMgcGFzdCBlbmQi KTsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisKKyAgICAgICAgc2Vj W2ldLmRhdGEgPSBkYXRhICsgZGVsdGE7CisgICAgICAgIC8qIE5hbWUgaXMgcG9wdWxhdGVkIGlu IGVsZl9yZXNvbHZlX3NlY3Rpb25fbmFtZXMuICovCisgICAgICAgIHNlY1tpXS5uYW1lID0gTlVM TDsKKworICAgICAgICBpZiAoIHNlY1tpXS5zZWMtPnNoX3R5cGUgPT0gU0hUX1NZTVRBQiApCisg ICAgICAgIHsKKyAgICAgICAgICAgIGlmICggZWxmLT5zeW10YWIgKQorICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFVuc3VwcG9y dGVkIG11bHRpcGxlIHN5bWJvbCB0YWJsZXMhXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAg ZWxmLT5uYW1lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7CisgICAgICAg ICAgICB9CisKKyAgICAgICAgICAgIGVsZi0+c3ltdGFiID0gJnNlY1tpXTsKKworICAgICAgICAg ICAgLyoKKyAgICAgICAgICAgICAqIGVsZi0+c3ltdGFiLT5zZWMtPnNoX2xpbmsgd291bGQgcG9p bnQgdG8gdGhlIHJpZ2h0IHNlY3Rpb24KKyAgICAgICAgICAgICAqIGJ1dCB3ZSBoYWRuJ3QgZmlu aXNoZWQgcGFyc2luZyBhbGwgdGhlIHNlY3Rpb25zLgorICAgICAgICAgICAgICovCisgICAgICAg ICAgICBpZiAoIGVsZi0+c3ltdGFiLT5zZWMtPnNoX2xpbmsgPj0gZWxmLT5oZHItPmVfc2hudW0g KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQ TElDRQorICAgICAgICAgICAgICAgICAgICAgICAgIiVzOiBTeW1ib2wgdGFibGUgaWR4ICgldSkg dG8gc3RydGFiIHBhc3QgZW5kICgldSlcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBlbGYt Pm5hbWUsIGVsZi0+c3ltdGFiLT5zZWMtPnNoX2xpbmssCisgICAgICAgICAgICAgICAgICAgICAg ICBlbGYtPmhkci0+ZV9zaG51bSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cisg ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoICFlbGYtPnN5bXRhYiAp CisgICAgeworICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBObyBzeW1i b2wgdGFibGUgZm91bmQhXG4iLAorICAgICAgICAgICAgICAgIGVsZi0+bmFtZSk7CisgICAgICAg IHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIGlmICggIWVsZi0+c3ltdGFiLT5zZWMtPnNo X3NpemUgfHwKKyAgICAgICAgIGVsZi0+c3ltdGFiLT5zZWMtPnNoX2VudHNpemUgPCBzaXplb2Yo RWxmX1N5bSkgfHwKKyAgICAgICAgIGVsZi0+c3ltdGFiLT5zZWMtPnNoX3NpemUgJSBlbGYtPnN5 bXRhYi0+c2VjLT5zaF9lbnRzaXplICkKKyAgICB7CisgICAgICAgIGRwcmludGsoWEVOTE9HX0VS UiwgWFNQTElDRSAiJXM6IFN5bWJvbCB0YWJsZSBoZWFkZXIgaXMgY29ycnVwdGVkIVxuIiwKKyAg ICAgICAgICAgICAgICBlbGYtPm5hbWUpOworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9 CisKKyAgICAvKgorICAgICAqIFRoZXJlIGNhbiBiZSBtdWx0aXBsZSBTSFRfU1RSVEFCICguc2hz dHJ0YWIsIC5zdHJ0YWIpIHNvIHBpY2sgdGhlIG9uZQorICAgICAqIGFzc29jaWF0ZWQgd2l0aCB0 aGUgc3ltYm9sIHRhYmxlLgorICAgICAqLworICAgIGVsZi0+c3RydGFiID0gJnNlY1tlbGYtPnN5 bXRhYi0+c2VjLT5zaF9saW5rXTsKKworICAgIHJjID0gZWxmX3ZlcmlmeV9zdHJ0YWIoZWxmLT5z dHJ0YWIpOworICAgIGlmICggcmMgKQorICAgIHsKKyAgICAgICAgZHByaW50ayhYRU5MT0dfRVJS LCBYU1BMSUNFICIlczogU3RyaW5nIHRhYmxlIHNlY3Rpb24gaXMgY29ycnVwdGVkXG4iLAorICAg ICAgICAgICAgICAgIGVsZi0+bmFtZSk7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfQorCitz dGF0aWMgaW50IGVsZl9yZXNvbHZlX3NlY3Rpb25fbmFtZXMoc3RydWN0IHhzcGxpY2VfZWxmICpl bGYsIGNvbnN0IHZvaWQgKmRhdGEpCit7CisgICAgY29uc3QgY2hhciAqc2hzdHJ0YWI7CisgICAg dW5zaWduZWQgaW50IGk7CisgICAgRWxmX09mZiBvZmZzZXQsIGRlbHRhOworICAgIHN0cnVjdCB4 c3BsaWNlX2VsZl9zZWMgKnNlYzsKKyAgICBpbnQgcmM7CisKKyAgICAvKgorICAgICAqIFRoZSBl bGYtPnNlY1swIC0+IGVfc2hudW1dIHN0cnVjdHVyZXMgaGF2ZSBiZWVuIHZlcmlmaWVkIGJ5Cisg ICAgICogZWxmX3Jlc29sdmVfc2VjdGlvbnMuIEZpbmQgZmlsZSBvZmZzZXQgZm9yIHNlY3Rpb24g c3RyaW5nIHRhYmxlCisgICAgICogKG5vcm1hbGx5IGNhbGxlZCAuc2hzdHJ0YWIpCisgICAgICov CisgICAgc2VjID0gJmVsZi0+c2VjW2VsZi0+aGRyLT5lX3Noc3RybmR4XTsKKworICAgIHJjID0g ZWxmX3ZlcmlmeV9zdHJ0YWIoc2VjKTsKKyAgICBpZiAoIHJjICkKKyAgICB7CisgICAgICAgIGRw cmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFNlY3Rpb24gc3RyaW5nIHRhYmxlIGlzIGNv cnJ1cHRlZFxuIiwKKyAgICAgICAgICAgICAgICBlbGYtPm5hbWUpOworICAgICAgICByZXR1cm4g cmM7CisgICAgfQorCisgICAgLyogVmVyaWZpZWQgaW4gZWxmX3Jlc29sdmVfc2VjdGlvbnMgYnV0 IGp1c3QgaW4gY2FzZS4gKi8KKyAgICBvZmZzZXQgPSBzZWMtPnNlYy0+c2hfb2Zmc2V0OworICAg IEFTU0VSVChvZmZzZXQgPCBlbGYtPmxlbiAmJiAob2Zmc2V0ICsgc2VjLT5zZWMtPnNoX3NpemUg PD0gZWxmLT5sZW4pKTsKKworICAgIHNoc3RydGFiID0gZGF0YSArIG9mZnNldDsKKworICAgIGZv ciAoIGkgPSAxOyBpIDwgZWxmLT5oZHItPmVfc2hudW07IGkrKyApCisgICAgeworICAgICAgICBk ZWx0YSA9IGVsZi0+c2VjW2ldLnNlYy0+c2hfbmFtZTsKKworICAgICAgICAvKiBCb3VuZGFyeSBj aGVjayBvbiBvZmZzZXQgb2YgbmFtZSB3aXRoaW4gdGhlIC5zaHN0cnRhYi4gKi8KKyAgICAgICAg aWYgKCBkZWx0YSA+PSBzZWMtPnNlYy0+c2hfc2l6ZSApCisgICAgICAgIHsKKyAgICAgICAgICAg IGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IHNoc3RydGFiIFsldV0gZGF0YSBpcyBw YXN0IGVuZCBvZiBwYXlsb2FkIVxuIiwKKyAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBp KTsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisKKyAgICAgICAgZWxm LT5zZWNbaV0ubmFtZSA9IHNoc3RydGFiICsgZGVsdGE7CisgICAgfQorCisgICAgcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgZWxmX2dldF9zeW0oc3RydWN0IHhzcGxpY2VfZWxmICplbGYsIGNv bnN0IHZvaWQgKmRhdGEpCit7CisgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqc3lt dGFiX3NlYywgKnN0cnRhYl9zZWM7CisgICAgc3RydWN0IHhzcGxpY2VfZWxmX3N5bSAqc3ltOwor ICAgIHVuc2lnbmVkIGludCBpLCBkZWx0YSwgb2Zmc2V0LCBuc3ltOworCisgICAgc3ltdGFiX3Nl YyA9IGVsZi0+c3ltdGFiOworICAgIHN0cnRhYl9zZWMgPSBlbGYtPnN0cnRhYjsKKworICAgIC8q IFBvaW50ZXJzIGFyaXRobWV0aWMgdG8gZ2V0IGZpbGUgb2Zmc2V0LiAqLworICAgIG9mZnNldCA9 IHN0cnRhYl9zZWMtPmRhdGEgLSBkYXRhOworCisgICAgLyogQ2hlY2tlZCBhbHJlYWR5IGluIGVs Zl9yZXNvbHZlX3NlY3Rpb25zLCBidXQganVzdCBpbiBjYXNlLiAqLworICAgIEFTU0VSVChvZmZz ZXQgPT0gc3RydGFiX3NlYy0+c2VjLT5zaF9vZmZzZXQpOworICAgIEFTU0VSVChvZmZzZXQgPCBl bGYtPmxlbiAmJiAob2Zmc2V0ICsgc3RydGFiX3NlYy0+c2VjLT5zaF9zaXplIDw9IGVsZi0+bGVu KSk7CisKKyAgICAvKiBzeW10YWJfc2VjLT5kYXRhIHdhcyBjb21wdXRlZCBpbiBlbGZfcmVzb2x2 ZV9zZWN0aW9ucy4gKi8KKyAgICBBU1NFUlQoKHN5bXRhYl9zZWMtPnNlYy0+c2hfb2Zmc2V0ICsg ZGF0YSkgPT0gc3ltdGFiX3NlYy0+ZGF0YSk7CisKKyAgICAvKiBObyBuZWVkIHRvIGNoZWNrIHZh bHVlcyBhcyBlbGZfcmVzb2x2ZV9zZWN0aW9ucyBkaWQgaXQuICovCisgICAgbnN5bSA9IHN5bXRh Yl9zZWMtPnNlYy0+c2hfc2l6ZSAvIHN5bXRhYl9zZWMtPnNlYy0+c2hfZW50c2l6ZTsKKworICAg IHN5bSA9IHhtYWxsb2NfYXJyYXkoc3RydWN0IHhzcGxpY2VfZWxmX3N5bSwgbnN5bSk7CisgICAg aWYgKCAhc3ltICkKKyAgICB7CisgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAi JXM6IENvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHN5bWJvbHNcbiIsCisgICAgICAgICAg ICAgICBlbGYtPm5hbWUpOworICAgICAgICByZXR1cm4gLUVOT01FTTsKKyAgICB9CisKKyAgICAv KiBTbyB3ZSBkb24ndCBsZWFrIG1lbW9yeS4gKi8KKyAgICBlbGYtPnN5bSA9IHN5bTsKKworICAg IGZvciAoIGkgPSAxOyBpIDwgbnN5bTsgaSsrICkKKyAgICB7CisgICAgICAgIGNvbnN0IEVsZl9T eW0gKnMgPSBzeW10YWJfc2VjLT5kYXRhICsgc3ltdGFiX3NlYy0+c2VjLT5zaF9lbnRzaXplICog aTsKKworICAgICAgICBkZWx0YSA9IHMtPnN0X25hbWU7CisgICAgICAgIC8qIEJvdW5kYXJ5IGNo ZWNrIHdpdGhpbiB0aGUgLnN0cnRhYi4gKi8KKyAgICAgICAgaWYgKCBkZWx0YSA+PSBzdHJ0YWJf c2VjLT5zZWMtPnNoX3NpemUgKQorICAgICAgICB7CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxP R19FUlIsIFhTUExJQ0UgIiVzOiBTeW1ib2wgWyV1XSBuYW1lIGlzIG5vdCB3aXRoaW4gLnN0cnRh YiFcbiIsCisgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgaSk7CisgICAgICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorCisgICAgICAgIHN5bVtpXS5zeW0gPSBzOworICAg ICAgICBzeW1baV0ubmFtZSA9IHN0cnRhYl9zZWMtPmRhdGEgKyBkZWx0YTsKKyAgICB9CisgICAg ZWxmLT5uc3ltID0gbnN5bTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IHhzcGxp Y2VfaGVhZGVyX2NoZWNrKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQoreworICAgIGNv bnN0IEVsZl9FaGRyICpoZHIgPSBlbGYtPmhkcjsKKworICAgIGlmICggc2l6ZW9mKCplbGYtPmhk cikgPiBlbGYtPmxlbiApCisgICAgeworICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJ Q0UgIiVzOiBTZWN0aW9uIGhlYWRlciBpcyBiaWdnZXIgdGhhbiBwYXlsb2FkIVxuIiwKKyAgICAg ICAgICAgICAgICBlbGYtPm5hbWUpOworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisK KyAgICBpZiAoICFJU19FTEYoKmhkcikgKQorICAgIHsKKyAgICAgICAgZHByaW50ayhYRU5MT0df RVJSLCBYU1BMSUNFICIlczogTm90IGFuIEVMRiBwYXlsb2FkIVxuIiwgZWxmLT5uYW1lKTsKKyAg ICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgLyogRUlfQ0xBU1MsIGFuZCBlX2Zs YWdzIGFyZSBwbGF0Zm9ybSBzcGVjaWZpYy4gKi8KKyAgICBpZiAoIGhkci0+ZV92ZXJzaW9uICE9 IEVWX0NVUlJFTlQgfHwKKyAgICAgICAgIGhkci0+ZV9pZGVudFtFSV9WRVJTSU9OXSAhPSBFVl9D VVJSRU5UIHx8CisgICAgICAgICBoZHItPmVfaWRlbnRbRUlfREFUQV0gIT0gRUxGREFUQTJMU0Ig fHwKKyAgICAgICAgIGhkci0+ZV9pZGVudFtFSV9PU0FCSV0gIT0gRUxGT1NBQklfU1lTViB8fAor ICAgICAgICAgaGRyLT5lX3R5cGUgIT0gRVRfUkVMIHx8CisgICAgICAgICBoZHItPmVfcGhudW0g IT0gMCApCisgICAgeworICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBJ bnZhbGlkIEVMRiBwYXlsb2FkIVxuIiwgZWxmLT5uYW1lKTsKKyAgICAgICAgcmV0dXJuIC1FT1BO T1RTVVBQOworICAgIH0KKworICAgIGlmICggZWxmLT5oZHItPmVfc2hzdHJuZHggPT0gU0hOX1VO REVGICkKKyAgICB7CisgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFNl Y3Rpb24gbmFtZSBpZHggaXMgdW5kZWZpbmVkIT9cbiIsCisgICAgICAgICAgICAgICAgZWxmLT5u YW1lKTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgLyogQ2hlY2sgdGhh dCBzZWN0aW9uIG5hbWUgaW5kZXggaXMgd2l0aGluIHRoZSBzZWN0aW9ucy4gKi8KKyAgICBpZiAo IGVsZi0+aGRyLT5lX3Noc3RybmR4ID49IGVsZi0+aGRyLT5lX3NobnVtICkKKyAgICB7CisgICAg ICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFNlY3Rpb24gbmFtZSBpZHggKCV1 KSBpcyBwYXN0IGVuZCBvZiBzZWN0aW9ucyAoJXUpIVxuIiwKKyAgICAgICAgICAgICAgICBlbGYt Pm5hbWUsIGVsZi0+aGRyLT5lX3Noc3RybmR4LCBlbGYtPmhkci0+ZV9zaG51bSk7CisgICAgICAg IHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIGlmICggZWxmLT5oZHItPmVfc2hudW0gPj0g U0hOX0xPUkVTRVJWRSApCisgICAgeworICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJ Q0UgIiVzOiBUb28gbWFueSAoJXUpIHNlY3Rpb25zIVxuIiwKKyAgICAgICAgICAgICAgICBlbGYt Pm5hbWUsIGVsZi0+aGRyLT5lX3NobnVtKTsKKyAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwor ICAgIH0KKworICAgIGlmICggZWxmLT5oZHItPmVfc2hvZmYgPj0gZWxmLT5sZW4gfHwgZWxmLT5o ZHItPmVfc2hvZmYgPj0gVUxPTkdfTUFYICkKKyAgICB7CisgICAgICAgIGRwcmludGsoWEVOTE9H X0VSUiwgWFNQTElDRSAiJXM6IEJvZ3VzIGVfc2hvZmYhXG4iLCBlbGYtPm5hbWUpOworICAgICAg ICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBpZiAoIGVsZi0+aGRyLT5lX3NoZW50c2l6 ZSA8IHNpemVvZihFbGZfU2hkcikgKQorICAgIHsKKyAgICAgICAgZHByaW50ayhYRU5MT0dfRVJS LCBYU1BMSUNFICIlczogU2VjdGlvbiBoZWFkZXIgc2l6ZSBpcyAldSEgRXhwZWN0ZWQgJXp1IT9c biIsCisgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBlbGYtPmhkci0+ZV9zaGVudHNpemUsIHNp emVvZihFbGZfU2hkcikpOworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBp ZiAoICgoZWxmLT5sZW4gLSBlbGYtPmhkci0+ZV9zaG9mZikgLyBlbGYtPmhkci0+ZV9zaGVudHNp emUpIDwKKyAgICAgICAgIGVsZi0+aGRyLT5lX3NobnVtICkKKyAgICB7CisgICAgICAgIGRwcmlu dGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFNlY3Rpb24gaGVhZGVyIHNpemUgaXMgY29ycnVw dGVkIVxuIiwKKyAgICAgICAgICAgICAgICBlbGYtPm5hbWUpOworICAgICAgICByZXR1cm4gLUVJ TlZBTDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworaW50IHhzcGxpY2VfZWxmX2xvYWQo c3RydWN0IHhzcGxpY2VfZWxmICplbGYsIGNvbnN0IHZvaWQgKmRhdGEpCit7CisgICAgaW50IHJj OworCisgICAgZWxmLT5oZHIgPSBkYXRhOworCisgICAgcmMgPSB4c3BsaWNlX2hlYWRlcl9jaGVj ayhlbGYpOworICAgIGlmICggcmMgKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICByYyA9IGVs Zl9yZXNvbHZlX3NlY3Rpb25zKGVsZiwgZGF0YSk7CisgICAgaWYgKCByYyApCisgICAgICAgIHJl dHVybiByYzsKKworICAgIHJjID0gZWxmX3Jlc29sdmVfc2VjdGlvbl9uYW1lcyhlbGYsIGRhdGEp OworICAgIGlmICggcmMgKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICByYyA9IGVsZl9nZXRf c3ltKGVsZiwgZGF0YSk7CisgICAgaWYgKCByYyApCisgICAgICAgIHJldHVybiByYzsKKworICAg IHJldHVybiAwOworfQorCit2b2lkIHhzcGxpY2VfZWxmX2ZyZWUoc3RydWN0IHhzcGxpY2VfZWxm ICplbGYpCit7CisgICAgeGZyZWUoZWxmLT5zZWMpOworICAgIGVsZi0+c2VjID0gTlVMTDsKKyAg ICB4ZnJlZShlbGYtPnN5bSk7CisgICAgZWxmLT5zeW0gPSBOVUxMOworICAgIGVsZi0+bnN5bSA9 IDA7CisgICAgZWxmLT5uYW1lID0gTlVMTDsKKyAgICBlbGYtPmxlbiA9IDA7Cit9CisKKy8qCisg KiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisg KiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2Rl OiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3hzcGxpY2Uu aCBiL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKaW5kZXggYjlmMDhjZC4uNzU1OTg3NyAxMDA2 NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4v eHNwbGljZS5oCkBAIC0xMCw2ICsxMCw5IEBAIHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vfb3A7 CiAKICNpZmRlZiBDT05GSUdfWFNQTElDRQogCisvKiBDb252ZW5pZW5jZSBkZWZpbmUgZm9yIHBy aW50ay4gKi8KKyNkZWZpbmUgWFNQTElDRSAgICAgICAgICAgICAieHNwbGljZTogIgorCiBpbnQg eHNwbGljZV9vcChzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX29wICopOwogCiAjZWxzZQpkaWZm IC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3hzcGxpY2VfZWxmLmggYi94ZW4vaW5jbHVkZS94ZW4v eHNwbGljZV9lbGYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODZhYWYw Ci0tLSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1ZGUveGVuL3hzcGxpY2VfZWxmLmgKQEAgLTAs MCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBDaXRyaXggU3lzdGVtcyBSJkQg THRkLgorICovCisKKyNpZm5kZWYgX19YRU5fWFNQTElDRV9FTEZfSF9fCisjZGVmaW5lIF9fWEVO X1hTUExJQ0VfRUxGX0hfXworCisjaW5jbHVkZSA8eGVuL3R5cGVzLmg+CisjaW5jbHVkZSA8eGVu L2VsZnN0cnVjdHMuaD4KKworLyogVGhlIGZvbGxvd2luZyBkZXNjcmliZXMgYW4gRWxmIGZpbGUg YXMgY29uc3VtZWQgYnkgeFNwbGljZS4gKi8KK3N0cnVjdCB4c3BsaWNlX2VsZl9zZWMgeworICAg IGNvbnN0IEVsZl9TaGRyICpzZWM7ICAgICAgICAgICAgICAgICAvKiBIb29rZWQgdXAgaW4gZWxm X3Jlc29sdmVfc2VjdGlvbnMuKi8KKyAgICBjb25zdCBjaGFyICpuYW1lOyAgICAgICAgICAgICAg ICAgICAgLyogSHVtYW4gcmVhZGFibGUgbmFtZSBob29rZWQgaW4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxmX3Jlc29sdmVfc2VjdGlvbl9uYW1lcy4gKi8K KyAgICBjb25zdCB2b2lkICpkYXRhOyAgICAgICAgICAgICAgICAgICAgLyogUG9pbnRlciB0byB0 aGUgc2VjdGlvbiAoZG9uZSBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBlbGZfcmVzb2x2ZV9zZWN0aW9ucykuICovCit9OworCitzdHJ1Y3QgeHNwbGljZV9l bGZfc3ltIHsKKyAgICBjb25zdCBFbGZfU3ltICpzeW07CisgICAgY29uc3QgY2hhciAqbmFtZTsK K307CisKK3N0cnVjdCB4c3BsaWNlX2VsZiB7CisgICAgY29uc3QgY2hhciAqbmFtZTsgICAgICAg ICAgICAgICAgICAgIC8qIFBvaW50ZXIgdG8gcGF5bG9hZC0+bmFtZS4gKi8KKyAgICBzaXplX3Qg bGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTGVuZ3RoIG9mIHRoZSBFTEYgZmlsZS4g Ki8KKyAgICBjb25zdCBFbGZfRWhkciAqaGRyOyAgICAgICAgICAgICAgICAgLyogRUxGIGZpbGUu ICovCisgICAgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqc2VjOyAgICAgICAgIC8qIEFycmF5IG9m IHNlY3Rpb25zLCBhbGxvY2F0ZWQgYnkgdXMuICovCisgICAgc3RydWN0IHhzcGxpY2VfZWxmX3N5 bSAqc3ltOyAgICAgICAgIC8qIEFycmF5IG9mIHN5bWJvbHMgLCBhbGxvY2F0ZWQgYnkgdXMuICov CisgICAgdW5zaWduZWQgaW50IG5zeW07CisgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3Nl YyAqc3ltdGFiOy8qIFBvaW50ZXIgdG8gLnN5bXRhYiBzZWN0aW9uIC0gYWthIHRvIHNlY1t4XS4g Ki8KKyAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzdHJ0YWI7LyogUG9pbnRlciB0 byAuc3RydGFiIHNlY3Rpb24gLSBha2EgdG8gc2VjW3ldLiAqLworfTsKKworY29uc3Qgc3RydWN0 IHhzcGxpY2VfZWxmX3NlYyAqeHNwbGljZV9lbGZfc2VjX2J5X25hbWUoY29uc3Qgc3RydWN0IHhz cGxpY2VfZWxmICplbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKTsKK2ludCB4c3BsaWNlX2VsZl9sb2FkKHN0 cnVjdCB4c3BsaWNlX2VsZiAqZWxmLCBjb25zdCB2b2lkICpkYXRhKTsKK3ZvaWQgeHNwbGljZV9l bGZfZnJlZShzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZik7CisKKyNlbmRpZiAvKiBfX1hFTl9YU1BM SUNFX0VMRl9IX18gKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAq IGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6 IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCi0tIAoyLjQuMwoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBt YWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcv eGVuLWRldmVsCg==