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 14:45:01 -0400 Message-ID: <20160427184501.GB17114@x230.dumpdata.com> 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> <20160427040655.GG26540@localhost.localdomain> <57208BC502000078000E62F6@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 1avUTK-0000vV-J5 for xen-devel@lists.xenproject.org; Wed, 27 Apr 2016 18:46:02 +0000 Content-Disposition: inline In-Reply-To: <57208BC502000078000E62F6@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+IHYxMDoKPiA+ICAgLSBDaGFuZ2UgdGhlIGNoZWNrIGFnYWluc3QgNjQgdG8gYmUgYWdhaW5z dCBTSE5fTE9SRVNFUlZFCj4gCj4gU28gd2UncmUgbW92aW5nIGJldHdlZW4gdGhlIGV4dHJlbWVz LCBhbmQgKGFzIHNhaWQgaW4gcmVwbHkgdG8gdjkpCj4gSSB0aGluayB3ZSByZWFsbHkgd2FudCB0 byBiZSBzb21ld2hlcmUgaW4gdGhlIG1pZGRsZS4KPiAKPiBBbmRyZXc/IFJvc3M/CgoKSSBzdHVj ayAxMDI0IGluIHRoZXJlIHdpdGggYSBjb21tZW50IHNheWluZyBpdCBpcyBhcmJpdHJhcnkuCkFu ZHJldyB3YXMgb2sgd2l0aCB0aGF0IG51bWJlciBvbiBJUkMuCgpBbmQgdGhlIHVwZGF0ZWQgcGF0 Y2ggaXMgaGVyZSwgdGhvdWdodCBJIHdpbGwgYmUgYWxzbyBwb3N0aW5nIHRoZQp3aG9sZSBwYXRj aHNldCBzaG9ydGx5OgoKCkZyb20gNTY2M2NmZGFkNWU5YTkyOGZkY2EzNzcxMjExZWRmYzhjYmIz ZTMzMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogUm9zcyBMYWdlcndhbGwgPHJvc3Mu bGFnZXJ3YWxsQGNpdHJpeC5jb20+CkRhdGU6IEZyaSwgMTkgRmViIDIwMTYgMTQ6Mzc6MTcgLTA1 MDAKU3ViamVjdDogW1BBVENIXSB4c3BsaWNlOiBBZGQgaGVscGVyIGVsZiByb3V0aW5lcwoKQWRk IEVsZiByb3V0aW5lcyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGluIHByZXBhcmF0aW9uIGZvciBsb2Fk aW5nIGFuCnhTcGxpY2UgcGF5bG9hZC4KCldlIG1ha2UgYW4gYXNzdW1wdGlvbiB0aGF0IHRoZSBt YXggbnVtYmVyIG9mIHNlY3Rpb25zIGFuIEVMRiBwYXlsb2FkCmNhbiBoYXZlIGlzIDY0LiBXZSBj YW4gaW4gZnV0dXJlIG1ha2UgdGhpcyBiZSBkZXBlbmRlbnQgb24gdGhlCm5hbWVzIG9mIHRoZSBz ZWN0aW9ucyBhbmQgdmVyaWZ5aW5nIGFnYWluc3QgYSBsaXN0LCBidXQgZm9yIHJpZ2h0IG5vdwp0 aGlzIHN1ZmZpY2VzLgoKQWxzbyB3ZSBhIHdob2xlIGxvdCBvZiBjaGVja3MgdG8gbWFrZSBzdXJl IHRoYXQgdGhlIEVMRiBwYXlsb2FkCmZpbGUgaXMgbm90IGNvcnJ1cHRlZCBub3IgdGhhdCB0aGUg b2Zmc2V0cyBwb2ludCBwYXN0IHRoZSBmaWxlLgoKRm9yIG1vc3Qgb2YgdGhlIGNoZWNrcyB3ZSBw cmludCBhbiBtZXNzYWdlIGlmIHRoZSBoeXBlcnZpc29yIGlzIGJ1aWx0CndpdGggZGVidWcgZW5h YmxlZC4KClNpZ25lZC1vZmYtYnk6IFJvc3MgTGFnZXJ3YWxsIDxyb3NzLmxhZ2Vyd2FsbEBjaXRy aXguY29tPgpTaWduZWQtb2ZmLWJ5OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxr QG9yYWNsZS5jb20+CkFja2VkLWJ5OiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4 LmNvbT4KCi0tLQpDYzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkNj OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBLZWlyIEZyYXNlciA8a2VpckB4 ZW4ub3JnPgpDYzogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+Cgp2MjogLSBXaXRoIHRoZSAjZGVm aW5lIEVMRlNJWkUgaW4gdGhlIEFSTSBmaWxlIHdlIGNhbiB1c2UgdGhlIGNvbW1vbgogICAgICNk ZWZpbmVzIGluc3RlYWQgb2YgdXNpbmcgI2lmZGVmIENPTkZJR19BUk1fMzIuIE1vdmVkIHRvIGFu b3RoZXIKICAgIHBhdGNoLgogICAgLSBBZGQgY2hlY2tzIGZvciBFTEYgZmlsZS4KICAgIC0gQWRk IG5hbWUgdG8gYmUgcHJpbnRlZC4KICAgIC0gQWRkIGxlbiBmb3IgZWFzaWVyIEVMRiBjaGVja3Mu CiAgICAtIEV4cGFuZCBvbiB0aGUgY2hlY2tzLiBBZGQgbWFjcm8uCnYzOiBSZW1vdmUgdGhlIHJl dHVybl8gbWFjcm8KICAtIEFkZCByZXR1cm5fIG1hY3JvIGJhY2sgYnV0IG1ha2UgaXQgZGVwZW5k IG9uIGRlYnVnPXkKICAtIFBlciBBbmRyZXcgcmV2aWV3OiBhZGQgbG9jYWwgdmFyaWFibGUuIEZp eCBtZW1vcnkgbGVhayBpbgogICAgZWxmX3Jlc29sdmVfc2VjdGlvbnMsIFJlbW92ZSBtYWNybyBh bmQgdXNlIGRwcmludGsuIEZpeCBhbGlnbm1lbnQuCiAgICBVc2Ugdm9pZCogaW5zdGVhZCBvZiB1 aW50OF90IHRvIGhhbmRsZSByYXcgcGF5bG9hZC4KdjQgLSBGaXggbWVtb3J5IGxlYWsgaW4gZWxm X2dldF9zeW0KICAtIEFkZCBYU1BMSUNFIHRvIHByaW50ay9kcHJpbnRrCnY1OiBTcHJpbmtsZSBu ZXdsaW5lcy4KdjY6IFNxdWFzaCB0aGUgRUxGIGhlYWRlciBjaGVja3MgZnJvbSAneHNwbGljZTog SW1wbGVtZW50IHBheWxvYWQgbG9hZGluZycgaGVyZSwKICAgIERvIGJldHRlciBqb2IgYXQgY2hl Y2tpbmcgc3RyaW5nIHNlY3Rpb25zIGFuZCB0aGUgdXNlcnMgb2YgdGhlbSAoc2hfc2l6ZSksCiAg ICBVc2UgWFNQTElDRSBhcyBhIHN0cmluZyBsaXRlcmFsLAogICAgTW92ZSBzb21lIGNoZWNrcyBv dXRzaWRlIHRoZSBsb29wLAogICAgTWFrZSBzdXJlIHRoYXQgU0hUX1NUUlRBQiBhcmUgcmVhbGx5 IHdoYXQgdGhleSBzYXkKICAgIFNwcmlua2xlIGNvbnN0cy4Kdjc6CiAgICBDaGVjayBzaF9lbnRz aXplIGFuZCBzaF9vZmZzZXQuCiAgICBBZGRlZCBBbmRyZXcncyBSZXZpZXdlZC1ieSBhbmQgSWFu J3MgQWNrZWQtYnkKICAgIFJlZG8gY2hlY2sgb24gc2hfZW50c2l6ZSB0byBub3QgYmUgIT0Kdjg6 IE1ha2UgYWxsIHRoZSBkcHJpbnRrKFhFTkxPR19ERUJVRyBiZSBYRU5MT0dfRVJSCnY5OiBDaGFu Z2VkIGVsZl92ZXJpZnlfc3RydGFiIHRvIHVzZSBjb25zdCBjaGFyIGFuZCByZXR1cm4gRUlOVkFM LgogICAgUmVtb3ZlICdpZiAoICFkZWx0YSApJyBjaGVjayBpbiBlbGZfcmVzb2x2ZV9zZWN0aW9u cwogICAgUmVtb3ZlIHN0YWxlIGNvbW1lbnRzLgogICAgRml4ZWQgb25lIG9mZiBjaGVjayBhZ2Fp bnN0ICBzaF9saW5rLgogICAgRG9jdW1lbnQgYm91bmRhcnkgY2hlY2tzIGFnYWluc3Qgc2hzdHJ0 YWIgYW5kIHN5bXRhYi4KICAgIEZpeGVkIHJldHVybiBjb2RlcyBpbiB4c3BsaWNlX2hlYWRlcl9j aGVjay4KICAgIEFkZCBjaGVjayBmb3Igc2VjdGlvbnMgdG8gbm90IGJlIHdpdGhpbiBFTEYgaGVh ZGVyLgogICAgQWRkZWQgb3ZlcmZsb3cgY2hlY2sgZm9yIGVfc2hvZmYgaW4geHNwbGljZV9oZWFk ZXJfY2hlY2suCiAgICBNb3ZlZCBYU1BMSUNFIG1hY3JvIGJ5IGZvdXIgdGFicy4KICAgIE1ha2Ug LT5zeW0gYmUgY29uc3QuCnYxMDoKICAtIENoYW5nZSB0aGUgY2hlY2sgYWdhaW5zdCA2NCB0byBi ZSBhZ2FpbnN0IFNITl9MT1JFU0VSVkUKICAtIFJlbW92ZSBSZXZpZXdlZC1ieQogIC0gSW4gZWxm X3Jlc29sdmVfc2VjdGlvbnMgc2tpcCBkZWx0YSBjaGVjayBpZiBTSFRfTk9CSVRTIGlzIHNldCBp bgogICAgc2Vjb25kIGNvbmRpdGlvbmFsLgogIC0gSW4gZWxmX2dldF9zeW0gdXNlIHN5bXRhYl9z ZWMtPnNlYy0+c2hfZW50c2l6ZSB0byBhY2Nlc3MKICAgIEVsZl9TeW0gc3ltYm9scyBhbmQgYWxz byBtYWtlIGl0IGEgY29uc3QuIEFsc28KICAgIGZpeCBib3VuZGFyeSBjaGVjayBhZ2FpbnN0IC5z dHJ0YWIgYW5kIG1ha2UgYXNzaWdtZW50IG9mCiAgICBzeW1baV0ubmFtZSBtb3JlIG5hdHVyYWwu CiAgLSBJbiB4c3BsaWNlX2hlYWRlcl9jaGVjayBhZGQgY29tbWVudCBhYm91dCBFSV9DTEFTUyBh bmQgZV9mbGFncwogICAgYmVpbmcgcGxhdGZvcm0gc3BlY2lmaWMuIENoZWNrIGFnYWluc3QgZV92 ZXJzaW9uIGFuZCBFSV9WRVJTSU9OLgogICAgQWxzbyByZWluc3RhdGUgZWxmLT5oZHItPmVfc2hv ZmYgPj0gZWxmLT5sZW4gIGNoZWNrLiBBZGQgSmFuJ3MgY2hlY2sgYWdhaW5zdAogICAgZWxmLT5o ZHItPmVfc2hudW0gKiBlbGYtPmhkci0+ZV9zaGVudHNpemUKdjEwOiBwYXRjaGVzIHBvc3RlZCBp bmxpbmUgaW4gdjguMSByZXBsaWVzOgogIC0gQ29udmVydCBpbiBlbGZfcmVzb2x2ZV9zZWN0aW9u cyBjaGVjayBhZ2FpbnN0IGRlbHRhIGFuZCBlbGYtPmxlbiB0byBhbiBBU1NFUlQKICAgIChlcXVh bCBvciBsZXNzKTsKICAgIEZpeCBlcnJvciBtZXNzYWdlIGZvciAuc2hzdHJ0YWIgdG8gYmUgY29y cmVjdC4KICAtIEluIGVsZl9nZXRfc3ltIG1ha2UgZGVsdGEgYmUgRWxmX1dvcmQgYW5kIG9mZnNl dCBiZSBFbGZfT2ZmLgogIC0gTW92ZSBFSV9BQklWRVJTSU9OIGJhY2sgaW4gY29tbW9uZCBjb2Rl LCBtb3ZlIEVJX0RBVEEgb3V0LiBVcGRhdGUgY29tbWVudC4KICAtIERyb3AgdGhlIG92ZXJmbG93 IGNoZWNrIGFnYWluc3QgZV9zaG9mZi4gTW92ZSB0aGUgY2hlY2sgb2YgZV9zaHN0cm5keAogICAg YW5kIGVfc2hudW0gYWZ0ZXIgd2UgY2hlY2sgZV9zaG51bSBmb3IgbWF4IHZhbHVlLgogIC0gTWFr ZSB0aGUgY2hlY2sgYWdhaW5zdCBlX3NobnVtIGJlIHVwIHRvIDEwMjQuCi0tLQogeGVuL2NvbW1v bi9NYWtlZmlsZSAgICAgICAgICAgfCAgIDEgKwogeGVuL2NvbW1vbi94c3BsaWNlX2VsZi5jICAg ICAgfCAzNzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4v aW5jbHVkZS94ZW4veHNwbGljZS5oICAgICB8ICAgMyArCiB4ZW4vaW5jbHVkZS94ZW4veHNwbGlj ZV9lbGYuaCB8ICA1MSArKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgNDI4IGluc2VydGlvbnMoKykK IGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vY29tbW9uL3hzcGxpY2VfZWxmLmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCB4ZW4vaW5jbHVkZS94ZW4veHNwbGljZV9lbGYuaAoKZGlmZiAtLWdpdCBhL3hlbi9j b21tb24vTWFrZWZpbGUgYi94ZW4vY29tbW9uL01ha2VmaWxlCmluZGV4IDFlNGJjNzAuLmFmZDg0 YjYgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vTWFrZWZpbGUKKysrIGIveGVuL2NvbW1vbi9NYWtl ZmlsZQpAQCAtNTksNiArNTksNyBAQCBvYmoteSArPSB3YWl0Lm8KIG9iai0kKENPTkZJR19YRU5P UFJPRikgKz0geGVub3Byb2Yubwogb2JqLXkgKz0geG1hbGxvY190bHNmLm8KIG9iai0kKENPTkZJ R19YU1BMSUNFKSArPSB4c3BsaWNlLm8KK29iai0kKENPTkZJR19YU1BMSUNFKSArPSB4c3BsaWNl X2VsZi5vCiAKIG9iai1iaW4tJChDT05GSUdfWDg2KSArPSAkKGZvcmVhY2ggbixkZWNvbXByZXNz IGJ1bnppcDIgdW54eiB1bmx6bWEgdW5sem8gdW5sejQgZWFybHljcGlvLCQobikuaW5pdC5vKQog CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3hzcGxpY2VfZWxmLmMgYi94ZW4vY29tbW9uL3hzcGxp Y2VfZWxmLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA0NjAxNQotLS0g L2Rldi9udWxsCisrKyBiL3hlbi9jb21tb24veHNwbGljZV9lbGYuYwpAQCAtMCwwICsxLDM3MyBA QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBDaXRyaXggU3lzdGVtcyBSJkQgTHRkLgorICov CisKKyNpbmNsdWRlIDx4ZW4vZXJybm8uaD4KKyNpbmNsdWRlIDx4ZW4vbGliLmg+CisjaW5jbHVk ZSA8eGVuL3hzcGxpY2VfZWxmLmg+CisjaW5jbHVkZSA8eGVuL3hzcGxpY2UuaD4KKworY29uc3Qg c3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqeHNwbGljZV9lbGZfc2VjX2J5X25hbWUoY29uc3Qgc3Ry dWN0IHhzcGxpY2VfZWxmICplbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKQoreworICAgIHVuc2lnbmVkIGlu dCBpOworCisgICAgZm9yICggaSA9IDE7IGkgPCBlbGYtPmhkci0+ZV9zaG51bTsgaSsrICkKKyAg ICB7CisgICAgICAgIGlmICggIXN0cmNtcChuYW1lLCBlbGYtPnNlY1tpXS5uYW1lKSApCisgICAg ICAgICAgICByZXR1cm4gJmVsZi0+c2VjW2ldOworICAgIH0KKworICAgIHJldHVybiBOVUxMOwor fQorCitzdGF0aWMgaW50IGVsZl92ZXJpZnlfc3RydGFiKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2Vs Zl9zZWMgKnNlYykKK3sKKyAgICBjb25zdCBFbGZfU2hkciAqczsKKyAgICBjb25zdCBjaGFyICpj b250ZW50czsKKworICAgIHMgPSBzZWMtPnNlYzsKKworICAgIGlmICggcy0+c2hfdHlwZSAhPSBT SFRfU1RSVEFCICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBpZiAoICFzLT5zaF9z aXplICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBjb250ZW50cyA9IHNlYy0+ZGF0 YTsKKworICAgIGlmICggY29udGVudHNbMF0gfHwgY29udGVudHNbcy0+c2hfc2l6ZSAtIDFdICkK KyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCBlbGZfcmVzb2x2ZV9zZWN0aW9ucyhzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwgY29uc3Qgdm9p ZCAqZGF0YSkKK3sKKyAgICBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzZWM7CisgICAgdW5zaWdu ZWQgaW50IGk7CisgICAgRWxmX09mZiBkZWx0YTsKKyAgICBpbnQgcmM7CisKKyAgICAvKiB4c3Bs aWNlX2VsZl9sb2FkIHNhbml0eSBjaGVja2VkIGVfc2hudW0uICovCisgICAgc2VjID0geG1hbGxv Y19hcnJheShzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjLCBlbGYtPmhkci0+ZV9zaG51bSk7CisgICAg aWYgKCAhc2VjICkKKyAgICB7CisgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSIl czogQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3Igc2VjdGlvbiB0YWJsZSFcbiIsCisgICAg ICAgICAgICAgICBlbGYtPm5hbWUpOworICAgICAgICByZXR1cm4gLUVOT01FTTsKKyAgICB9CisK KyAgICBlbGYtPnNlYyA9IHNlYzsKKworICAgIC8qIGVfc2hvZmYgYW5kIGVfc2hudW0gb3ZlcmZs b3cgY2hlY2tzIGFyZSBkb25lIGluIHhzcGxpY2VfaGVhZGVyX2NoZWNrLiAqLworICAgIGRlbHRh ID0gZWxmLT5oZHItPmVfc2hvZmYgKyBlbGYtPmhkci0+ZV9zaG51bSAqIGVsZi0+aGRyLT5lX3No ZW50c2l6ZTsKKyAgICBBU1NFUlQoZGVsdGEgPD0gZWxmLT5sZW4pOworCisgICAgZm9yICggaSA9 IDE7IGkgPCBlbGYtPmhkci0+ZV9zaG51bTsgaSsrICkKKyAgICB7CisgICAgICAgIGRlbHRhID0g ZWxmLT5oZHItPmVfc2hvZmYgKyBpICogZWxmLT5oZHItPmVfc2hlbnRzaXplOworCisgICAgICAg IHNlY1tpXS5zZWMgPSBkYXRhICsgZGVsdGE7CisKKyAgICAgICAgZGVsdGEgPSBzZWNbaV0uc2Vj LT5zaF9vZmZzZXQ7CisgICAgICAgIC8qCisgICAgICAgICAqIE4uQi4gZWxmX3Jlc29sdmVfc2Vj dGlvbl9uYW1lcywgZWxmX2dldF9zeW0gc2tpcCB0aGlzIGNoZWNrIGFzCisgICAgICAgICAqIHdl IGRvIGl0IGhlcmUuCisgICAgICAgICAqLworICAgICAgICBpZiAoIGRlbHRhIDwgc2l6ZW9mKEVs Zl9FaGRyKSB8fAorICAgICAgICAgICAgIChzZWNbaV0uc2VjLT5zaF90eXBlICE9IFNIVF9OT0JJ VFMgJiYgLyogU2tpcCBTSFRfTk9CSVRTICovCisgICAgICAgICAgICAgIChkZWx0YSA+IGVsZi0+ bGVuIHx8IChkZWx0YSArIHNlY1tpXS5zZWMtPnNoX3NpemUgPiBlbGYtPmxlbikpKSApCisgICAg ICAgIHsKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFNlY3Rp b24gWyV1XSBkYXRhICVzIG9mIHBheWxvYWQhXG4iLAorICAgICAgICAgICAgICAgICAgICBlbGYt Pm5hbWUsIGksCisgICAgICAgICAgICAgICAgICAgIGRlbHRhIDwgc2l6ZW9mKEVsZl9FaGRyKSA/ ICJhdCBFTEYgaGVhZGVyIiA6ICJpcyBwYXN0IGVuZCIpOworICAgICAgICAgICAgcmV0dXJuIC1F SU5WQUw7CisgICAgICAgIH0KKworICAgICAgICBzZWNbaV0uZGF0YSA9IGRhdGEgKyBkZWx0YTsK KyAgICAgICAgLyogTmFtZSBpcyBwb3B1bGF0ZWQgaW4gZWxmX3Jlc29sdmVfc2VjdGlvbl9uYW1l cy4gKi8KKyAgICAgICAgc2VjW2ldLm5hbWUgPSBOVUxMOworCisgICAgICAgIGlmICggc2VjW2ld LnNlYy0+c2hfdHlwZSA9PSBTSFRfU1lNVEFCICkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg KCBlbGYtPnN5bXRhYiApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZHByaW50ayhY RU5MT0dfRVJSLCBYU1BMSUNFICIlczogVW5zdXBwb3J0ZWQgbXVsdGlwbGUgc3ltYm9sIHRhYmxl cyFcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUpOworICAgICAgICAgICAg ICAgIHJldHVybiAtRU9QTk9UU1VQUDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZWxm LT5zeW10YWIgPSAmc2VjW2ldOworCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogZWxm LT5zeW10YWItPnNlYy0+c2hfbGluayB3b3VsZCBwb2ludCB0byB0aGUgcmlnaHQgc2VjdGlvbgor ICAgICAgICAgICAgICogYnV0IHdlIGhhZG4ndCBmaW5pc2hlZCBwYXJzaW5nIGFsbCB0aGUgc2Vj dGlvbnMuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmICggZWxmLT5zeW10YWItPnNl Yy0+c2hfbGluayA+PSBlbGYtPmhkci0+ZV9zaG51bSApCisgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFCisgICAgICAgICAgICAgICAgICAg ICAgICAiJXM6IFN5bWJvbCB0YWJsZSBpZHggKCV1KSB0byBzdHJ0YWIgcGFzdCBlbmQgKCV1KVxu IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgZWxmLT5zeW10YWItPnNlYy0+ c2hfbGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZi0+aGRyLT5lX3NobnVtKTsKKyAg ICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor ICAgIH0KKworICAgIGlmICggIWVsZi0+c3ltdGFiICkKKyAgICB7CisgICAgICAgIGRwcmludGso WEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IE5vIHN5bWJvbCB0YWJsZSBmb3VuZCFcbiIsCisgICAg ICAgICAgICAgICAgZWxmLT5uYW1lKTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQor CisgICAgaWYgKCAhZWxmLT5zeW10YWItPnNlYy0+c2hfc2l6ZSB8fAorICAgICAgICAgZWxmLT5z eW10YWItPnNlYy0+c2hfZW50c2l6ZSA8IHNpemVvZihFbGZfU3ltKSB8fAorICAgICAgICAgZWxm LT5zeW10YWItPnNlYy0+c2hfc2l6ZSAlIGVsZi0+c3ltdGFiLT5zZWMtPnNoX2VudHNpemUgKQor ICAgIHsKKyAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogU3ltYm9sIHRh YmxlIGhlYWRlciBpcyBjb3JydXB0ZWQhXG4iLAorICAgICAgICAgICAgICAgIGVsZi0+bmFtZSk7 CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIC8qCisgICAgICogVGhlcmUg Y2FuIGJlIG11bHRpcGxlIFNIVF9TVFJUQUIgKC5zaHN0cnRhYiwgLnN0cnRhYikgc28gcGljayB0 aGUgb25lCisgICAgICogYXNzb2NpYXRlZCB3aXRoIHRoZSBzeW1ib2wgdGFibGUuCisgICAgICov CisgICAgZWxmLT5zdHJ0YWIgPSAmc2VjW2VsZi0+c3ltdGFiLT5zZWMtPnNoX2xpbmtdOworCisg ICAgcmMgPSBlbGZfdmVyaWZ5X3N0cnRhYihlbGYtPnN0cnRhYik7CisgICAgaWYgKCByYyApCisg ICAgeworICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBTdHJpbmcgdGFi bGUgc2VjdGlvbiBpcyBjb3JydXB0ZWRcbiIsCisgICAgICAgICAgICAgICAgZWxmLT5uYW1lKTsK KyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgZWxmX3Jlc29sdmVfc2Vj dGlvbl9uYW1lcyhzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwgY29uc3Qgdm9pZCAqZGF0YSkKK3sK KyAgICBjb25zdCBjaGFyICpzaHN0cnRhYjsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBFbGZf T2ZmIG9mZnNldCwgZGVsdGE7CisgICAgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqc2VjOworICAg IGludCByYzsKKworICAgIC8qCisgICAgICogVGhlIGVsZi0+c2VjWzAgLT4gZV9zaG51bV0gc3Ry dWN0dXJlcyBoYXZlIGJlZW4gdmVyaWZpZWQgYnkKKyAgICAgKiBlbGZfcmVzb2x2ZV9zZWN0aW9u cy4gRmluZCBmaWxlIG9mZnNldCBmb3Igc2VjdGlvbiBzdHJpbmcgdGFibGUKKyAgICAgKiAobm9y bWFsbHkgY2FsbGVkIC5zaHN0cnRhYikKKyAgICAgKi8KKyAgICBzZWMgPSAmZWxmLT5zZWNbZWxm LT5oZHItPmVfc2hzdHJuZHhdOworCisgICAgcmMgPSBlbGZfdmVyaWZ5X3N0cnRhYihzZWMpOwor ICAgIGlmICggcmMgKQorICAgIHsKKyAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNF ICIlczogU2VjdGlvbiBzdHJpbmcgdGFibGUgaXMgY29ycnVwdGVkXG4iLAorICAgICAgICAgICAg ICAgIGVsZi0+bmFtZSk7CisgICAgICAgIHJldHVybiByYzsKKyAgICB9CisKKyAgICAvKiBWZXJp ZmllZCBpbiBlbGZfcmVzb2x2ZV9zZWN0aW9ucyBidXQganVzdCBpbiBjYXNlLiAqLworICAgIG9m ZnNldCA9IHNlYy0+c2VjLT5zaF9vZmZzZXQ7CisgICAgQVNTRVJUKG9mZnNldCA8IGVsZi0+bGVu ICYmIChvZmZzZXQgKyBzZWMtPnNlYy0+c2hfc2l6ZSA8PSBlbGYtPmxlbikpOworCisgICAgc2hz dHJ0YWIgPSBkYXRhICsgb2Zmc2V0OworCisgICAgZm9yICggaSA9IDE7IGkgPCBlbGYtPmhkci0+ ZV9zaG51bTsgaSsrICkKKyAgICB7CisgICAgICAgIGRlbHRhID0gZWxmLT5zZWNbaV0uc2VjLT5z aF9uYW1lOworCisgICAgICAgIC8qIEJvdW5kYXJ5IGNoZWNrIG9uIG9mZnNldCBvZiBuYW1lIHdp dGhpbiB0aGUgLnNoc3RydGFiLiAqLworICAgICAgICBpZiAoIGRlbHRhID49IHNlYy0+c2VjLT5z aF9zaXplICkKKyAgICAgICAgeworICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BM SUNFICIlczogU2VjdGlvbiAldSBuYW1lIGlzIG5vdCB3aXRoaW4gLnNoc3RydGFiIVxuIiwKKyAg ICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBpKTsKKyAgICAgICAgICAgIHJldHVybiAtRUlO VkFMOworICAgICAgICB9CisKKyAgICAgICAgZWxmLT5zZWNbaV0ubmFtZSA9IHNoc3RydGFiICsg ZGVsdGE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZWxmX2dldF9z eW0oc3RydWN0IHhzcGxpY2VfZWxmICplbGYsIGNvbnN0IHZvaWQgKmRhdGEpCit7CisgICAgY29u c3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqc3ltdGFiX3NlYywgKnN0cnRhYl9zZWM7CisgICAg c3RydWN0IHhzcGxpY2VfZWxmX3N5bSAqc3ltOworICAgIHVuc2lnbmVkIGludCBpLCBuc3ltOwor ICAgIEVsZl9PZmYgb2Zmc2V0OworICAgIEVsZl9Xb3JkIGRlbHRhOworCisgICAgc3ltdGFiX3Nl 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 ICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgLyogRUlfQ0xBU1MsIEVJX0RBVEEs IGFuZCBlX2ZsYWdzIGFyZSBwbGF0Zm9ybSBzcGVjaWZpYy4gKi8KKyAgICBpZiAoIGhkci0+ZV92 ZXJzaW9uICE9IEVWX0NVUlJFTlQgfHwKKyAgICAgICAgIGhkci0+ZV9pZGVudFtFSV9WRVJTSU9O XSAhPSBFVl9DVVJSRU5UIHx8CisgICAgICAgICBoZHItPmVfaWRlbnRbRUlfQUJJVkVSU0lPTl0g IT0gMCB8fAorICAgICAgICAgaGRyLT5lX2lkZW50W0VJX09TQUJJXSAhPSBFTEZPU0FCSV9TWVNW IHx8CisgICAgICAgICBoZHItPmVfdHlwZSAhPSBFVF9SRUwgfHwKKyAgICAgICAgIGhkci0+ZV9w aG51bSAhPSAwICkKKyAgICB7CisgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAi JXM6IEludmFsaWQgRUxGIHBheWxvYWQhXG4iLCBlbGYtPm5hbWUpOworICAgICAgICByZXR1cm4g LUVPUE5PVFNVUFA7CisgICAgfQorCisgICAgaWYgKCBlbGYtPmhkci0+ZV9zaHN0cm5keCA9PSBT SE5fVU5ERUYgKQorICAgIHsKKyAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIl czogU2VjdGlvbiBuYW1lIGlkeCBpcyB1bmRlZmluZWQhP1xuIiwKKyAgICAgICAgICAgICAgICBl bGYtPm5hbWUpOworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICAvKiBBcmJp dHJhcnkgYm91bmRhcnkgbGltaXQuICovCisgICAgaWYgKCBlbGYtPmhkci0+ZV9zaG51bSA+PSAx MDI0ICkKKyAgICB7CisgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFRv byBtYW55ICgldSkgc2VjdGlvbnMhXG4iLAorICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgZWxm LT5oZHItPmVfc2hudW0pOworICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7CisgICAgfQorCisg ICAgLyogQ2hlY2sgdGhhdCBzZWN0aW9uIG5hbWUgaW5kZXggaXMgd2l0aGluIHRoZSBzZWN0aW9u cy4gKi8KKyAgICBpZiAoIGVsZi0+aGRyLT5lX3Noc3RybmR4ID49IGVsZi0+aGRyLT5lX3NobnVt ICkKKyAgICB7CisgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFNlY3Rp b24gbmFtZSBpZHggKCV1KSBpcyBwYXN0IGVuZCBvZiBzZWN0aW9ucyAoJXUpIVxuIiwKKyAgICAg ICAgICAgICAgICBlbGYtPm5hbWUsIGVsZi0+aGRyLT5lX3Noc3RybmR4LCBlbGYtPmhkci0+ZV9z aG51bSk7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIGlmICggZWxmLT5o ZHItPmVfc2hvZmYgPj0gZWxmLT5sZW4gKQorICAgIHsKKyAgICAgICAgZHByaW50ayhYRU5MT0df RVJSLCBYU1BMSUNFICIlczogQm9ndXMgZV9zaG9mZiFcbiIsIGVsZi0+bmFtZSk7CisgICAgICAg IHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIGlmICggZWxmLT5oZHItPmVfc2hlbnRzaXpl IDwgc2l6ZW9mKEVsZl9TaGRyKSApCisgICAgeworICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIs IFhTUExJQ0UgIiVzOiBTZWN0aW9uIGhlYWRlciBzaXplIGlzICV1ISBFeHBlY3RlZCAlenUhP1xu IiwKKyAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIGVsZi0+aGRyLT5lX3NoZW50c2l6ZSwgc2l6 ZW9mKEVsZl9TaGRyKSk7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIGlm ICggKChlbGYtPmxlbiAtIGVsZi0+aGRyLT5lX3Nob2ZmKSAvIGVsZi0+aGRyLT5lX3NoZW50c2l6 ZSkgPAorICAgICAgICAgZWxmLT5oZHItPmVfc2hudW0gKQorICAgIHsKKyAgICAgICAgZHByaW50 ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogU2VjdGlvbiBoZWFkZXIgc2l6ZSBpcyBjb3JydXB0 ZWQhXG4iLAorICAgICAgICAgICAgICAgIGVsZi0+bmFtZSk7CisgICAgICAgIHJldHVybiAtRUlO VkFMOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitpbnQgeHNwbGljZV9lbGZfbG9hZChz dHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwgY29uc3Qgdm9pZCAqZGF0YSkKK3sKKyAgICBpbnQgcmM7 CisKKyAgICBlbGYtPmhkciA9IGRhdGE7CisKKyAgICByYyA9IHhzcGxpY2VfaGVhZGVyX2NoZWNr KGVsZik7CisgICAgaWYgKCByYyApCisgICAgICAgIHJldHVybiByYzsKKworICAgIHJjID0gZWxm X3Jlc29sdmVfc2VjdGlvbnMoZWxmLCBkYXRhKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgcmV0 dXJuIHJjOworCisgICAgcmMgPSBlbGZfcmVzb2x2ZV9zZWN0aW9uX25hbWVzKGVsZiwgZGF0YSk7 CisgICAgaWYgKCByYyApCisgICAgICAgIHJldHVybiByYzsKKworICAgIHJjID0gZWxmX2dldF9z eW0oZWxmLCBkYXRhKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAg cmV0dXJuIDA7Cit9CisKK3ZvaWQgeHNwbGljZV9lbGZfZnJlZShzdHJ1Y3QgeHNwbGljZV9lbGYg KmVsZikKK3sKKyAgICB4ZnJlZShlbGYtPnNlYyk7CisgICAgZWxmLT5zZWMgPSBOVUxMOworICAg IHhmcmVlKGVsZi0+c3ltKTsKKyAgICBlbGYtPnN5bSA9IE5VTEw7CisgICAgZWxmLT5uc3ltID0g MDsKKyAgICBlbGYtPm5hbWUgPSBOVUxMOworICAgIGVsZi0+bGVuID0gMDsKK30KKworLyoKKyAq IExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAq IGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6 IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5o IGIveGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaAppbmRleCBiOWYwOGNkLi43NTU5ODc3IDEwMDY0 NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi94 c3BsaWNlLmgKQEAgLTEwLDYgKzEwLDkgQEAgc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9vcDsK IAogI2lmZGVmIENPTkZJR19YU1BMSUNFCiAKKy8qIENvbnZlbmllbmNlIGRlZmluZSBmb3IgcHJp bnRrLiAqLworI2RlZmluZSBYU1BMSUNFICAgICAgICAgICAgICJ4c3BsaWNlOiAiCisKIGludCB4 c3BsaWNlX29wKHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vfb3AgKik7CiAKICNlbHNlCmRpZmYg LS1naXQgYS94ZW4vaW5jbHVkZS94ZW4veHNwbGljZV9lbGYuaCBiL3hlbi9pbmNsdWRlL3hlbi94 c3BsaWNlX2VsZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4NmFhZjAK LS0tIC9kZXYvbnVsbAorKysgYi94ZW4vaW5jbHVkZS94ZW4veHNwbGljZV9lbGYuaApAQCAtMCww ICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENpdHJpeCBTeXN0ZW1zIFImRCBM dGQuCisgKi8KKworI2lmbmRlZiBfX1hFTl9YU1BMSUNFX0VMRl9IX18KKyNkZWZpbmUgX19YRU5f WFNQTElDRV9FTEZfSF9fCisKKyNpbmNsdWRlIDx4ZW4vdHlwZXMuaD4KKyNpbmNsdWRlIDx4ZW4v ZWxmc3RydWN0cy5oPgorCisvKiBUaGUgZm9sbG93aW5nIGRlc2NyaWJlcyBhbiBFbGYgZmlsZSBh cyBjb25zdW1lZCBieSB4U3BsaWNlLiAqLworc3RydWN0IHhzcGxpY2VfZWxmX3NlYyB7CisgICAg Y29uc3QgRWxmX1NoZHIgKnNlYzsgICAgICAgICAgICAgICAgIC8qIEhvb2tlZCB1cCBpbiBlbGZf cmVzb2x2ZV9zZWN0aW9ucy4qLworICAgIGNvbnN0IGNoYXIgKm5hbWU7ICAgICAgICAgICAgICAg ICAgICAvKiBIdW1hbiByZWFkYWJsZSBuYW1lIGhvb2tlZCBpbgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBlbGZfcmVzb2x2ZV9zZWN0aW9uX25hbWVzLiAqLwor ICAgIGNvbnN0IHZvaWQgKmRhdGE7ICAgICAgICAgICAgICAgICAgICAvKiBQb2ludGVyIHRvIHRo ZSBzZWN0aW9uIChkb25lIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVsZl9yZXNvbHZlX3NlY3Rpb25zKS4gKi8KK307CisKK3N0cnVjdCB4c3BsaWNlX2Vs Zl9zeW0geworICAgIGNvbnN0IEVsZl9TeW0gKnN5bTsKKyAgICBjb25zdCBjaGFyICpuYW1lOwor fTsKKworc3RydWN0IHhzcGxpY2VfZWxmIHsKKyAgICBjb25zdCBjaGFyICpuYW1lOyAgICAgICAg ICAgICAgICAgICAgLyogUG9pbnRlciB0byBwYXlsb2FkLT5uYW1lLiAqLworICAgIHNpemVfdCBs ZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBMZW5ndGggb2YgdGhlIEVMRiBmaWxlLiAq LworICAgIGNvbnN0IEVsZl9FaGRyICpoZHI7ICAgICAgICAgICAgICAgICAvKiBFTEYgZmlsZS4g Ki8KKyAgICBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzZWM7ICAgICAgICAgLyogQXJyYXkgb2Yg c2VjdGlvbnMsIGFsbG9jYXRlZCBieSB1cy4gKi8KKyAgICBzdHJ1Y3QgeHNwbGljZV9lbGZfc3lt ICpzeW07ICAgICAgICAgLyogQXJyYXkgb2Ygc3ltYm9scyAsIGFsbG9jYXRlZCBieSB1cy4gKi8K KyAgICB1bnNpZ25lZCBpbnQgbnN5bTsKKyAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2Vj ICpzeW10YWI7LyogUG9pbnRlciB0byAuc3ltdGFiIHNlY3Rpb24gLSBha2EgdG8gc2VjW3hdLiAq LworICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnN0cnRhYjsvKiBQb2ludGVyIHRv IC5zdHJ0YWIgc2VjdGlvbiAtIGFrYSB0byBzZWNbeV0uICovCit9OworCitjb25zdCBzdHJ1Y3Qg eHNwbGljZV9lbGZfc2VjICp4c3BsaWNlX2VsZl9zZWNfYnlfbmFtZShjb25zdCBzdHJ1Y3QgeHNw bGljZV9lbGYgKmVsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpOworaW50IHhzcGxpY2VfZWxmX2xvYWQoc3Ry dWN0IHhzcGxpY2VfZWxmICplbGYsIGNvbnN0IHZvaWQgKmRhdGEpOwordm9pZCB4c3BsaWNlX2Vs Zl9mcmVlKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKTsKKworI2VuZGlmIC8qIF9fWEVOX1hTUExJ Q0VfRUxGX0hfXyAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICog Yy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDog NAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KLS0gCjIuNC4zCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWwK