From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v10 07/24] xsplice: Add helper elf routines Date: Wed, 27 Apr 2016 15:27:04 -0400 Message-ID: <1461785241-4481-8-git-send-email-konrad.wilk@oracle.com> References: <1461785241-4481-1-git-send-email-konrad.wilk@oracle.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 1avV8V-0004mW-4X for xen-devel@lists.xenproject.org; Wed, 27 Apr 2016 19:28:35 +0000 In-Reply-To: <1461785241-4481-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: konrad@kernel.org, xen-devel@lists.xenproject.org, sasha.levin@oracle.com, andrew.cooper3@citrix.com, ross.lagerwall@citrix.com, mpohlack@amazon.de Cc: Keir Fraser , Tim Deegan , Ian Jackson , Jan Beulich , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org RnJvbTogUm9zcyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5jb20+CgpBZGQgRWxm IHJvdXRpbmVzIGFuZCBkYXRhIHN0cnVjdHVyZXMgaW4gcHJlcGFyYXRpb24gZm9yIGxvYWRpbmcg YW4KeFNwbGljZSBwYXlsb2FkLgoKV2UgbWFrZSBhbiBhc3N1bXB0aW9uIHRoYXQgdGhlIG1heCBu dW1iZXIgb2Ygc2VjdGlvbnMgYW4gRUxGIHBheWxvYWQKY2FuIGhhdmUgaXMgNjQuIFdlIGNhbiBp biBmdXR1cmUgbWFrZSB0aGlzIGJlIGRlcGVuZGVudCBvbiB0aGUKbmFtZXMgb2YgdGhlIHNlY3Rp b25zIGFuZCB2ZXJpZnlpbmcgYWdhaW5zdCBhIGxpc3QsIGJ1dCBmb3IgcmlnaHQgbm93CnRoaXMg c3VmZmljZXMuCgpBbHNvIHdlIGEgd2hvbGUgbG90IG9mIGNoZWNrcyB0byBtYWtlIHN1cmUgdGhh dCB0aGUgRUxGIHBheWxvYWQKZmlsZSBpcyBub3QgY29ycnVwdGVkIG5vciB0aGF0IHRoZSBvZmZz ZXRzIHBvaW50IHBhc3QgdGhlIGZpbGUuCgpGb3IgbW9zdCBvZiB0aGUgY2hlY2tzIHdlIHByaW50 IGFuIG1lc3NhZ2UgaWYgdGhlIGh5cGVydmlzb3IgaXMgYnVpbHQKd2l0aCBkZWJ1ZyBlbmFibGVk LgoKU2lnbmVkLW9mZi1ieTogUm9zcyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5j b20+ClNpZ25lZC1vZmYtYnk6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3Jh Y2xlLmNvbT4KQWNrZWQtYnk6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29t PgoKLS0tCkNjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IEph biBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEtlaXIgRnJhc2VyIDxrZWlyQHhlbi5v cmc+CkNjOiBUaW0gRGVlZ2FuIDx0aW1AeGVuLm9yZz4KCnYyOiAtIFdpdGggdGhlICNkZWZpbmUg RUxGU0laRSBpbiB0aGUgQVJNIGZpbGUgd2UgY2FuIHVzZSB0aGUgY29tbW9uCiAgICAgI2RlZmlu ZXMgaW5zdGVhZCBvZiB1c2luZyAjaWZkZWYgQ09ORklHX0FSTV8zMi4gTW92ZWQgdG8gYW5vdGhl cgogICAgcGF0Y2guCiAgICAtIEFkZCBjaGVja3MgZm9yIEVMRiBmaWxlLgogICAgLSBBZGQgbmFt ZSB0byBiZSBwcmludGVkLgogICAgLSBBZGQgbGVuIGZvciBlYXNpZXIgRUxGIGNoZWNrcy4KICAg IC0gRXhwYW5kIG9uIHRoZSBjaGVja3MuIEFkZCBtYWNyby4KdjM6IFJlbW92ZSB0aGUgcmV0dXJu XyBtYWNybwogIC0gQWRkIHJldHVybl8gbWFjcm8gYmFjayBidXQgbWFrZSBpdCBkZXBlbmQgb24g ZGVidWc9eQogIC0gUGVyIEFuZHJldyByZXZpZXc6IGFkZCBsb2NhbCB2YXJpYWJsZS4gRml4IG1l bW9yeSBsZWFrIGluCiAgICBlbGZfcmVzb2x2ZV9zZWN0aW9ucywgUmVtb3ZlIG1hY3JvIGFuZCB1 c2UgZHByaW50ay4gRml4IGFsaWdubWVudC4KICAgIFVzZSB2b2lkKiBpbnN0ZWFkIG9mIHVpbnQ4 X3QgdG8gaGFuZGxlIHJhdyBwYXlsb2FkLgp2NCAtIEZpeCBtZW1vcnkgbGVhayBpbiBlbGZfZ2V0 X3N5bQogIC0gQWRkIFhTUExJQ0UgdG8gcHJpbnRrL2RwcmludGsKdjU6IFNwcmlua2xlIG5ld2xp bmVzLgp2NjogU3F1YXNoIHRoZSBFTEYgaGVhZGVyIGNoZWNrcyBmcm9tICd4c3BsaWNlOiBJbXBs ZW1lbnQgcGF5bG9hZCBsb2FkaW5nJyBoZXJlLAogICAgRG8gYmV0dGVyIGpvYiBhdCBjaGVja2lu ZyBzdHJpbmcgc2VjdGlvbnMgYW5kIHRoZSB1c2VycyBvZiB0aGVtIChzaF9zaXplKSwKICAgIFVz ZSBYU1BMSUNFIGFzIGEgc3RyaW5nIGxpdGVyYWwsCiAgICBNb3ZlIHNvbWUgY2hlY2tzIG91dHNp ZGUgdGhlIGxvb3AsCiAgICBNYWtlIHN1cmUgdGhhdCBTSFRfU1RSVEFCIGFyZSByZWFsbHkgd2hh dCB0aGV5IHNheQogICAgU3ByaW5rbGUgY29uc3RzLgp2NzoKICAgIENoZWNrIHNoX2VudHNpemUg YW5kIHNoX29mZnNldC4KICAgIEFkZGVkIEFuZHJldydzIFJldmlld2VkLWJ5IGFuZCBJYW4ncyBB Y2tlZC1ieQogICAgUmVkbyBjaGVjayBvbiBzaF9lbnRzaXplIHRvIG5vdCBiZSAhPQp2ODogTWFr ZSBhbGwgdGhlIGRwcmludGsoWEVOTE9HX0RFQlVHIGJlIFhFTkxPR19FUlIKdjk6IENoYW5nZWQg ZWxmX3ZlcmlmeV9zdHJ0YWIgdG8gdXNlIGNvbnN0IGNoYXIgYW5kIHJldHVybiBFSU5WQUwuCiAg ICBSZW1vdmUgJ2lmICggIWRlbHRhICknIGNoZWNrIGluIGVsZl9yZXNvbHZlX3NlY3Rpb25zCiAg ICBSZW1vdmUgc3RhbGUgY29tbWVudHMuCiAgICBGaXhlZCBvbmUgb2ZmIGNoZWNrIGFnYWluc3Qg IHNoX2xpbmsuCiAgICBEb2N1bWVudCBib3VuZGFyeSBjaGVja3MgYWdhaW5zdCBzaHN0cnRhYiBh bmQgc3ltdGFiLgogICAgRml4ZWQgcmV0dXJuIGNvZGVzIGluIHhzcGxpY2VfaGVhZGVyX2NoZWNr LgogICAgQWRkIGNoZWNrIGZvciBzZWN0aW9ucyB0byBub3QgYmUgd2l0aGluIEVMRiBoZWFkZXIu CiAgICBBZGRlZCBvdmVyZmxvdyBjaGVjayBmb3IgZV9zaG9mZiBpbiB4c3BsaWNlX2hlYWRlcl9j aGVjay4KICAgIE1vdmVkIFhTUExJQ0UgbWFjcm8gYnkgZm91ciB0YWJzLgogICAgTWFrZSAtPnN5 bSBiZSBjb25zdC4KdjEwOgogIC0gQ2hhbmdlIHRoZSBjaGVjayBhZ2FpbnN0IDY0IHRvIGJlIGFn YWluc3QgU0hOX0xPUkVTRVJWRQogIC0gUmVtb3ZlIFJldmlld2VkLWJ5CiAgLSBJbiBlbGZfcmVz b2x2ZV9zZWN0aW9ucyBza2lwIGRlbHRhIGNoZWNrIGlmIFNIVF9OT0JJVFMgaXMgc2V0IGluCiAg ICBzZWNvbmQgY29uZGl0aW9uYWwuCiAgLSBJbiBlbGZfZ2V0X3N5bSB1c2Ugc3ltdGFiX3NlYy0+ c2VjLT5zaF9lbnRzaXplIHRvIGFjY2VzcwogICAgRWxmX1N5bSBzeW1ib2xzIGFuZCBhbHNvIG1h a2UgaXQgYSBjb25zdC4gQWxzbwogICAgZml4IGJvdW5kYXJ5IGNoZWNrIGFnYWluc3QgLnN0cnRh YiBhbmQgbWFrZSBhc3NpZ21lbnQgb2YKICAgIHN5bVtpXS5uYW1lIG1vcmUgbmF0dXJhbC4KICAt IEluIHhzcGxpY2VfaGVhZGVyX2NoZWNrIGFkZCBjb21tZW50IGFib3V0IEVJX0NMQVNTIGFuZCBl X2ZsYWdzCiAgICBiZWluZyBwbGF0Zm9ybSBzcGVjaWZpYy4gQ2hlY2sgYWdhaW5zdCBlX3ZlcnNp b24gYW5kIEVJX1ZFUlNJT04uCiAgICBBbHNvIHJlaW5zdGF0ZSBlbGYtPmhkci0+ZV9zaG9mZiA+ PSBlbGYtPmxlbiAgY2hlY2suIEFkZCBKYW4ncyBjaGVjayBhZ2FpbnN0CiAgICBlbGYtPmhkci0+ ZV9zaG51bSAqIGVsZi0+aGRyLT5lX3NoZW50c2l6ZQp2MTA6IHBhdGNoZXMgcG9zdGVkIGlubGlu ZSBpbiB2OC4xIHJlcGxpZXM6CiAgLSBDb252ZXJ0IGluIGVsZl9yZXNvbHZlX3NlY3Rpb25zIGNo ZWNrIGFnYWluc3QgZGVsdGEgYW5kIGVsZi0+bGVuIHRvIGFuIEFTU0VSVAogICAgKGVxdWFsIG9y IGxlc3MpOwogICAgRml4IGVycm9yIG1lc3NhZ2UgZm9yIC5zaHN0cnRhYiB0byBiZSBjb3JyZWN0 LgogIC0gSW4gZWxmX2dldF9zeW0gbWFrZSBkZWx0YSBiZSBFbGZfV29yZCBhbmQgb2Zmc2V0IGJl IEVsZl9PZmYuCiAgLSBNb3ZlIEVJX0FCSVZFUlNJT04gYmFjayBpbiBjb21tb25kIGNvZGUsIG1v dmUgRUlfREFUQSBvdXQuIFVwZGF0ZSBjb21tZW50LgogIC0gRHJvcCB0aGUgb3ZlcmZsb3cgY2hl Y2sgYWdhaW5zdCBlX3Nob2ZmLiBNb3ZlIHRoZSBjaGVjayBvZiBlX3Noc3RybmR4CiAgICBhbmQg ZV9zaG51bSBhZnRlciB3ZSBjaGVjayBlX3NobnVtIGZvciBtYXggdmFsdWUuCiAgLSBNYWtlIHRo ZSBjaGVjayBhZ2FpbnN0IGVfc2hudW0gYmUgdXAgdG8gMTAyNC4KLS0tCiB4ZW4vY29tbW9uL01h a2VmaWxlICAgICAgICAgICB8ICAgMSArCiB4ZW4vY29tbW9uL3hzcGxpY2VfZWxmLmMgICAgICB8 IDM3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9pbmNs dWRlL3hlbi94c3BsaWNlLmggICAgIHwgICAzICsKIHhlbi9pbmNsdWRlL3hlbi94c3BsaWNlX2Vs Zi5oIHwgIDUxICsrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCA0MjggaW5zZXJ0aW9ucygrKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHhlbi9jb21tb24veHNwbGljZV9lbGYuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IHhlbi9pbmNsdWRlL3hlbi94c3BsaWNlX2VsZi5oCgpkaWZmIC0tZ2l0IGEveGVuL2NvbW1v bi9NYWtlZmlsZSBiL3hlbi9jb21tb24vTWFrZWZpbGUKaW5kZXggMWU0YmM3MC4uYWZkODRiNiAx MDA2NDQKLS0tIGEveGVuL2NvbW1vbi9NYWtlZmlsZQorKysgYi94ZW4vY29tbW9uL01ha2VmaWxl CkBAIC01OSw2ICs1OSw3IEBAIG9iai15ICs9IHdhaXQubwogb2JqLSQoQ09ORklHX1hFTk9QUk9G KSArPSB4ZW5vcHJvZi5vCiBvYmoteSArPSB4bWFsbG9jX3Rsc2Yubwogb2JqLSQoQ09ORklHX1hT UExJQ0UpICs9IHhzcGxpY2Uubworb2JqLSQoQ09ORklHX1hTUExJQ0UpICs9IHhzcGxpY2VfZWxm Lm8KIAogb2JqLWJpbi0kKENPTkZJR19YODYpICs9ICQoZm9yZWFjaCBuLGRlY29tcHJlc3MgYnVu emlwMiB1bnh6IHVubHptYSB1bmx6byB1bmx6NCBlYXJseWNwaW8sJChuKS5pbml0Lm8pCiAKZGlm ZiAtLWdpdCBhL3hlbi9jb21tb24veHNwbGljZV9lbGYuYyBiL3hlbi9jb21tb24veHNwbGljZV9l bGYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDQ2MDE1Ci0tLSAvZGV2 L251bGwKKysrIGIveGVuL2NvbW1vbi94c3BsaWNlX2VsZi5jCkBAIC0wLDAgKzEsMzczIEBACisv KgorICogQ29weXJpZ2h0IChDKSAyMDE2IENpdHJpeCBTeXN0ZW1zIFImRCBMdGQuCisgKi8KKwor I2luY2x1ZGUgPHhlbi9lcnJuby5oPgorI2luY2x1ZGUgPHhlbi9saWIuaD4KKyNpbmNsdWRlIDx4 ZW4veHNwbGljZV9lbGYuaD4KKyNpbmNsdWRlIDx4ZW4veHNwbGljZS5oPgorCitjb25zdCBzdHJ1 Y3QgeHNwbGljZV9lbGZfc2VjICp4c3BsaWNlX2VsZl9zZWNfYnlfbmFtZShjb25zdCBzdHJ1Y3Qg eHNwbGljZV9lbGYgKmVsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgdW5zaWduZWQgaW50IGk7 CisKKyAgICBmb3IgKCBpID0gMTsgaSA8IGVsZi0+aGRyLT5lX3NobnVtOyBpKysgKQorICAgIHsK KyAgICAgICAgaWYgKCAhc3RyY21wKG5hbWUsIGVsZi0+c2VjW2ldLm5hbWUpICkKKyAgICAgICAg ICAgIHJldHVybiAmZWxmLT5zZWNbaV07CisgICAgfQorCisgICAgcmV0dXJuIE5VTEw7Cit9CisK K3N0YXRpYyBpbnQgZWxmX3ZlcmlmeV9zdHJ0YWIoY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3Nl YyAqc2VjKQoreworICAgIGNvbnN0IEVsZl9TaGRyICpzOworICAgIGNvbnN0IGNoYXIgKmNvbnRl bnRzOworCisgICAgcyA9IHNlYy0+c2VjOworCisgICAgaWYgKCBzLT5zaF90eXBlICE9IFNIVF9T VFJUQUIgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICggIXMtPnNoX3NpemUg KQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGNvbnRlbnRzID0gc2VjLT5kYXRhOwor CisgICAgaWYgKCBjb250ZW50c1swXSB8fCBjb250ZW50c1tzLT5zaF9zaXplIC0gMV0gKQorICAg ICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGVs Zl9yZXNvbHZlX3NlY3Rpb25zKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLCBjb25zdCB2b2lkICpk YXRhKQoreworICAgIHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnNlYzsKKyAgICB1bnNpZ25lZCBp bnQgaTsKKyAgICBFbGZfT2ZmIGRlbHRhOworICAgIGludCByYzsKKworICAgIC8qIHhzcGxpY2Vf ZWxmX2xvYWQgc2FuaXR5IGNoZWNrZWQgZV9zaG51bS4gKi8KKyAgICBzZWMgPSB4bWFsbG9jX2Fy cmF5KHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMsIGVsZi0+aGRyLT5lX3NobnVtKTsKKyAgICBpZiAo ICFzZWMgKQorICAgIHsKKyAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFIiVzOiBD b3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBzZWN0aW9uIHRhYmxlIVxuIiwKKyAgICAgICAg ICAgICAgIGVsZi0+bmFtZSk7CisgICAgICAgIHJldHVybiAtRU5PTUVNOworICAgIH0KKworICAg IGVsZi0+c2VjID0gc2VjOworCisgICAgLyogZV9zaG9mZiBhbmQgZV9zaG51bSBvdmVyZmxvdyBj aGVja3MgYXJlIGRvbmUgaW4geHNwbGljZV9oZWFkZXJfY2hlY2suICovCisgICAgZGVsdGEgPSBl bGYtPmhkci0+ZV9zaG9mZiArIGVsZi0+aGRyLT5lX3NobnVtICogZWxmLT5oZHItPmVfc2hlbnRz aXplOworICAgIEFTU0VSVChkZWx0YSA8PSBlbGYtPmxlbik7CisKKyAgICBmb3IgKCBpID0gMTsg aSA8IGVsZi0+aGRyLT5lX3NobnVtOyBpKysgKQorICAgIHsKKyAgICAgICAgZGVsdGEgPSBlbGYt Pmhkci0+ZV9zaG9mZiArIGkgKiBlbGYtPmhkci0+ZV9zaGVudHNpemU7CisKKyAgICAgICAgc2Vj W2ldLnNlYyA9IGRhdGEgKyBkZWx0YTsKKworICAgICAgICBkZWx0YSA9IHNlY1tpXS5zZWMtPnNo X29mZnNldDsKKyAgICAgICAgLyoKKyAgICAgICAgICogTi5CLiBlbGZfcmVzb2x2ZV9zZWN0aW9u X25hbWVzLCBlbGZfZ2V0X3N5bSBza2lwIHRoaXMgY2hlY2sgYXMKKyAgICAgICAgICogd2UgZG8g aXQgaGVyZS4KKyAgICAgICAgICovCisgICAgICAgIGlmICggZGVsdGEgPCBzaXplb2YoRWxmX0Vo ZHIpIHx8CisgICAgICAgICAgICAgKHNlY1tpXS5zZWMtPnNoX3R5cGUgIT0gU0hUX05PQklUUyAm JiAvKiBTa2lwIFNIVF9OT0JJVFMgKi8KKyAgICAgICAgICAgICAgKGRlbHRhID4gZWxmLT5sZW4g fHwgKGRlbHRhICsgc2VjW2ldLnNlYy0+c2hfc2l6ZSA+IGVsZi0+bGVuKSkpICkKKyAgICAgICAg eworICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogU2VjdGlvbiBb JXVdIGRhdGEgJXMgb2YgcGF5bG9hZCFcbiIsCisgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFt ZSwgaSwKKyAgICAgICAgICAgICAgICAgICAgZGVsdGEgPCBzaXplb2YoRWxmX0VoZHIpID8gImF0 IEVMRiBoZWFkZXIiIDogImlzIHBhc3QgZW5kIik7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZB TDsKKyAgICAgICAgfQorCisgICAgICAgIHNlY1tpXS5kYXRhID0gZGF0YSArIGRlbHRhOworICAg ICAgICAvKiBOYW1lIGlzIHBvcHVsYXRlZCBpbiBlbGZfcmVzb2x2ZV9zZWN0aW9uX25hbWVzLiAq LworICAgICAgICBzZWNbaV0ubmFtZSA9IE5VTEw7CisKKyAgICAgICAgaWYgKCBzZWNbaV0uc2Vj LT5zaF90eXBlID09IFNIVF9TWU1UQUIgKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIGVs Zi0+c3ltdGFiICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkcHJpbnRrKFhFTkxP R19FUlIsIFhTUExJQ0UgIiVzOiBVbnN1cHBvcnRlZCBtdWx0aXBsZSBzeW1ib2wgdGFibGVzIVxu IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSk7CisgICAgICAgICAgICAgICAg cmV0dXJuIC1FT1BOT1RTVVBQOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlbGYtPnN5 bXRhYiA9ICZzZWNbaV07CisKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBlbGYtPnN5 bXRhYi0+c2VjLT5zaF9saW5rIHdvdWxkIHBvaW50IHRvIHRoZSByaWdodCBzZWN0aW9uCisgICAg ICAgICAgICAgKiBidXQgd2UgaGFkbid0IGZpbmlzaGVkIHBhcnNpbmcgYWxsIHRoZSBzZWN0aW9u cy4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKCBlbGYtPnN5bXRhYi0+c2VjLT5z aF9saW5rID49IGVsZi0+aGRyLT5lX3NobnVtICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UKKyAgICAgICAgICAgICAgICAgICAgICAg ICIlczogU3ltYm9sIHRhYmxlIGlkeCAoJXUpIHRvIHN0cnRhYiBwYXN0IGVuZCAoJXUpXG4iLAor ICAgICAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBlbGYtPnN5bXRhYi0+c2VjLT5zaF9s aW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgZWxmLT5oZHItPmVfc2hudW0pOworICAgICAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg fQorCisgICAgaWYgKCAhZWxmLT5zeW10YWIgKQorICAgIHsKKyAgICAgICAgZHByaW50ayhYRU5M T0dfRVJSLCBYU1BMSUNFICIlczogTm8gc3ltYm9sIHRhYmxlIGZvdW5kIVxuIiwKKyAgICAgICAg ICAgICAgICBlbGYtPm5hbWUpOworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAg ICBpZiAoICFlbGYtPnN5bXRhYi0+c2VjLT5zaF9zaXplIHx8CisgICAgICAgICBlbGYtPnN5bXRh Yi0+c2VjLT5zaF9lbnRzaXplIDwgc2l6ZW9mKEVsZl9TeW0pIHx8CisgICAgICAgICBlbGYtPnN5 bXRhYi0+c2VjLT5zaF9zaXplICUgZWxmLT5zeW10YWItPnNlYy0+c2hfZW50c2l6ZSApCisgICAg eworICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBTeW1ib2wgdGFibGUg aGVhZGVyIGlzIGNvcnJ1cHRlZCFcbiIsCisgICAgICAgICAgICAgICAgZWxmLT5uYW1lKTsKKyAg ICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBUaGVyZSBjYW4g YmUgbXVsdGlwbGUgU0hUX1NUUlRBQiAoLnNoc3RydGFiLCAuc3RydGFiKSBzbyBwaWNrIHRoZSBv bmUKKyAgICAgKiBhc3NvY2lhdGVkIHdpdGggdGhlIHN5bWJvbCB0YWJsZS4KKyAgICAgKi8KKyAg ICBlbGYtPnN0cnRhYiA9ICZzZWNbZWxmLT5zeW10YWItPnNlYy0+c2hfbGlua107CisKKyAgICBy YyA9IGVsZl92ZXJpZnlfc3RydGFiKGVsZi0+c3RydGFiKTsKKyAgICBpZiAoIHJjICkKKyAgICB7 CisgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFN0cmluZyB0YWJsZSBz ZWN0aW9uIGlzIGNvcnJ1cHRlZFxuIiwKKyAgICAgICAgICAgICAgICBlbGYtPm5hbWUpOworICAg IH0KKworICAgIHJldHVybiByYzsKK30KKworc3RhdGljIGludCBlbGZfcmVzb2x2ZV9zZWN0aW9u X25hbWVzKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLCBjb25zdCB2b2lkICpkYXRhKQoreworICAg IGNvbnN0IGNoYXIgKnNoc3RydGFiOworICAgIHVuc2lnbmVkIGludCBpOworICAgIEVsZl9PZmYg b2Zmc2V0LCBkZWx0YTsKKyAgICBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzZWM7CisgICAgaW50 IHJjOworCisgICAgLyoKKyAgICAgKiBUaGUgZWxmLT5zZWNbMCAtPiBlX3NobnVtXSBzdHJ1Y3R1 cmVzIGhhdmUgYmVlbiB2ZXJpZmllZCBieQorICAgICAqIGVsZl9yZXNvbHZlX3NlY3Rpb25zLiBG aW5kIGZpbGUgb2Zmc2V0IGZvciBzZWN0aW9uIHN0cmluZyB0YWJsZQorICAgICAqIChub3JtYWxs eSBjYWxsZWQgLnNoc3RydGFiKQorICAgICAqLworICAgIHNlYyA9ICZlbGYtPnNlY1tlbGYtPmhk ci0+ZV9zaHN0cm5keF07CisKKyAgICByYyA9IGVsZl92ZXJpZnlfc3RydGFiKHNlYyk7CisgICAg aWYgKCByYyApCisgICAgeworICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVz OiBTZWN0aW9uIHN0cmluZyB0YWJsZSBpcyBjb3JydXB0ZWRcbiIsCisgICAgICAgICAgICAgICAg ZWxmLT5uYW1lKTsKKyAgICAgICAgcmV0dXJuIHJjOworICAgIH0KKworICAgIC8qIFZlcmlmaWVk IGluIGVsZl9yZXNvbHZlX3NlY3Rpb25zIGJ1dCBqdXN0IGluIGNhc2UuICovCisgICAgb2Zmc2V0 ID0gc2VjLT5zZWMtPnNoX29mZnNldDsKKyAgICBBU1NFUlQob2Zmc2V0IDwgZWxmLT5sZW4gJiYg KG9mZnNldCArIHNlYy0+c2VjLT5zaF9zaXplIDw9IGVsZi0+bGVuKSk7CisKKyAgICBzaHN0cnRh YiA9IGRhdGEgKyBvZmZzZXQ7CisKKyAgICBmb3IgKCBpID0gMTsgaSA8IGVsZi0+aGRyLT5lX3No bnVtOyBpKysgKQorICAgIHsKKyAgICAgICAgZGVsdGEgPSBlbGYtPnNlY1tpXS5zZWMtPnNoX25h bWU7CisKKyAgICAgICAgLyogQm91bmRhcnkgY2hlY2sgb24gb2Zmc2V0IG9mIG5hbWUgd2l0aGlu IHRoZSAuc2hzdHJ0YWIuICovCisgICAgICAgIGlmICggZGVsdGEgPj0gc2VjLT5zZWMtPnNoX3Np emUgKQorICAgICAgICB7CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0Ug IiVzOiBTZWN0aW9uICV1IG5hbWUgaXMgbm90IHdpdGhpbiAuc2hzdHJ0YWIhXG4iLAorICAgICAg ICAgICAgICAgICAgICBlbGYtPm5hbWUsIGkpOworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 CisgICAgICAgIH0KKworICAgICAgICBlbGYtPnNlY1tpXS5uYW1lID0gc2hzdHJ0YWIgKyBkZWx0 YTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBlbGZfZ2V0X3N5bShz dHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwgY29uc3Qgdm9pZCAqZGF0YSkKK3sKKyAgICBjb25zdCBz dHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzeW10YWJfc2VjLCAqc3RydGFiX3NlYzsKKyAgICBzdHJ1 Y3QgeHNwbGljZV9lbGZfc3ltICpzeW07CisgICAgdW5zaWduZWQgaW50IGksIG5zeW07CisgICAg RWxmX09mZiBvZmZzZXQ7CisgICAgRWxmX1dvcmQgZGVsdGE7CisKKyAgICBzeW10YWJfc2VjID0g ZWxmLT5zeW10YWI7CisgICAgc3RydGFiX3NlYyA9IGVsZi0+c3RydGFiOworCisgICAgLyogUG9p bnRlcnMgYXJpdGhtZXRpYyB0byBnZXQgZmlsZSBvZmZzZXQuICovCisgICAgb2Zmc2V0ID0gc3Ry dGFiX3NlYy0+ZGF0YSAtIGRhdGE7CisKKyAgICAvKiBDaGVja2VkIGFscmVhZHkgaW4gZWxmX3Jl c29sdmVfc2VjdGlvbnMsIGJ1dCBqdXN0IGluIGNhc2UuICovCisgICAgQVNTRVJUKG9mZnNldCA9 PSBzdHJ0YWJfc2VjLT5zZWMtPnNoX29mZnNldCk7CisgICAgQVNTRVJUKG9mZnNldCA8IGVsZi0+ bGVuICYmIChvZmZzZXQgKyBzdHJ0YWJfc2VjLT5zZWMtPnNoX3NpemUgPD0gZWxmLT5sZW4pKTsK KworICAgIC8qIHN5bXRhYl9zZWMtPmRhdGEgd2FzIGNvbXB1dGVkIGluIGVsZl9yZXNvbHZlX3Nl Y3Rpb25zLiAqLworICAgIEFTU0VSVCgoc3ltdGFiX3NlYy0+c2VjLT5zaF9vZmZzZXQgKyBkYXRh KSA9PSBzeW10YWJfc2VjLT5kYXRhKTsKKworICAgIC8qIE5vIG5lZWQgdG8gY2hlY2sgdmFsdWVz IGFzIGVsZl9yZXNvbHZlX3NlY3Rpb25zIGRpZCBpdC4gKi8KKyAgICBuc3ltID0gc3ltdGFiX3Nl Yy0+c2VjLT5zaF9zaXplIC8gc3ltdGFiX3NlYy0+c2VjLT5zaF9lbnRzaXplOworCisgICAgc3lt ID0geG1hbGxvY19hcnJheShzdHJ1Y3QgeHNwbGljZV9lbGZfc3ltLCBuc3ltKTsKKyAgICBpZiAo ICFzeW0gKQorICAgIHsKKyAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczog Q291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3Igc3ltYm9sc1xuIiwKKyAgICAgICAgICAgICAg IGVsZi0+bmFtZSk7CisgICAgICAgIHJldHVybiAtRU5PTUVNOworICAgIH0KKworICAgIC8qIFNv IHdlIGRvbid0IGxlYWsgbWVtb3J5LiAqLworICAgIGVsZi0+c3ltID0gc3ltOworCisgICAgZm9y ICggaSA9IDE7IGkgPCBuc3ltOyBpKysgKQorICAgIHsKKyAgICAgICAgY29uc3QgRWxmX1N5bSAq cyA9IHN5bXRhYl9zZWMtPmRhdGEgKyBzeW10YWJfc2VjLT5zZWMtPnNoX2VudHNpemUgKiBpOwor CisgICAgICAgIGRlbHRhID0gcy0+c3RfbmFtZTsKKyAgICAgICAgLyogQm91bmRhcnkgY2hlY2sg d2l0aGluIHRoZSAuc3RydGFiLiAqLworICAgICAgICBpZiAoIGRlbHRhID49IHN0cnRhYl9zZWMt PnNlYy0+c2hfc2l6ZSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VS UiwgWFNQTElDRSAiJXM6IFN5bWJvbCBbJXVdIG5hbWUgaXMgbm90IHdpdGhpbiAuc3RydGFiIVxu IiwKKyAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBpKTsKKyAgICAgICAgICAgIHJldHVy biAtRUlOVkFMOworICAgICAgICB9CisKKyAgICAgICAgc3ltW2ldLnN5bSA9IHM7CisgICAgICAg IHN5bVtpXS5uYW1lID0gc3RydGFiX3NlYy0+ZGF0YSArIGRlbHRhOworICAgIH0KKyAgICBlbGYt Pm5zeW0gPSBuc3ltOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgeHNwbGljZV9o ZWFkZXJfY2hlY2soY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCit7CisgICAgY29uc3Qg RWxmX0VoZHIgKmhkciA9IGVsZi0+aGRyOworCisgICAgaWYgKCBzaXplb2YoKmVsZi0+aGRyKSA+ IGVsZi0+bGVuICkKKyAgICB7CisgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAi JXM6IFNlY3Rpb24gaGVhZGVyIGlzIGJpZ2dlciB0aGFuIHBheWxvYWQhXG4iLAorICAgICAgICAg ICAgICAgIGVsZi0+bmFtZSk7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAg IGlmICggIUlTX0VMRigqaGRyKSApCisgICAgeworICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIs IFhTUExJQ0UgIiVzOiBOb3QgYW4gRUxGIHBheWxvYWQhXG4iLCBlbGYtPm5hbWUpOworICAgICAg ICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICAvKiBFSV9DTEFTUywgRUlfREFUQSwgYW5k IGVfZmxhZ3MgYXJlIHBsYXRmb3JtIHNwZWNpZmljLiAqLworICAgIGlmICggaGRyLT5lX3ZlcnNp b24gIT0gRVZfQ1VSUkVOVCB8fAorICAgICAgICAgaGRyLT5lX2lkZW50W0VJX1ZFUlNJT05dICE9 IEVWX0NVUlJFTlQgfHwKKyAgICAgICAgIGhkci0+ZV9pZGVudFtFSV9BQklWRVJTSU9OXSAhPSAw IHx8CisgICAgICAgICBoZHItPmVfaWRlbnRbRUlfT1NBQkldICE9IEVMRk9TQUJJX1NZU1YgfHwK KyAgICAgICAgIGhkci0+ZV90eXBlICE9IEVUX1JFTCB8fAorICAgICAgICAgaGRyLT5lX3BobnVt ICE9IDAgKQorICAgIHsKKyAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczog SW52YWxpZCBFTEYgcGF5bG9hZCFcbiIsIGVsZi0+bmFtZSk7CisgICAgICAgIHJldHVybiAtRU9Q Tk9UU1VQUDsKKyAgICB9CisKKyAgICBpZiAoIGVsZi0+aGRyLT5lX3Noc3RybmR4ID09IFNITl9V TkRFRiApCisgICAgeworICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBT ZWN0aW9uIG5hbWUgaWR4IGlzIHVuZGVmaW5lZCE/XG4iLAorICAgICAgICAgICAgICAgIGVsZi0+ bmFtZSk7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIC8qIEFyYml0cmFy eSBib3VuZGFyeSBsaW1pdC4gKi8KKyAgICBpZiAoIGVsZi0+aGRyLT5lX3NobnVtID49IDEwMjQg KQorICAgIHsKKyAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogVG9vIG1h bnkgKCV1KSBzZWN0aW9ucyFcbiIsCisgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBlbGYtPmhk ci0+ZV9zaG51bSk7CisgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsKKyAgICB9CisKKyAgICAv KiBDaGVjayB0aGF0IHNlY3Rpb24gbmFtZSBpbmRleCBpcyB3aXRoaW4gdGhlIHNlY3Rpb25zLiAq LworICAgIGlmICggZWxmLT5oZHItPmVfc2hzdHJuZHggPj0gZWxmLT5oZHItPmVfc2hudW0gKQor ICAgIHsKKyAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogU2VjdGlvbiBu YW1lIGlkeCAoJXUpIGlzIHBhc3QgZW5kIG9mIHNlY3Rpb25zICgldSkhXG4iLAorICAgICAgICAg ICAgICAgIGVsZi0+bmFtZSwgZWxmLT5oZHItPmVfc2hzdHJuZHgsIGVsZi0+aGRyLT5lX3NobnVt KTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgaWYgKCBlbGYtPmhkci0+ ZV9zaG9mZiA+PSBlbGYtPmxlbiApCisgICAgeworICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIs IFhTUExJQ0UgIiVzOiBCb2d1cyBlX3Nob2ZmIVxuIiwgZWxmLT5uYW1lKTsKKyAgICAgICAgcmV0 dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgaWYgKCBlbGYtPmhkci0+ZV9zaGVudHNpemUgPCBz aXplb2YoRWxmX1NoZHIpICkKKyAgICB7CisgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQ TElDRSAiJXM6IFNlY3Rpb24gaGVhZGVyIHNpemUgaXMgJXUhIEV4cGVjdGVkICV6dSE/XG4iLAor ICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgZWxmLT5oZHItPmVfc2hlbnRzaXplLCBzaXplb2Yo RWxmX1NoZHIpKTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgaWYgKCAo KGVsZi0+bGVuIC0gZWxmLT5oZHItPmVfc2hvZmYpIC8gZWxmLT5oZHItPmVfc2hlbnRzaXplKSA8 CisgICAgICAgICBlbGYtPmhkci0+ZV9zaG51bSApCisgICAgeworICAgICAgICBkcHJpbnRrKFhF TkxPR19FUlIsIFhTUExJQ0UgIiVzOiBTZWN0aW9uIGhlYWRlciBzaXplIGlzIGNvcnJ1cHRlZCFc biIsCisgICAgICAgICAgICAgICAgZWxmLT5uYW1lKTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7 CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2ludCB4c3BsaWNlX2VsZl9sb2FkKHN0cnVj dCB4c3BsaWNlX2VsZiAqZWxmLCBjb25zdCB2b2lkICpkYXRhKQoreworICAgIGludCByYzsKKwor ICAgIGVsZi0+aGRyID0gZGF0YTsKKworICAgIHJjID0geHNwbGljZV9oZWFkZXJfY2hlY2soZWxm KTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAgcmMgPSBlbGZfcmVz b2x2ZV9zZWN0aW9ucyhlbGYsIGRhdGEpOworICAgIGlmICggcmMgKQorICAgICAgICByZXR1cm4g cmM7CisKKyAgICByYyA9IGVsZl9yZXNvbHZlX3NlY3Rpb25fbmFtZXMoZWxmLCBkYXRhKTsKKyAg ICBpZiAoIHJjICkKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAgcmMgPSBlbGZfZ2V0X3N5bShl bGYsIGRhdGEpOworICAgIGlmICggcmMgKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICByZXR1 cm4gMDsKK30KKwordm9pZCB4c3BsaWNlX2VsZl9mcmVlKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxm KQoreworICAgIHhmcmVlKGVsZi0+c2VjKTsKKyAgICBlbGYtPnNlYyA9IE5VTEw7CisgICAgeGZy ZWUoZWxmLT5zeW0pOworICAgIGVsZi0+c3ltID0gTlVMTDsKKyAgICBlbGYtPm5zeW0gPSAwOwor ICAgIGVsZi0+bmFtZSA9IE5VTEw7CisgICAgZWxmLT5sZW4gPSAwOworfQorCisvKgorICogTG9j YWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1i YXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmls CisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmggYi94 ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oCmluZGV4IGI5ZjA4Y2QuLjc1NTk4NzcgMTAwNjQ0Ci0t LSBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL3hzcGxp Y2UuaApAQCAtMTAsNiArMTAsOSBAQCBzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX29wOwogCiAj aWZkZWYgQ09ORklHX1hTUExJQ0UKIAorLyogQ29udmVuaWVuY2UgZGVmaW5lIGZvciBwcmludGsu ICovCisjZGVmaW5lIFhTUExJQ0UgICAgICAgICAgICAgInhzcGxpY2U6ICIKKwogaW50IHhzcGxp Y2Vfb3Aoc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9vcCAqKTsKIAogI2Vsc2UKZGlmZiAtLWdp dCBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlX2VsZi5oIGIveGVuL2luY2x1ZGUveGVuL3hzcGxp Y2VfZWxmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg2YWFmMAotLS0g L2Rldi9udWxsCisrKyBiL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlX2VsZi5oCkBAIC0wLDAgKzEs NTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2l0cml4IFN5c3RlbXMgUiZEIEx0ZC4K KyAqLworCisjaWZuZGVmIF9fWEVOX1hTUExJQ0VfRUxGX0hfXworI2RlZmluZSBfX1hFTl9YU1BM SUNFX0VMRl9IX18KKworI2luY2x1ZGUgPHhlbi90eXBlcy5oPgorI2luY2x1ZGUgPHhlbi9lbGZz dHJ1Y3RzLmg+CisKKy8qIFRoZSBmb2xsb3dpbmcgZGVzY3JpYmVzIGFuIEVsZiBmaWxlIGFzIGNv bnN1bWVkIGJ5IHhTcGxpY2UuICovCitzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjIHsKKyAgICBjb25z dCBFbGZfU2hkciAqc2VjOyAgICAgICAgICAgICAgICAgLyogSG9va2VkIHVwIGluIGVsZl9yZXNv bHZlX3NlY3Rpb25zLiovCisgICAgY29uc3QgY2hhciAqbmFtZTsgICAgICAgICAgICAgICAgICAg IC8qIEh1bWFuIHJlYWRhYmxlIG5hbWUgaG9va2VkIGluCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVsZl9yZXNvbHZlX3NlY3Rpb25fbmFtZXMuICovCisgICAg Y29uc3Qgdm9pZCAqZGF0YTsgICAgICAgICAgICAgICAgICAgIC8qIFBvaW50ZXIgdG8gdGhlIHNl Y3Rpb24gKGRvbmUgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZWxmX3Jlc29sdmVfc2VjdGlvbnMpLiAqLworfTsKKworc3RydWN0IHhzcGxpY2VfZWxmX3N5 bSB7CisgICAgY29uc3QgRWxmX1N5bSAqc3ltOworICAgIGNvbnN0IGNoYXIgKm5hbWU7Cit9Owor CitzdHJ1Y3QgeHNwbGljZV9lbGYgeworICAgIGNvbnN0IGNoYXIgKm5hbWU7ICAgICAgICAgICAg ICAgICAgICAvKiBQb2ludGVyIHRvIHBheWxvYWQtPm5hbWUuICovCisgICAgc2l6ZV90IGxlbjsg ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIExlbmd0aCBvZiB0aGUgRUxGIGZpbGUuICovCisg ICAgY29uc3QgRWxmX0VoZHIgKmhkcjsgICAgICAgICAgICAgICAgIC8qIEVMRiBmaWxlLiAqLwor ICAgIHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnNlYzsgICAgICAgICAvKiBBcnJheSBvZiBzZWN0 aW9ucywgYWxsb2NhdGVkIGJ5IHVzLiAqLworICAgIHN0cnVjdCB4c3BsaWNlX2VsZl9zeW0gKnN5 bTsgICAgICAgICAvKiBBcnJheSBvZiBzeW1ib2xzICwgYWxsb2NhdGVkIGJ5IHVzLiAqLworICAg IHVuc2lnbmVkIGludCBuc3ltOworICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnN5 bXRhYjsvKiBQb2ludGVyIHRvIC5zeW10YWIgc2VjdGlvbiAtIGFrYSB0byBzZWNbeF0uICovCisg ICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqc3RydGFiOy8qIFBvaW50ZXIgdG8gLnN0 cnRhYiBzZWN0aW9uIC0gYWthIHRvIHNlY1t5XS4gKi8KK307CisKK2NvbnN0IHN0cnVjdCB4c3Bs aWNlX2VsZl9zZWMgKnhzcGxpY2VfZWxmX3NlY19ieV9uYW1lKGNvbnN0IHN0cnVjdCB4c3BsaWNl X2VsZiAqZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgY2hhciAqbmFtZSk7CitpbnQgeHNwbGljZV9lbGZfbG9hZChzdHJ1Y3Qg eHNwbGljZV9lbGYgKmVsZiwgY29uc3Qgdm9pZCAqZGF0YSk7Cit2b2lkIHhzcGxpY2VfZWxmX2Zy ZWUoc3RydWN0IHhzcGxpY2VfZWxmICplbGYpOworCisjZW5kaWYgLyogX19YRU5fWFNQTElDRV9F TEZfSF9fICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZp bGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0Cisg KiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwotLSAKMi41LjAKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1k ZXZlbAo=