From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v5 10/28] xsplice: Implement payload loading Date: Thu, 24 Mar 2016 16:00:22 -0400 Message-ID: <1458849640-22588-11-git-send-email-konrad.wilk@oracle.com> References: <1458849640-22588-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.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ajBRX-0007OE-Mv for xen-devel@lists.xenproject.org; Thu, 24 Mar 2016 20:01:19 +0000 In-Reply-To: <1458849640-22588-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: xen-devel@lists.xenproject.org, ross.lagerwall@citrix.com, konrad@kernel.org, andrew.cooper3@citrix.com, mpohlack@amazon.de, sasha.levin@oracle.com Cc: Keir Fraser , Julien Grall , Stefano Stabellini , Jan Beulich , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org RnJvbTogUm9zcyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5jb20+CgpBZGQgc3Vw cG9ydCBmb3IgbG9hZGluZyB4c3BsaWNlIHBheWxvYWRzLiBUaGlzIGlzIHNvbWV3aGF0IHNpbWls YXIgdG8KdGhlIExpbnV4IGtlcm5lbCBtb2R1bGUgbG9hZGVyLCBpbXBsZW1lbnRpbmcgdGhlIGZv bGxvd2luZyBzdGVwczoKLSBWZXJpZnkgdGhlIGVsZiBmaWxlLgotIFBhcnNlIHRoZSBlbGYgZmls ZS4KLSBBbGxvY2F0ZSBhIHJlZ2lvbiBvZiBtZW1vcnkgbWFwcGVkIHdpdGhpbiBhIGZyZWUgYXJl YSBvZgogIFt4ZW5fdmlydF9lbmQsIFhFTl9WSVJUX0VORF0uCi0gQ29weSBhbGxvY2F0ZWQgc2Vj dGlvbnMgaW50byB0aGUgbmV3IHJlZ2lvbi4gU3BsaXQgdGhlbSBpbiB0aHJlZQogIHJlZ2lvbnMg LSAudGV4dCwgLmRhdGEsIGFuZCAucm9kYXRhLiBNVVNUIGhhdmUgYXQgbGVhc3QgLnRleHQuCi0g UmVzb2x2ZSBzZWN0aW9uIHN5bWJvbHMuIEFsbCBvdGhlciBzeW1ib2xzIG11c3QgYmUgYWJzb2x1 dGUgYWRkcmVzc2VzLgogIChOb3RlIHRoYXQgcGF0Y2ggdGl0bGVkICJ4c3BsaWNlLHN5bWJvbHM6 IEltcGxlbWVudCBzeW1ib2wgbmFtZSByZXNvbHV0aW9uCiAgIG9uIGFkZHJlc3MiIGltcGxlbWVu dHMgdGhhdCkKLSBQZXJmb3JtIHJlbG9jYXRpb25zLgotIFNlY3VyZSB0aGUgdGhlIHJlZ2lvbnMg KC50ZXh0LC5kYXRhLC5yb2RhdGEpIHdpdGggcHJvcGVyIHBlcm1pc3Npb25zLgoKV2UgY2FwaXRh bGl6ZSBvbiB0aGUgdm1hbGxvYyBjYWxsYmFjayBBUEkgKHNlZSBwYXRjaCB0aXRsZWQ6CiJ2bWFw OiBBZGQgdm1hbGxvY19jYiBhbmQgdmZyZWVfY2IiKSB0byBhbGxvY2F0ZSBhIHJlZ2lvbgpvZiBt ZW1vcnkgd2l0aGluIHRoZSBbeGVuX3ZpcnRfZW5kLCBYRU5fVklSVF9FTkRdIGZvciB0aGUgY29k ZS4KClNpZ25lZC1vZmYtYnk6IFJvc3MgTGFnZXJ3YWxsIDxyb3NzLmxhZ2Vyd2FsbEBjaXRyaXgu Y29tPgpTaWduZWQtb2ZmLWJ5OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9y YWNsZS5jb20+CgotLS0KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3RlZmFuby5zdGFiZWxsaW5p QGNpdHJpeC5jb20+CkNjOiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgpDYzog S2VpciBGcmFzZXIgPGtlaXJAeGVuLm9yZz4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNl LmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Cgp2Mjog LSBDaGFuZ2UgdGhlICd4c3BsaWNlX3BhdGNoX2Z1bmMnIHN0cnVjdHVyZSBsYXlvdXQvc2l6ZS4K ICAgIC0gQWRkIG1vcmUgZXJyb3IgY2hlY2tpbmcuIEZpeCBtZW1vcnkgbGVhay4KICAgIC0gTW92 ZSBlbGZfcmVzb2x2ZSBhbmQgZWxmX3BlcmZvcm0gcmVsb2NzIGluIGVsZiBmaWxlLgogICAgLSBQ cmludCB0aGUgcGF5bG9hZCBhZGRyZXNzIGFuZCBwYWdlcyBpbiBrZXloYW5kbGVyLgp2MzoKICAg IC0gTWFrZSBpdCBidWlsZCB1bmRlciBBUk0KICAgIC0gQnVpbGQgaXQgd2l0aG91dCB1c2luZyB0 aGUgcmV0dXJuXyBtYWNyby4KICAgIC0gQWRkIGZpeGVzIGZyb20gUm9zcy4KICAgIC0gQWRkIHRo ZSBfcmV0dXJuIG1hY3JvIGJhY2sgLSBidXQgb25seSB1c2UgaXQgZHVyaW5nIGRlYnVnIGJ1aWxk cy4KICAgIC0gUmVtb3ZlIHRoZSBtYWNybywgcHJlZml4IGFyY2hfIG9uIGFyY2ggc3BlY2lmaWMg Y2FsbHMuCnY0OgogICAgLSBNb3ZlIGFsbG9jX3BheWxvYWQgdG8gYXJjaCBzcGVjaWZpYyBmaWxl LgogICAgLSBVc2Ugdm9pZCogaW5zdGVhZCBvZiB1aW50OF90LCB1c2UgY29uc3QKICAgIC0gQWRk IGNvcHlyaWdodHMKICAgIC0gVW5yb2xsIHRoZSB2bWFwIGNvZGUgdG8gYWRkIEFTU0VSVC4gQ2hh bmdlIHdoaWxlIHRvIG5vdCBpbmN1cgogICAgICBwb3RlbnRpYWwgbG9uZyBlcnJvciBsb29wCiAg IC0gVXNlIHZtYWxsb2MvdmZyZWUgY2IgQVBJcwogICAtIFNlY3VyZSAudGV4dCBwYWdlcyB0byBi ZSBSWCBpbnN0ZWFkIG9mIFJXWC4KdjU6CiAgLSBGaXggYWxsb2NhdGlvbiBvZiB2aXJ0dWFsIGFk ZHJlc3NlcyBvbmx5IGFsbG93aW5nIG9uZSBwYWdlIHRvIGJlIGFsbG9jYXRlZC4KICAtIENyZWF0 ZSAudGV4dCwgLmRhdGEsIGFuZCAucm9kYXRhIHJlZ2lvbnMgd2l0aCBkaWZmZXJlbnQgcGVybWlz c2lvbnMuCiAgLSBNYWtlIHRoZSBmaW5kX3NwYWNlX3Qgbm90IGEgdHlwZWRlZiB0byBwb2ludGVy IHRvIGEgZnVuY3Rpb24uCiAgLSBBbGxvY2F0ZSBtZW1vcnkgaW4gaGVyZS4KLS0tCi0tLQogeGVu L2FyY2gvYXJtL01ha2VmaWxlICAgICAgICAgICAgIHwgICAxICsKIHhlbi9hcmNoL2FybS94c3Bs aWNlLmMgICAgICAgICAgICB8ICA1NSArKysrKysrKwogeGVuL2FyY2gveDg2L01ha2VmaWxlICAg ICAgICAgICAgIHwgICAxICsKIHhlbi9hcmNoL3g4Ni9zZXR1cC5jICAgICAgICAgICAgICB8ICAg NyArCiB4ZW4vYXJjaC94ODYveHNwbGljZS5jICAgICAgICAgICAgfCAyNTggKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2NvbW1vbi94c3BsaWNlLmMgICAgICAgICAg ICAgIHwgMjYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiB4ZW4vY29t bW9uL3hzcGxpY2VfZWxmLmMgICAgICAgICAgfCAgOTEgKysrKysrKysrKysrKwogeGVuL2luY2x1 ZGUvYXNtLXg4Ni94ODZfNjQvcGFnZS5oIHwgICAyICsKIHhlbi9pbmNsdWRlL3hlbi94c3BsaWNl LmggICAgICAgICB8ICA0NiArKysrKysrCiB4ZW4vaW5jbHVkZS94ZW4veHNwbGljZV9lbGYuaCAg ICAgfCAgIDUgKwogMTAgZmlsZXMgY2hhbmdlZCwgNzI1IGluc2VydGlvbnMoKyksIDMgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJtL3hzcGxpY2UuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni94c3BsaWNlLmMKCmRpZmYgLS1naXQgYS94ZW4vYXJj aC9hcm0vTWFrZWZpbGUgYi94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKaW5kZXggMDMyOGI1MC4uZWFl NWNiMyAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL2Fy bS9NYWtlZmlsZQpAQCAtNDAsNiArNDAsNyBAQCBvYmoteSArPSBkZXZpY2Uubwogb2JqLXkgKz0g ZGVjb2RlLm8KIG9iai15ICs9IHByb2Nlc3Nvci5vCiBvYmoteSArPSBzbWMubworb2JqLSQoQ09O RklHX1hTUExJQ0UpICs9IHhzcGxpY2UubwogCiAjb2JqLWJpbi15ICs9IC4uLi5vCiAKZGlmZiAt LWdpdCBhL3hlbi9hcmNoL2FybS94c3BsaWNlLmMgYi94ZW4vYXJjaC9hcm0veHNwbGljZS5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5YzQ5YWIKLS0tIC9kZXYvbnVsbAor KysgYi94ZW4vYXJjaC9hcm0veHNwbGljZS5jCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiAgQ29w eXJpZ2h0IChDKSAyMDE2IENpdHJpeCBTeXN0ZW1zIFImRCBMdGQuCisgKi8KKyNpbmNsdWRlIDx4 ZW4vbGliLmg+CisjaW5jbHVkZSA8eGVuL2Vycm5vLmg+CisjaW5jbHVkZSA8eGVuL3hzcGxpY2Vf ZWxmLmg+CisjaW5jbHVkZSA8eGVuL3hzcGxpY2UuaD4KKworaW50IGFyY2hfeHNwbGljZV92ZXJp ZnlfZWxmKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLCB2b2lkICpkYXRhKQoreworICAg IHJldHVybiAtRU5PU1lTOworfQorCitpbnQgYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsKHN0cnVj dCB4c3BsaWNlX2VsZiAqZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpyZWxhKQoreworICAgIHJldHVybiAtRU5P U1lTOworfQorCitpbnQgYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsYShzdHJ1Y3QgeHNwbGljZV9l bGYgKmVsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4c3Bs aWNlX2VsZl9zZWMgKmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpyZWxhKQoreworICAgIHJldHVybiAtRU5PU1lTOworfQor Cit2b2lkICphcmNoX3hzcGxpY2VfYWxsb2NfcGF5bG9hZCh1bnNpZ25lZCBpbnQgcGFnZXMsIG1m bl90ICoqbWZuKQoreworICAgIHJldHVybiBOVUxMOworfQorCitpbnQgYXJjaF94c3BsaWNlX3Nl Y3VyZSh2b2lkICp2YSwgdW5zaWduZWQgaW50IHBhZ2VzLCBlbnVtIHZhX3R5cGUgdHlwZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1mbl90ICptZm4pCit7CisgICAgcmV0dXJuIC1F Tk9TWVM7Cit9CisKK3ZvaWQgYXJjaF94c3BsaWNlX3JlZ2lzdGVyX2ZpbmRfc3BhY2UoZmluZF9z cGFjZV90ICpjYikKK3sKK30KKwordm9pZCBhcmNoX3hzcGxpY2VfZnJlZV9wYXlsb2FkKHZvaWQg KnZhLCB1bnNpZ25lZCBpbnQgcGFnZXMpCit7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6 CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDog NAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAq LwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L01ha2VmaWxlIGIveGVuL2FyY2gveDg2L01ha2Vm aWxlCmluZGV4IDcyOTA2NWIuLjhhNmE3ZDUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9NYWtl ZmlsZQorKysgYi94ZW4vYXJjaC94ODYvTWFrZWZpbGUKQEAgLTY0LDYgKzY0LDcgQEAgb2JqLXkg Kz0gdm1fZXZlbnQubwogb2JqLXkgKz0geHN0YXRlLm8KIAogb2JqLSQoY3Jhc2hfZGVidWcpICs9 IGdkYnN0dWIubworb2JqLSQoQ09ORklHX1hTUExJQ0UpICs9IHhzcGxpY2UubwogCiB4ODZfZW11 bGF0ZS5vOiB4ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jIHg4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRl LmgKIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3NldHVwLmMgYi94ZW4vYXJjaC94ODYvc2V0 dXAuYwppbmRleCBjOGE1YWRiLi5iMzA2ZGE4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvc2V0 dXAuYworKysgYi94ZW4vYXJjaC94ODYvc2V0dXAuYwpAQCAtMTAwLDYgKzEwMCw5IEBAIHVuc2ln bmVkIGxvbmcgX19yZWFkX21vc3RseSB4ZW5fcGh5c19zdGFydDsKIAogdW5zaWduZWQgbG9uZyBf X3JlYWRfbW9zdGx5IHhlbl92aXJ0X2VuZDsKIAordW5zaWduZWQgbG9uZyBfX3JlYWRfbW9zdGx5 IGF2YWlsX3ZpcnRfc3RhcnQ7Cit1bnNpZ25lZCBsb25nIF9fcmVhZF9tb3N0bHkgYXZhaWxfdmly dF9lbmQ7CisKIERFRklORV9QRVJfQ1BVKHN0cnVjdCB0c3Nfc3RydWN0LCBpbml0X3Rzcyk7CiAK IGNoYXIgX19zZWN0aW9uKCIuYnNzLnN0YWNrX2FsaWduZWQiKSBjcHUwX3N0YWNrW1NUQUNLX1NJ WkVdOwpAQCAtMTIxMSw2ICsxMjE0LDEwIEBAIHZvaWQgX19pbml0IG5vcmV0dXJuIF9fc3RhcnRf eGVuKHVuc2lnbmVkIGxvbmcgbWJpX3ApCiAgICAgICAgICAgICAgICAgICAgfigoMVVMIDw8IEwy X1BBR0VUQUJMRV9TSElGVCkgLSAxKTsKICAgICBkZXN0cm95X3hlbl9tYXBwaW5ncyh4ZW5fdmly dF9lbmQsIFhFTl9WSVJUX1NUQVJUICsgQk9PVFNUUkFQX01BUF9CQVNFKTsKIAorICAgIGF2YWls X3ZpcnRfc3RhcnQgPSB4ZW5fdmlydF9lbmQ7CisgICAgYXZhaWxfdmlydF9lbmQgPSBYRU5fVklS VF9FTkQgLSBOUl9DUFVTICogUEFHRV9TSVpFOworICAgIEJVR19PTihhdmFpbF92aXJ0X2VuZCA8 PSBhdmFpbF92aXJ0X3N0YXJ0KTsKKwogICAgIC8qCiAgICAgICogSWYgbm90IHVzaW5nIDJNIG1h cHBpbmdzIHRvIGdhaW4gc3VpdGFibGUgcGFnZXRhYmxlIHBlcm1pc3Npb25zCiAgICAgICogZGly ZWN0bHkgZnJvbSB0aGUgcmVsb2NhdGlvbiBhYm92ZSwgcmVtYXAgdGhlIGNvZGUvZGF0YQpkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L3hzcGxpY2UuYyBiL3hlbi9hcmNoL3g4Ni94c3BsaWNlLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE0OTU0MAotLS0gL2Rldi9udWxs CisrKyBiL3hlbi9hcmNoL3g4Ni94c3BsaWNlLmMKQEAgLTAsMCArMSwyNTggQEAKKy8qCisgKiBD b3B5cmlnaHQgKEMpIDIwMTYgQ2l0cml4IFN5c3RlbXMgUiZEIEx0ZC4KKyAqLworCisjaW5jbHVk ZSA8eGVuL2Vycm5vLmg+CisjaW5jbHVkZSA8eGVuL2xpYi5oPgorI2luY2x1ZGUgPHhlbi9tbS5o PgorI2luY2x1ZGUgPHhlbi9wZm4uaD4KKyNpbmNsdWRlIDx4ZW4vdm1hcC5oPgorI2luY2x1ZGUg PHhlbi94c3BsaWNlX2VsZi5oPgorI2luY2x1ZGUgPHhlbi94c3BsaWNlLmg+CisKK2ludCBhcmNo X3hzcGxpY2VfdmVyaWZ5X2VsZihjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwgdm9pZCAq ZGF0YSkKK3sKKworICAgIEVsZl9FaGRyICpoZHIgPSBkYXRhOworCisgICAgaWYgKCAhSVNfRUxG KCpoZHIpICkKKyAgICB7CisgICAgICAgIHByaW50ayhYRU5MT0dfRVJSICIlcyVzOiBOb3QgYW4g RUxGIHBheWxvYWQhXG4iLCBYU1BMSUNFLCBlbGYtPm5hbWUpOworICAgICAgICByZXR1cm4gLUVJ TlZBTDsKKyAgICB9CisKKyAgICBpZiAoIGVsZi0+bGVuIDwgKHNpemVvZiAqaGRyKSB8fAorICAg ICAgICAgIUlTX0VMRigqaGRyKSB8fAorICAgICAgICAgaGRyLT5lX2lkZW50W0VJX0NMQVNTXSAh PSBFTEZDTEFTUzY0IHx8CisgICAgICAgICBoZHItPmVfaWRlbnRbRUlfREFUQV0gIT0gRUxGREFU QTJMU0IgfHwKKyAgICAgICAgIGhkci0+ZV9pZGVudFtFSV9PU0FCSV0gIT0gRUxGT1NBQklfU1lT ViB8fAorICAgICAgICAgaGRyLT5lX21hY2hpbmUgIT0gRU1fWDg2XzY0IHx8CisgICAgICAgICBo ZHItPmVfdHlwZSAhPSBFVF9SRUwgfHwKKyAgICAgICAgIGhkci0+ZV9waG51bSAhPSAwICkKKyAg ICB7CisgICAgICAgIHByaW50ayhYRU5MT0dfRVJSICIlcyVzOiBJbnZhbGlkIEVMRiBwYXlsb2Fk IVxuIiwgWFNQTElDRSwgZWxmLT5uYW1lKTsKKyAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwor ICAgIH0KKworICAgIHJldHVybiAwOworfQorCitpbnQgYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVs KHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpyZWxhKQoreworICAgIGRwcmlu dGsoWEVOTE9HX0VSUiwgIiVzJXM6IFNIUl9SRUwgcmVsb2NhdGlvbiB1bnN1cHBvcnRlZFxuIiwK KyAgICAgICAgICAgIFhTUExJQ0UsIGVsZi0+bmFtZSk7CisgICAgcmV0dXJuIC1FTk9TWVM7Cit9 CisKK2ludCBhcmNoX3hzcGxpY2VfcGVyZm9ybV9yZWxhKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxm LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxm X3NlYyAqYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4 c3BsaWNlX2VsZl9zZWMgKnJlbGEpCit7CisgICAgRWxmX1JlbEEgKnI7CisgICAgdW5zaWduZWQg aW50IHN5bW5keCwgaTsKKyAgICB1aW50NjRfdCB2YWw7CisgICAgdWludDhfdCAqZGVzdDsKKwor ICAgIGlmICggIXJlbGEtPnNlYy0+c2hfZW50c2l6ZSB8fCAhcmVsYS0+c2VjLT5zaF9zaXplIHx8 CisgICAgICAgICByZWxhLT5zZWMtPnNoX2VudHNpemUgIT0gc2l6ZW9mKEVsZl9SZWxBKSApCisg ICAgeworICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgIiVzJXM6IFNlY3Rpb24gcmVsYXRp dmUgaGVhZGVyIGlzIGNvcnJ1cHRlZCFcbiIsCisgICAgICAgICAgICAgICAgWFNQTElDRSwgZWxm LT5uYW1lKTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgZm9yICggaSA9 IDA7IGkgPCAocmVsYS0+c2VjLT5zaF9zaXplIC8gcmVsYS0+c2VjLT5zaF9lbnRzaXplKTsgaSsr ICkKKyAgICB7CisgICAgICAgIHIgPSAoRWxmX1JlbEEgKikocmVsYS0+ZGF0YSArIGkgKiByZWxh LT5zZWMtPnNoX2VudHNpemUpOworICAgICAgICBpZiAoICh1bnNpZ25lZCBsb25nKXIgPiAodW5z aWduZWQgbG9uZykoZWxmLT5oZHIgKyBlbGYtPmxlbikgKQorICAgICAgICB7CisgICAgICAgICAg ICBkcHJpbnRrKFhFTkxPR19ERUJVRywgIiVzJXM6IFJlbGF0aXZlIGVudHJ5ICV1IGluICVzIGlz IHBhc3QgZW5kIVxuIiwKKyAgICAgICAgICAgICAgICAgICAgWFNQTElDRSwgZWxmLT5uYW1lLCBp LCByZWxhLT5uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisK KyAgICAgICAgc3ltbmR4ID0gRUxGNjRfUl9TWU0oci0+cl9pbmZvKTsKKyAgICAgICAgaWYgKCBz eW1uZHggPiBlbGYtPm5zeW0gKQorICAgICAgICB7CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxP R19ERUJVRywgIiVzJXM6IFJlbGF0aXZlIHN5bWJvbCB3YW50cyBzeW1ib2xAJXUgd2hpY2ggaXMg cGFzdCBlbmQhXG4iLAorICAgICAgICAgICAgICAgICAgICBYU1BMSUNFLCBlbGYtPm5hbWUsIHN5 bW5keCk7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorCisgICAgICAg IGRlc3QgPSBiYXNlLT5sb2FkX2FkZHIgKyByLT5yX29mZnNldDsKKyAgICAgICAgdmFsID0gci0+ cl9hZGRlbmQgKyBlbGYtPnN5bVtzeW1uZHhdLnN5bS0+c3RfdmFsdWU7CisKKyAgICAgICAgc3dp dGNoICggRUxGNjRfUl9UWVBFKHItPnJfaW5mbykgKQorICAgICAgICB7CisgICAgICAgICAgICBj YXNlIFJfWDg2XzY0X05PTkU6CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg IGNhc2UgUl9YODZfNjRfNjQ6CisgICAgICAgICAgICAgICAgKih1aW50NjRfdCAqKWRlc3QgPSB2 YWw7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgUl9YODZfNjRf UExUMzI6CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBYZW4gdXNlcyAt ZnBpYyB3aGljaCBub3JtYWxseSB1c2VzIFBMVCByZWxvY2F0aW9ucworICAgICAgICAgICAgICAg ICAqIGV4Y2VwdCB0aGF0IGl0IHNldHMgdmlzaWJpbGl0eSB0byBoaWRkZW4gd2hpY2ggbWVhbnMK KyAgICAgICAgICAgICAgICAgKiB0aGF0IHRoZXkgYXJlIG5vdCB1c2VkLiAgSG93ZXZlciwgd2hl biBnY2MgY2Fubm90CisgICAgICAgICAgICAgICAgICogaW5saW5lIG1lbWNweSBpdCBlbWl0cyBt ZW1jcHkgd2l0aCBkZWZhdWx0IHZpc2liaWxpdHkKKyAgICAgICAgICAgICAgICAgKiB3aGljaCB0 aGVuIGNyZWF0ZXMgYSBQTFQgcmVsb2NhdGlvbi4gIEl0IGNhbiBqdXN0IGJlCisgICAgICAgICAg ICAgICAgICogdHJlYXRlZCB0aGUgc2FtZSBhcyBSX1g4Nl82NF9QQzMyLgorICAgICAgICAgICAg ICAgICAqLworICAgICAgICAgICAgICAgIC8qIEZhbGwgdGhyb3VnaCAqLworCisgICAgICAgICAg ICBjYXNlIFJfWDg2XzY0X1BDMzI6CisgICAgICAgICAgICAgICAgKih1aW50MzJfdCAqKWRlc3Qg PSB2YWwgLSAodWludDY0X3QpZGVzdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAiJXMlczog VW5oYW5kbGVkIHJlbG9jYXRpb24gJWx1XG4iLAorICAgICAgICAgICAgICAgICAgICAgICBYU1BM SUNFLCBlbGYtPm5hbWUsIEVMRjY0X1JfVFlQRShyLT5yX2luZm8pKTsKKyAgICAgICAgICAgICAg ICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfQor CitzdGF0aWMgZmluZF9zcGFjZV90ICpmaW5kX3NwYWNlX2ZuYyA9IE5VTEw7CisKK3ZvaWQgYXJj aF94c3BsaWNlX3JlZ2lzdGVyX2ZpbmRfc3BhY2UoZmluZF9zcGFjZV90ICpjYikKK3sKKyAgICBB U1NFUlQoIWZpbmRfc3BhY2VfZm5jKTsKKworICAgIGZpbmRfc3BhY2VfZm5jID0gY2I7Cit9CisK K3N0YXRpYyB2b2lkKiB4c3BsaWNlX21hcF9yd3goY29uc3QgbWZuX3QgKm1mbiwgdW5zaWduZWQg aW50IHBhZ2VzKQoreworICAgIHVuc2lnbmVkIGxvbmcgY3VyOworICAgIHVuc2lnbmVkIGxvbmcg c3RhcnQsIGVuZDsKKworICAgIHN0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpYXZhaWxfdmlydF9zdGFy dDsKKyAgICBlbmQgPSBzdGFydCArIHBhZ2VzICogUEFHRV9TSVpFOworCisgICAgQVNTRVJUKGZp bmRfc3BhY2VfZm5jKTsKKworICAgIGlmICggZmluZF9zcGFjZV9mbmMocGFnZXMsICZzdGFydCwg JmVuZCkgKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICggZW5kID49IGF2YWlsX3Zp cnRfZW5kICkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmb3IgKCBjdXIgPSBzdGFydDsg cGFnZXMtLTsgKyttZm4sIGN1ciArPSBQQUdFX1NJWkUgKQorICAgIHsKKyAgICAgICAgLyoKKyAg ICAgICAgICogV2Ugd291bGQgbGlrZSB0byB0byBSWCwgYnV0IHdlIG5lZWQgdG8gY29weSBkYXRh IGluIGl0IGZpcnN0LgorICAgICAgICAgKiBTZWUgYXJjaF94c3BsaWNlX3NlY3VyZSBmb3IgaG93 IHdlIGxvY2tkb3duLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCBtYXBfcGFnZXNfdG9feGVu KGN1ciwgbWZuX3goKm1mbiksIDEsIFBBR0VfSFlQRVJWSVNPUl9SV1gpICkKKyAgICAgICAgewor ICAgICAgICAgICAgaWYgKCBjdXIgIT0gc3RhcnQgKQorICAgICAgICAgICAgICAgIGRlc3Ryb3lf eGVuX21hcHBpbmdzKHN0YXJ0LCBjdXIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAg ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gKHZvaWQqKXN0YXJ0OworfQorCisvKgorICogVGhl IGZ1bmN0aW9uIHByZXBhcmVzIGFuIHhTcGxpY2UgcGF5bG9hZCBieSBhbGxvY2F0aW5nIHNwYWNl IHdoaWNoCisgKiB0aGVuIGNhbiBiZSB1c2VkIGZvciBsb2FkaW5nIHRoZSBhbGxvY2F0ZWQgc2Vj dGlvbnMsIHJlc29sdmluZyBzeW1ib2xzLAorICogcGVyZm9ybWluZyByZWxvY2F0aW9ucywgZXRj LgorICovCit2b2lkICphcmNoX3hzcGxpY2VfYWxsb2NfcGF5bG9hZCh1bnNpZ25lZCBpbnQgcGFn ZXMsIG1mbl90ICoqbWZuKQoreworICAgIHVuc2lnbmVkIGludCBpOworICAgIHZvaWQgKnA7CisK KyAgICBBU1NFUlQocGFnZXMpOworICAgIEFTU0VSVChtZm4gJiYgISptZm4pOworCisgICAgKm1m biA9IE5VTEw7CisgICAgLyoKKyAgICAgKiBXZSBsZXQgdGhlIHZtYWxsb2MgYWxsb2NhdGUgdGhl IHBhZ2VzIHdlIG5lZWQsIGFuZCB1c2UKKyAgICAgKiBvdXIgY2FsbGJhY2suIFRoZSBjYWxsYmFj ayBtdXN0IHNldCB0aGUgcGFnZXMgVyBvdGhlcndpc2Ugd2UgY2FuJ3QKKyAgICAgKiBwdXQgYW55 dGhpbmcgaW4gdGhlbS4KKyAgICAgKi8KKyAgICBwID0gdm1hbGxvY19jYihwYWdlcyAqIFBBR0Vf U0laRSwgeHNwbGljZV9tYXBfcnd4LCBtZm4pOworICAgIFdBUk5fT04oIXApOworICAgIGlmICgg IXAgKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgcGFnZXM7 IGkrKyApCisgICAgICAgIGNsZWFyX3BhZ2UocCArIChpICogUEFHRV9TSVpFKSApOworCisgICAg LyogTm90ZSB0aGF0IHdlIGRvIG5vdCBmcmVlIG1mbi4gVGhlIGNhbGxlciBpcyByZXNwb25zaWJs ZSBmb3IgdGhhdC4gKi8KKyAgICByZXR1cm4gcDsKK30KKworc3RhdGljIHZvaWQgYXJjaF94c3Bs aWNlX3ZmcmVlX2NiKHZvaWQgKnZhLCB1bnNpZ25lZCBpbnQgcGFnZXMpCit7CisgICAgdW5zaWdu ZWQgbG9uZyBhZGRyID0gKHVuc2lnbmVkIGxvbmcpdmE7CisKKyAgICBkZXN0cm95X3hlbl9tYXBw aW5ncyhhZGRyLCBhZGRyICsgcGFnZXMgKiBQQUdFX1NJWkUpOworfQorCisvKgorICogT25jZSB0 aGUgcmVzb2x2aW5nIHN5bWJvbHMsIHBlcmZvcm1pbmcgcmVsb2NhdGlvbnMsIGV0YyBpcyBjb21w bGV0ZQorICogd2Ugc2VjdXJlIHRoZSBtZW1vcnkgYnkgcHV0dGluZyBpbiB0aGUgcHJvcGVyIHBh Z2UgdGFibGUgYXR0cmlidXRlcworICogZm9yIHRoZSBkZXNpcmVkIHR5cGUuCisgKi8KK2ludCBh cmNoX3hzcGxpY2Vfc2VjdXJlKHZvaWQgKnZhLCB1bnNpZ25lZCBpbnQgcGFnZXMsIGVudW0gdmFf dHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWZuX3QgKm1mbikKK3sK KyAgICB1bnNpZ25lZCBsb25nIGN1cjsKKyAgICB1bnNpZ25lZCBsb25nIHN0YXJ0ID0gKHVuc2ln bmVkIGxvbmcpdmE7CisgICAgaW50IGZsYWc7CisKKyAgICBBU1NFUlQodmEpOworICAgIEFTU0VS VChwYWdlcyk7CisKKyAgICBpZiAoIHR5cGUgPT0gWFNQTElDRV9WQV9SWCApCisgICAgICAgIGZs YWcgPSBQQUdFX0hZUEVSVklTT1JfUlg7CisgICAgZWxzZSBpZiAoIHR5cGUgPT0gWFNQTElDRV9W QV9SVyApCisgICAgICAgIGZsYWcgPSBQQUdFX0hZUEVSVklTT1JfUlc7CisgICAgZWxzZQorICAg ICAgICBmbGFnID0gUEFHRV9IWVBFUlZJU09SX1JPOworCisgICAgLyoKKyAgICAgKiBXZSBjb3Vs ZCB3YWxrIHRoZSBwYWdldGFibGUgYW5kIGRvIHRoZSBwYWdldGFibGUgbWFuaXB1bGF0aW9ucwor ICAgICAqIChzdHJpcCB0aGUgX1BBR0VfUlcpLCB3aGljaCB3b3VsZCBtZWFuIGFsc28gbm90IG5l ZWRpbmcgdGhlIG1mbgorICAgICAqIGFycmF5LCBidXQgdGhlcmUgYXJlIG5vIGdlbmVyaWMgY29k ZSBmb3IgdGhpcyB5ZXQgKFRPRE8pLgorICAgICAqCisgICAgICogRm9yIHJpZ2h0IG5vdyB0ZWFy IGRvd24gdGhlIHBhZ2V0YWJsZXMgYW5kIHJlY3JlYXRlIHRoZW0uCisgICAgICovCisgICAgYXJj aF94c3BsaWNlX3ZmcmVlX2NiKHZhLCBwYWdlcyk7CisKKyAgICBmb3IgKCBjdXIgPSBzdGFydDsg cGFnZXMtLTsgKyttZm4sIGN1ciArPSBQQUdFX1NJWkUgKQorICAgIHsKKyAgICAgICAgaWYgKCBt YXBfcGFnZXNfdG9feGVuKGN1ciwgbWZuX3goKm1mbiksIDEsIGZsYWcpICkKKyAgICAgICAgewor ICAgICAgICAgICAgaWYgKCBjdXIgIT0gc3RhcnQgKQorICAgICAgICAgICAgICAgIGRlc3Ryb3lf eGVuX21hcHBpbmdzKHN0YXJ0LCBjdXIpOworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cisg ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBhcmNoX3hzcGxpY2Vf ZnJlZV9wYXlsb2FkKHZvaWQgKnZhLCB1bnNpZ25lZCBpbnQgcGFnZXMpCit7CisgICAgdmZyZWVf Y2IodmEsIHBhZ2VzLCBhcmNoX3hzcGxpY2VfdmZyZWVfY2IpOworfQorCisvKgorICogTG9jYWwg dmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNp Yy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisg KiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9jb21tb24veHNwbGljZS5jIGIveGVuL2NvbW1v bi94c3BsaWNlLmMKaW5kZXggMDA0NzAzMi4uNGQyNDg5OCAxMDA2NDQKLS0tIGEveGVuL2NvbW1v bi94c3BsaWNlLmMKKysrIGIveGVuL2NvbW1vbi94c3BsaWNlLmMKQEAgLTEzLDYgKzEzLDcgQEAK ICNpbmNsdWRlIDx4ZW4vc21wLmg+CiAjaW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+CiAjaW5jbHVk ZSA8eGVuL3ZtYXAuaD4KKyNpbmNsdWRlIDx4ZW4veHNwbGljZV9lbGYuaD4KICNpbmNsdWRlIDx4 ZW4veHNwbGljZS5oPgogCiAjaW5jbHVkZSA8YXNtL2V2ZW50Lmg+CkBAIC0yOCw2ICsyOSwxNSBA QCBzdHJ1Y3QgcGF5bG9hZCB7CiAgICAgdWludDMyX3Qgc3RhdGU7ICAgICAgICAgICAgICAgICAg ICAgIC8qIE9uZSBvZiB0aGUgWFNQTElDRV9TVEFURV8qLiAqLwogICAgIGludDMyX3QgcmM7ICAg ICAgICAgICAgICAgICAgICAgICAgICAvKiAwIG9yIC1YRU5fRVhYLiAqLwogICAgIHN0cnVjdCBs aXN0X2hlYWQgbGlzdDsgICAgICAgICAgICAgICAvKiBMaW5rZWQgdG8gJ3BheWxvYWRfbGlzdCcu ICovCisgICAgdm9pZCAqdGV4dF9hZGRyOyAgICAgICAgICAgICAgICAgICAgIC8qIFZpcnR1YWwg YWRkcmVzcyBvZiAudGV4dC4gKi8KKyAgICBzaXplX3QgdGV4dF9zaXplOyAgICAgICAgICAgICAg ICAgICAgLyogLi4gYW5kIGl0cyBzaXplLiAqLworICAgIHZvaWQgKnJ3X2FkZHI7ICAgICAgICAg ICAgICAgICAgICAgICAvKiBWaXJ0dWFsIGFkZHJlc3Mgb2YgLmRhdGEuICovCisgICAgc2l6ZV90 IHJ3X3NpemU7ICAgICAgICAgICAgICAgICAgICAgIC8qIC4uIGFuZCBpdHMgc2l6ZSAoaWYgYW55 KS4gKi8KKyAgICB2b2lkICpyb19hZGRyOyAgICAgICAgICAgICAgICAgICAgICAgLyogVmlydHVh bCBhZGRyZXNzIG9mIC5yb2RhdGEuICovCisgICAgc2l6ZV90IHJvX3NpemU7ICAgICAgICAgICAg ICAgICAgICAgIC8qIC4uIGFuZCBpdHMgc2l6ZSAoaWYgYW55KS4gKi8KKyAgICBzaXplX3QgcGF5 bG9hZF9wYWdlczsgICAgICAgICAgICAgICAgLyogTnIgb2YgdGhlIHBhZ2VzIGZvciB0aGUgdGV4 dF9hZGRyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByd19h ZGRyLCBhbmQgcm9fYWRkciAoaWYgYW55KSAqLworICAgIG1mbl90ICptZm47ICAgICAgICAgICAg ICAgICAgICAgICAgICAvKiBBcnJheSBvZiBNRk5zIG9mIHRoZSBwYWdlcy4gKi8KICAgICBjaGFy IG5hbWVbWEVOX1hTUExJQ0VfTkFNRV9TSVpFXTsgICAgLyogTmFtZSBvZiBpdC4gKi8KIH07CiAK QEAgLTk5LDYgKzEwOSwxOTMgQEAgc3RhdGljIHN0cnVjdCBwYXlsb2FkICpmaW5kX3BheWxvYWQo Y29uc3QgeGVuX3hzcGxpY2VfbmFtZV90ICpuYW1lKQogICAgIHJldHVybiBmb3VuZDsKIH0KIAor LyoKKyAqIEZ1bmN0aW9ucyByZWxhdGVkIHRvIFhFTl9TWVNDVExfWFNQTElDRV9VUExPQUQgKHNl ZSB4c3BsaWNlX3VwbG9hZCksIGFuZAorICogZnJlZWluZyBwYXlsb2FkIChYRU5fU1lTQ1RMX1hT UExJQ0VfQUNUSU9OOlhTUExJQ0VfQUNUSU9OX1VOTE9BRCkuCisgKi8KKworc3RhdGljIHZvaWQg ZnJlZV9wYXlsb2FkX2RhdGEoc3RydWN0IHBheWxvYWQgKnBheWxvYWQpCit7CisgICAgLyogU2V0 IHRvIHplcm8gdW50aWwgIm1vdmVfcGF5bG9hZCIuICovCisgICAgaWYgKCAhcGF5bG9hZC0+dGV4 dF9hZGRyICkKKyAgICAgICAgcmV0dXJuOworCisgICAgeGZyZWUocGF5bG9hZC0+bWZuKTsKKyAg ICBwYXlsb2FkLT5tZm4gPSBOVUxMOworCisgICAgYXJjaF94c3BsaWNlX2ZyZWVfcGF5bG9hZChw YXlsb2FkLT50ZXh0X2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2Fk LT5wYXlsb2FkX3BhZ2VzKTsKKworICAgIHBheWxvYWQtPnRleHRfYWRkciA9IE5VTEw7CisgICAg cGF5bG9hZC0+cm9fYWRkciA9IE5VTEw7CisgICAgcGF5bG9hZC0+cndfYWRkciA9IE5VTEw7Cisg ICAgcGF5bG9hZC0+cGF5bG9hZF9wYWdlcyA9IDA7Cit9CisKKy8qCisqIGNhbGNfc2VjdGlvbiBj b21wdXRlcyB0aGUgc2l6ZSAodGFraW5nIGludG8gYWNjb3VudCBzZWN0aW9uIGFsaWdubWVudCku CisqCisqIEl0IGFsc28gbW9kaWZpZXMgc2hfZW50c2l6ZSB3aXRoIHRoZSBvZmZzZXQgb2YgZnJv bSB0aGUgc3RhcnQgb2YKKyogdmlydHVhbCBhZGRyZXNzIHNwYWNlLiBUaGlzIGlzIHVzZWQgaW4g bW92ZV9wYXlsb2FkIHRvIGZpZ3VyZSBvdXQgdGhlCisqIGRlc3RpbmF0aW9uIGxvY2F0aW9uLgor Ki8KK3N0YXRpYyB2b2lkIGNhbGNfc2VjdGlvbihzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzZWMs IHNpemVfdCAqc2l6ZSkKK3sKKyAgICBzaXplX3QgYWxpZ25fc2l6ZSA9IFJPVU5EVVAoKnNpemUs IHNlYy0+c2VjLT5zaF9hZGRyYWxpZ24pOworCisgICAgc2VjLT5zZWMtPnNoX2VudHNpemUgPSBh bGlnbl9zaXplOworICAgICpzaXplID0gc2VjLT5zZWMtPnNoX3NpemUgKyBhbGlnbl9zaXplOwor fQorCitzdGF0aWMgaW50IGZpbmRfaG9sZShzaXplX3QgcGFnZXMsIHVuc2lnbmVkIGxvbmcgKmhv bGVfc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpob2xlX2VuZCkK K3sKKyAgICBzdHJ1Y3QgcGF5bG9hZCAqZGF0YSwgKmRhdGEyOworCisgICAgc3Bpbl9sb2NrX3Jl Y3Vyc2l2ZSgmcGF5bG9hZF9sb2NrKTsKKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggZGF0YSwg JnBheWxvYWRfbGlzdCwgbGlzdCApCisgICAgeworICAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5 ICggZGF0YTIsICZwYXlsb2FkX2xpc3QsIGxpc3QgKQorICAgICAgICB7CisgICAgICAgICAgICB1 bnNpZ25lZCBsb25nIHN0YXJ0LCBlbmQ7CisKKyAgICAgICAgICAgIHN0YXJ0ID0gKHVuc2lnbmVk IGxvbmcpZGF0YTItPnRleHRfYWRkcjsKKyAgICAgICAgICAgIGVuZCA9IHN0YXJ0ICsgZGF0YTIt PnBheWxvYWRfcGFnZXMgKiBQQUdFX1NJWkU7CisgICAgICAgICAgICBpZiAoICpob2xlX2VuZCA+ IHN0YXJ0ICYmICpob2xlX3N0YXJ0IDwgZW5kICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAqaG9sZV9zdGFydCA9IGVuZDsKKyAgICAgICAgICAgICAgICAqaG9sZV9lbmQgPSBlbmQg KyBwYWdlcyAqIFBBR0VfU0laRTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg IH0KKyAgICAgICAgfQorICAgICAgICBpZiAoICZkYXRhMi0+bGlzdCA9PSAmcGF5bG9hZF9saXN0 ICkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBzcGluX3VubG9ja19yZWN1cnNpdmUo JnBheWxvYWRfbG9jayk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtb3ZlX3Bh eWxvYWQoc3RydWN0IHBheWxvYWQgKnBheWxvYWQsIHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQor eworICAgIHVpbnQ4X3QgKmJ1ZjsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBzaXplX3Qgc2l6 ZSA9IDA7CisKKyAgICAvKiBDb21wdXRlIHRleHQgcmVnaW9ucy4gKi8KKyAgICBmb3IgKCBpID0g MDsgaSA8IGVsZi0+aGRyLT5lX3NobnVtOyBpKysgKQorICAgIHsKKyAgICAgICAgaWYgKCAoZWxm LT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIChTSEZfQUxMT0N8U0hGX0VYRUNJTlNUUikpID09Cisg ICAgICAgICAgICAgKFNIRl9BTExPQ3xTSEZfRVhFQ0lOU1RSKSApCisgICAgICAgICAgICBjYWxj X3NlY3Rpb24oJmVsZi0+c2VjW2ldLCAmcGF5bG9hZC0+dGV4dF9zaXplKTsKKyAgICB9CisKKyAg ICAvKiBDb21wdXRlIHJ3IGRhdGEuICovCisgICAgZm9yICggaSA9IDA7IGkgPCBlbGYtPmhkci0+ ZV9zaG51bTsgaSsrICkKKyAgICB7CisgICAgICAgIGlmICggKGVsZi0+c2VjW2ldLnNlYy0+c2hf ZmxhZ3MgJiBTSEZfQUxMT0MpICYmCisgICAgICAgICAgICAgIShlbGYtPnNlY1tpXS5zZWMtPnNo X2ZsYWdzICYgU0hGX0VYRUNJTlNUUikgJiYKKyAgICAgICAgICAgICAoZWxmLT5zZWNbaV0uc2Vj LT5zaF9mbGFncyAmIFNIRl9XUklURSkgKQorICAgICAgICAgICAgY2FsY19zZWN0aW9uKCZlbGYt PnNlY1tpXSwgJnBheWxvYWQtPnJ3X3NpemUpOworICAgIH0KKworICAgIC8qIENvbXB1dGUgcm8g ZGF0YS4gKi8KKyAgICBmb3IgKCBpID0gMDsgaSA8IGVsZi0+aGRyLT5lX3NobnVtOyBpKysgKQor ICAgIHsKKyAgICAgICAgaWYgKCAoZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNIRl9BTExP QykgJiYKKyAgICAgICAgICAgICAhKGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfRVhF Q0lOU1RSKSAmJgorICAgICAgICAgICAgICEoZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNI Rl9XUklURSkgKQorICAgICAgICAgICAgY2FsY19zZWN0aW9uKCZlbGYtPnNlY1tpXSwgJnBheWxv YWQtPnJvX3NpemUpOworICAgIH0KKworICAgIC8qCisgICAgICogVG90YWwgb2YgYWxsIHRocmVl IHJlZ2lvbnMgLSBSWCwgUlcsIGFuZCBSTy4gV2UgaGF2ZSB0byBoYXZlCisgICAgICoga2VlcCB0 aGVtIGluIHNlcGVyYXRlIHBhZ2VzIHNvIHdlIFBBR0VfQUxJR04gdGhlIFJYIGFuZCBSVyB0byBo YXZlCisgICAgICogdGhlbSBvbiBzZXBlcmF0ZSBwYWdlcy4gVGhlIGxhc3Qgb25lIHdpbGwgYnkg ZGVmYXVsdCBmYWxsIG9uIGl0cworICAgICAqIG93biBwYWdlLgorICAgICAqLworICAgICBzaXpl ID0gUEFHRV9BTElHTihwYXlsb2FkLT50ZXh0X3NpemUpICsgUEFHRV9BTElHTihwYXlsb2FkLT5y d19zaXplKSArCisgICAgICAgICAgICBwYXlsb2FkLT5yb19zaXplOworCisgICAgc2l6ZSA9IFBG Tl9VUChzaXplKTsKKyAgICBidWYgPSBhcmNoX3hzcGxpY2VfYWxsb2NfcGF5bG9hZChzaXplLCAm cGF5bG9hZC0+bWZuKTsKKyAgICBpZiAoICFidWYgKSB7CisgICAgICAgIHByaW50ayhYRU5MT0df RVJSICIlcyVzOiBDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBwYXlsb2FkIVxuIiwKKyAg ICAgICAgICAgICAgIFhTUExJQ0UsIGVsZi0+bmFtZSk7CisgICAgICAgIHJldHVybiAtRU5PTUVN OworICAgIH0KKworICAgIHBheWxvYWQtPnBheWxvYWRfcGFnZXMgPSBzaXplOworICAgIHBheWxv YWQtPnRleHRfYWRkciA9IGJ1ZjsKKyAgICBwYXlsb2FkLT5yd19hZGRyID0gcGF5bG9hZC0+dGV4 dF9hZGRyICsgUEFHRV9BTElHTihwYXlsb2FkLT50ZXh0X3NpemUpOworICAgIHBheWxvYWQtPnJv X2FkZHIgPSBwYXlsb2FkLT5yd19hZGRyICsgUEFHRV9BTElHTihwYXlsb2FkLT5yd19zaXplKTsK KworICAgIGZvciAoIGkgPSAwOyBpIDwgZWxmLT5oZHItPmVfc2hudW07IGkrKyApCisgICAgewor ICAgICAgICBpZiAoIGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfQUxMT0MgKQorICAg ICAgICB7CisgICAgICAgICAgICBpZiAoIChlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hG X0VYRUNJTlNUUikgKQorICAgICAgICAgICAgICAgICBidWYgPSBwYXlsb2FkLT50ZXh0X2FkZHI7 CisgICAgICAgICAgICBlbHNlIGlmICggKGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZf V1JJVEUpICkKKyAgICAgICAgICAgICAgICBidWYgPSBwYXlsb2FkLT5yd19hZGRyOworICAgICAg ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBidWYgPSBwYXlsb2FkLT5yb19hZGRyOworCisg ICAgICAgICAgICBlbGYtPnNlY1tpXS5sb2FkX2FkZHIgPSBidWYgKyBlbGYtPnNlY1tpXS5zZWMt PnNoX2VudHNpemU7CisKKyAgICAgICAgICAgIC8qIERvbid0IGNvcHkgTk9CSVRTIC0gc3VjaCBh cyBCU1MuICovCisgICAgICAgICAgICBpZiAoIGVsZi0+c2VjW2ldLnNlYy0+c2hfdHlwZSAhPSBT SFRfTk9CSVRTICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtZW1jcHkoZWxmLT5z ZWNbaV0ubG9hZF9hZGRyLCBlbGYtPnNlY1tpXS5kYXRhLAorICAgICAgICAgICAgICAgICAgICAg ICBlbGYtPnNlY1tpXS5zZWMtPnNoX3NpemUpOworICAgICAgICAgICAgICAgIGRwcmludGsoWEVO TE9HX0RFQlVHLCAiJXMlczogTG9hZGVkICVzIGF0IDB4JXBcbiIsIFhTUExJQ0UsCisgICAgICAg ICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIGVsZi0+c2VjW2ldLm5hbWUsIGVsZi0+c2VjW2ld LmxvYWRfYWRkcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1 cm4gMDsKK30KKworc3RhdGljIGludCBzZWN1cmVfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqcGF5 bG9hZCwgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCit7CisgICAgaW50IHJjOworICAgIHVuc2ln bmVkIGludCB0ZXh0X3BhZ2VzLCByd19wYWdlcywgcm9fcGFnZXM7CisKKyAgICBBU1NFUlQocGF5 bG9hZC0+bWZuKTsKKworICAgIHRleHRfcGFnZXMgPSBQRk5fVVAocGF5bG9hZC0+dGV4dF9zaXpl KTsKKyAgICBBU1NFUlQodGV4dF9wYWdlcyk7CisKKyAgICByYyA9IGFyY2hfeHNwbGljZV9zZWN1 cmUocGF5bG9hZC0+dGV4dF9hZGRyLCB0ZXh0X3BhZ2VzLCBYU1BMSUNFX1ZBX1JYLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLT5tZm4pOworICAgIGlmICggcmMgKQorICAg ICAgICByZXR1cm4gcmM7CisKKyAgICByd19wYWdlcyA9IFBGTl9VUChwYXlsb2FkLT5yd19zaXpl KTsKKyAgICBpZiAoIHJ3X3BhZ2VzICkKKyAgICB7CisgICAgICAgIHJjID0gYXJjaF94c3BsaWNl X3NlY3VyZShwYXlsb2FkLT5yd19hZGRyLCByd19wYWdlcywgWFNQTElDRV9WQV9SVywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQtPm1mbiArIHRleHRfcGFnZXMpOwor ICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgIHJldHVybiByYzsKKyAgICB9CisKKyAgICBy b19wYWdlcyA9IFBGTl9VUChwYXlsb2FkLT5yb19zaXplKTsKKyAgICBpZiAoIHJvX3BhZ2VzICkK KyAgICB7CisgICAgICAgIHJjID0gYXJjaF94c3BsaWNlX3NlY3VyZShwYXlsb2FkLT5yb19hZGRy LCByb19wYWdlcywgWFNQTElDRV9WQV9STywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBheWxvYWQtPm1mbiArIHRleHRfcGFnZXMgKyByd19wYWdlcyk7CisgICAgfQorCisgICAg QVNTRVJUKHJvX3BhZ2VzICsgcndfcGFnZXMgKyB0ZXh0X3BhZ2VzID09IHBheWxvYWQtPnBheWxv YWRfcGFnZXMpOworCisgICAgeGZyZWUocGF5bG9hZC0+bWZuKTsKKyAgICBwYXlsb2FkLT5tZm4g PSBOVUxMOworCisgICAgcmV0dXJuIHJjOworfQorCiAvKiBXZSBNVVNUIGJlIGhvbGRpbmcgdGhl IHBheWxvYWRfbG9jayBzcGlubG9jay4gKi8KIHN0YXRpYyB2b2lkIGZyZWVfcGF5bG9hZChzdHJ1 Y3QgcGF5bG9hZCAqZGF0YSkKIHsKQEAgLTEwNiwxMiArMzAzLDU1IEBAIHN0YXRpYyB2b2lkIGZy ZWVfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqZGF0YSkKICAgICBsaXN0X2RlbCgmZGF0YS0+bGlz dCk7CiAgICAgcGF5bG9hZF9jbnQtLTsKICAgICBwYXlsb2FkX3ZlcnNpb24rKzsKKyAgICBmcmVl X3BheWxvYWRfZGF0YShkYXRhKTsKICAgICB4ZnJlZShkYXRhKTsKIH0KIAorc3RhdGljIGludCBs b2FkX3BheWxvYWRfZGF0YShzdHJ1Y3QgcGF5bG9hZCAqcGF5bG9hZCwgdm9pZCAqcmF3LCBzc2l6 ZV90IGxlbikKK3sKKyAgICBzdHJ1Y3QgeHNwbGljZV9lbGYgZWxmOworICAgIGludCByYyA9IDA7 CisKKyAgICBtZW1zZXQoJmVsZiwgMCwgc2l6ZW9mKGVsZikpOworICAgIGVsZi5uYW1lID0gcGF5 bG9hZC0+bmFtZTsKKyAgICBlbGYubGVuID0gbGVuOworCisgICAgcmMgPSBhcmNoX3hzcGxpY2Vf dmVyaWZ5X2VsZigmZWxmLCByYXcpOworICAgIGlmICggcmMgKQorICAgICAgICByZXR1cm4gcmM7 CisKKyAgICByYyA9IHhzcGxpY2VfZWxmX2xvYWQoJmVsZiwgcmF3KTsKKyAgICBpZiAoIHJjICkK KyAgICAgICAgZ290byBvdXQ7CisKKyAgICByYyA9IG1vdmVfcGF5bG9hZChwYXlsb2FkLCAmZWxm KTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICByYyA9IHhzcGxpY2Vf ZWxmX3Jlc29sdmVfc3ltYm9scygmZWxmKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290byBv dXQ7CisKKyAgICByYyA9IHhzcGxpY2VfZWxmX3BlcmZvcm1fcmVsb2NzKCZlbGYpOworICAgIGlm ICggcmMgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJjID0gc2VjdXJlX3BheWxvYWQocGF5 bG9hZCwgJmVsZik7CisKKyBvdXQ6CisgICAgaWYgKCByYyApCisgICAgICAgIGZyZWVfcGF5bG9h ZF9kYXRhKHBheWxvYWQpOworCisgICAgLyogRnJlZSBvdXIgdGVtcG9yYXJ5IGRhdGEgc3RydWN0 dXJlLiAqLworICAgIHhzcGxpY2VfZWxmX2ZyZWUoJmVsZik7CisKKyAgICByZXR1cm4gcmM7Cit9 CisKIHN0YXRpYyBpbnQgeHNwbGljZV91cGxvYWQoeGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZF90 ICp1cGxvYWQpCiB7CiAgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7CisgICAgdm9pZCAqcmF3X2Rh dGEgPSBOVUxMOwogICAgIGludCByYzsKIAogICAgIHJjID0gdmVyaWZ5X3BheWxvYWQodXBsb2Fk KTsKQEAgLTEzNyw3ICszNzcsMTkgQEAgc3RhdGljIGludCB4c3BsaWNlX3VwbG9hZCh4ZW5fc3lz Y3RsX3hzcGxpY2VfdXBsb2FkX3QgKnVwbG9hZCkKICAgICBpZiAoIGRhdGEtPm5hbWVbdXBsb2Fk LT5uYW1lLnNpemUgLSAxXSApCiAgICAgICAgIGdvdG8gb3V0OwogCi0gICAgcmMgPSAwOworICAg IHJjID0gLUVOT01FTTsKKyAgICByYXdfZGF0YSA9IHZtYWxsb2ModXBsb2FkLT5zaXplKTsKKyAg ICBpZiAoICFyYXdfZGF0YSApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgcmMgPSAtRUZBVUxU OworICAgIGlmICggX19jb3B5X2Zyb21fZ3Vlc3QocmF3X2RhdGEsIHVwbG9hZC0+cGF5bG9hZCwg dXBsb2FkLT5zaXplKSApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgcmMgPSBsb2FkX3BheWxv YWRfZGF0YShkYXRhLCByYXdfZGF0YSwgdXBsb2FkLT5zaXplKTsKKyAgICBpZiAoIHJjICkKKyAg ICAgICAgZ290byBvdXQ7CisKICAgICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tF RDsKICAgICBJTklUX0xJU1RfSEVBRCgmZGF0YS0+bGlzdCk7CiAKQEAgLTE0OCw2ICs0MDAsNyBA QCBzdGF0aWMgaW50IHhzcGxpY2VfdXBsb2FkKHhlbl9zeXNjdGxfeHNwbGljZV91cGxvYWRfdCAq dXBsb2FkKQogICAgIHNwaW5fdW5sb2NrX3JlY3Vyc2l2ZSgmcGF5bG9hZF9sb2NrKTsKIAogIG91 dDoKKyAgICB2ZnJlZShyYXdfZGF0YSk7CiAgICAgaWYgKCByYyApCiAgICAgICAgIHhmcmVlKGRh dGEpOwogCkBAIC0zODIsOCArNjM1LDkgQEAgc3RhdGljIHZvaWQgeHNwbGljZV9wcmludGFsbCh1 bnNpZ25lZCBjaGFyIGtleSkKICAgICB9CiAKICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggZGF0 YSwgJnBheWxvYWRfbGlzdCwgbGlzdCApCi0gICAgICAgIHByaW50aygiIG5hbWU9JXMgc3RhdGU9 JXMoJWQpXG4iLCBkYXRhLT5uYW1lLAotICAgICAgICAgICAgICAgc3RhdGUyc3RyKGRhdGEtPnN0 YXRlKSwgZGF0YS0+c3RhdGUpOworICAgICAgICBwcmludGsoIiBuYW1lPSVzIHN0YXRlPSVzKCVk KSAlcCAoLmRhdGE9JXAsIC5yb2RhdGE9JXApIHVzaW5nICV6dSBwYWdlcy5cbiIsCisgICAgICAg ICAgICAgICBkYXRhLT5uYW1lLCBzdGF0ZTJzdHIoZGF0YS0+c3RhdGUpLCBkYXRhLT5zdGF0ZSwg ZGF0YS0+dGV4dF9hZGRyLAorICAgICAgICAgICAgICAgZGF0YS0+cndfYWRkciwgZGF0YS0+cm9f YWRkciwgZGF0YS0+cGF5bG9hZF9wYWdlcyk7CiAKICAgICBzcGluX3VubG9ja19yZWN1cnNpdmUo JnBheWxvYWRfbG9jayk7CiB9CkBAIC0zOTEsNiArNjQ1LDggQEAgc3RhdGljIHZvaWQgeHNwbGlj ZV9wcmludGFsbCh1bnNpZ25lZCBjaGFyIGtleSkKIHN0YXRpYyBpbnQgX19pbml0IHhzcGxpY2Vf aW5pdCh2b2lkKQogewogICAgIHJlZ2lzdGVyX2tleWhhbmRsZXIoJ3gnLCB4c3BsaWNlX3ByaW50 YWxsLCAicHJpbnQgeHNwbGljaW5nIGluZm8iLCAxKTsKKworICAgIGFyY2hfeHNwbGljZV9yZWdp c3Rlcl9maW5kX3NwYWNlKCZmaW5kX2hvbGUpOwogICAgIHJldHVybiAwOwogfQogX19pbml0Y2Fs bCh4c3BsaWNlX2luaXQpOwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi94c3BsaWNlX2VsZi5jIGIv eGVuL2NvbW1vbi94c3BsaWNlX2VsZi5jCmluZGV4IGYyMmNlZGUuLmU1YzBiMTIgMTAwNjQ0Ci0t LSBhL3hlbi9jb21tb24veHNwbGljZV9lbGYuYworKysgYi94ZW4vY29tbW9uL3hzcGxpY2VfZWxm LmMKQEAgLTIxMyw2ICsyMTMsOTcgQEAgc3RhdGljIGludCBlbGZfZ2V0X3N5bShzdHJ1Y3QgeHNw bGljZV9lbGYgKmVsZiwgY29uc3Qgdm9pZCAqZGF0YSkKICAgICByZXR1cm4gMDsKIH0KIAoraW50 IHhzcGxpY2VfZWxmX3Jlc29sdmVfc3ltYm9scyhzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZikKK3sK KyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIC8qCisgICAgICogVGhlIGZpcnN0IGVudHJ5IG9m IGFuIEVMRiBzeW1ib2wgdGFibGUgaXMgdGhlICJ1bmRlZmluZWQgc3ltYm9sIGluZGV4Ii4KKyAg ICAgKiBha2EgcmVzZXJ2ZWQgc28gd2Ugc2tpcCBpdC4KKyAgICAgKi8KKyAgICBBU1NFUlQoIGVs Zi0+c3ltICk7CisgICAgZm9yICggaSA9IDE7IGkgPCBlbGYtPm5zeW07IGkrKyApCisgICAgewor ICAgICAgICB1aW50MTZfdCBpZHggPSBlbGYtPnN5bVtpXS5zeW0tPnN0X3NobmR4OworCisgICAg ICAgIHN3aXRjaCAoIGlkeCApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgU0hOX0NPTU1P TjoKKyAgICAgICAgICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAiJXMlczogVW5leHBlY3RlZCBj b21tb24gc3ltYm9sOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgWFNQTElDRSwgZWxm LT5uYW1lLCBlbGYtPnN5bVtpXS5uYW1lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZB TDsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBTSE5fVU5ERUY6 CisgICAgICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgIiVzJXM6IFVua25vd24gc3ltYm9s OiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgWFNQTElDRSwgZWxmLT5uYW1lLCBlbGYt PnN5bVtpXS5uYW1lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKKyAgICAgICAg ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBTSE5fQUJTOgorICAgICAgICAgICAg ICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCAiJXMlczogQWJzb2x1dGUgc3ltYm9sOiAlcyA9PiAw eCUiUFJJeDY0IlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICBYU1BMSUNFLCBlbGYtPm5hbWUs IGVsZi0+c3ltW2ldLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgZWxmLT5zeW1baV0uc3lt LT5zdF92YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1 bHQ6CisgICAgICAgICAgICAgICAgaWYgKCBlbGYtPnNlY1tpZHhdLnNlYy0+c2hfZmxhZ3MgJiBT SEZfQUxMT0MgKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZWxmLT5z eW1baV0uc3ltLT5zdF92YWx1ZSArPQorICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVk IGxvbmcpZWxmLT5zZWNbaWR4XS5sb2FkX2FkZHI7CisgICAgICAgICAgICAgICAgICAgIGlmICgg ZWxmLT5zeW1baV0ubmFtZSApCisgICAgICAgICAgICAgICAgICAgICAgICBwcmludGsoWEVOTE9H X0RFQlVHICIlcyVzOiBTeW1ib2wgcmVzb2x2ZWQ6ICVzID0+IDB4JSJQUkl4NjQiKCVzKVxuIiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYU1BMSUNFLCBlbGYtPm5hbWUsIGVsZi0+ c3ltW2ldLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90KWVs Zi0+c3ltW2ldLnN5bS0+c3RfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZWxmLT5zZWNbaWR4XS5uYW1lKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9 CisKKyAgICByZXR1cm4gMDsKK30KKworaW50IHhzcGxpY2VfZWxmX3BlcmZvcm1fcmVsb2NzKHN0 cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQoreworICAgIHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnJl bGEsICpiYXNlOworICAgIHVuc2lnbmVkIGludCBpOworICAgIGludCByYzsKKworICAgIC8qCisg ICAgICogVGhlIGZpcnN0IGVudHJ5IG9mIGFuIEVMRiBzeW1ib2wgdGFibGUgaXMgdGhlICJ1bmRl ZmluZWQgc3ltYm9sIGluZGV4Ii4KKyAgICAgKiBha2EgcmVzZXJ2ZWQgc28gd2Ugc2tpcCBpdC4K KyAgICAgKi8KKyAgICBBU1NFUlQoIGVsZi0+c3ltICk7CisgICAgZm9yICggaSA9IDE7IGkgPCBl bGYtPmhkci0+ZV9zaG51bTsgaSsrICkKKyAgICB7CisgICAgICAgIHJlbGEgPSAmZWxmLT5zZWNb aV07CisKKyAgICAgICAgaWYgKCAocmVsYS0+c2VjLT5zaF90eXBlICE9IFNIVF9SRUxBICkgJiYK KyAgICAgICAgICAgICAocmVsYS0+c2VjLT5zaF90eXBlICE9IFNIVF9SRUwgKSApCisgICAgICAg ICAgICBjb250aW51ZTsKKworICAgICAgICAgLyogSXMgaXQgYSB2YWxpZCByZWxvY2F0aW9uIHNl Y3Rpb24/ICovCisgICAgICAgICBpZiAoIHJlbGEtPnNlYy0+c2hfaW5mbyA+PSBlbGYtPmhkci0+ ZV9zaG51bSApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgYmFzZSA9ICZlbGYt PnNlY1tyZWxhLT5zZWMtPnNoX2luZm9dOworCisgICAgICAgICAvKiBEb24ndCByZWxvY2F0ZSBu b24tYWxsb2NhdGVkIHNlY3Rpb25zLiAqLworICAgICAgICAgaWYgKCAhKGJhc2UtPnNlYy0+c2hf ZmxhZ3MgJiBTSEZfQUxMT0MpICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlm ICggZWxmLT5zZWNbaV0uc2VjLT5zaF90eXBlID09IFNIVF9SRUxBICkKKyAgICAgICAgICAgIHJj ID0gYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsYShlbGYsIGJhc2UsIHJlbGEpOworICAgICAgICBl bHNlIC8qIFNIVF9SRUwgKi8KKyAgICAgICAgICAgIHJjID0gYXJjaF94c3BsaWNlX3BlcmZvcm1f cmVsKGVsZiwgYmFzZSwgcmVsYSk7CisKKyAgICAgICAgaWYgKCByYyApCisgICAgICAgICAgICBy ZXR1cm4gcmM7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgeHNwbGlj ZV9oZWFkZXJfY2hlY2soY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCiB7CiAgICAgaWYg KCBzaXplb2YoKmVsZi0+aGRyKSA+PSBlbGYtPmxlbiApCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVk ZS9hc20teDg2L3g4Nl82NC9wYWdlLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3g4Nl82NC9wYWdl LmgKaW5kZXggODZhYmI5NC4uYTg1NGUwNSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4 Ni94ODZfNjQvcGFnZS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYveDg2XzY0L3BhZ2UuaApA QCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgPHhlbi9wZHguaD4KIAogZXh0ZXJuIHVuc2lnbmVk IGxvbmcgeGVuX3ZpcnRfZW5kOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgYXZhaWxfdmlydF9zdGFy dDsKK2V4dGVybiB1bnNpZ25lZCBsb25nIGF2YWlsX3ZpcnRfZW5kOwogCiAjZGVmaW5lIHNwYWdl X3RvX3BkeChzcGcpICgoKHNwZykgLSBzcGFnZV90YWJsZSk8PChTVVBFUlBBR0VfU0hJRlQtUEFH RV9TSElGVCkpCiAjZGVmaW5lIHBkeF90b19zcGFnZShwZHgpIChzcGFnZV90YWJsZSArICgocGR4 KT4+KFNVUEVSUEFHRV9TSElGVC1QQUdFX1NISUZUKSkpCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVk ZS94ZW4veHNwbGljZS5oIGIveGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaAppbmRleCAwMDQ4MmQw Li43NDg1MGVhIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oCisrKyBiL3hl bi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKQEAgLTYsNiArNiw5IEBACiAjaWZuZGVmIF9fWEVOX1hT UExJQ0VfSF9fCiAjZGVmaW5lIF9fWEVOX1hTUExJQ0VfSF9fCiAKK3N0cnVjdCB4c3BsaWNlX2Vs ZjsKK3N0cnVjdCB4c3BsaWNlX2VsZl9zZWM7CitzdHJ1Y3QgeHNwbGljZV9lbGZfc3ltOwogc3Ry dWN0IHhlbl9zeXNjdGxfeHNwbGljZV9vcDsKIAogI2lmZGVmIENPTkZJR19YU1BMSUNFCkBAIC0x NSw2ICsxOCw0OSBAQCBzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX29wOwogCiBpbnQgeHNwbGlj ZV9vcChzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX29wICopOwogCisvKiBBcmNoIGhvb2tzLiAq LworaW50IGFyY2hfeHNwbGljZV92ZXJpZnlfZWxmKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAq ZWxmLCB2b2lkICpkYXRhKTsKK2ludCBhcmNoX3hzcGxpY2VfcGVyZm9ybV9yZWwoc3RydWN0IHhz cGxpY2VfZWxmICplbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj dCB4c3BsaWNlX2VsZl9zZWMgKmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnJlbGEpOworaW50IGFyY2hfeHNwbGljZV9wZXJm b3JtX3JlbGEoc3RydWN0IHhzcGxpY2VfZWxmICplbGYsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpiYXNlLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqcmVsYSk7Citl bnVtIHZhX3R5cGUgeworICAgIFhTUExJQ0VfVkFfUlgsIC8qIC50ZXh0ICovCisgICAgWFNQTElD RV9WQV9SVywgLyogLmRhdGEgKi8KKyAgICBYU1BMSUNFX1ZBX1JPLCAvKiAucm9kYXRhICovCit9 OworCisjaW5jbHVkZSA8eGVuL21tLmg+Cit2b2lkICphcmNoX3hzcGxpY2VfYWxsb2NfcGF5bG9h ZCh1bnNpZ25lZCBpbnQgcGFnZXMsIG1mbl90ICoqbWZuKTsKKworLyoKKyAqIEZ1bmN0aW9uIHRv IHNlY3VyZSB0aGUgYWxsb2NhdGUgcGFnZXMgKGZyb20gYXJjaF94c3BsaWNlX2FsbG9jX3BheWxv YWQpCisgKiB3aXRoIHRoZSByaWdodCBwYWdlIHBlcm1pc3Npb25zLgorICovCitpbnQgYXJjaF94 c3BsaWNlX3NlY3VyZSh2b2lkICp2YSwgdW5zaWduZWQgaW50IHBhZ2VzLCBlbnVtIHZhX3R5cGUg dHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZm5fdCAqbWZuKTsKKwordm9p ZCBhcmNoX3hzcGxpY2VfZnJlZV9wYXlsb2FkKHZvaWQgKnZhLCB1bnNpZ25lZCBpbnQgcGFnZXMp OworCisvKgorICogQ2FsbGJhY2sgdG8gZmluZCBhdmFpbGFibGUgdmlydHVhbCBhZGRyZXNzIHNw YWNlIGluIHdoaWNoIHRoZQorICogcGF5bG9hZCBjb3VsZCBiZSBwdXQgaW4uCisgKgorICogVGhl IGFyZ3VtZW50cyBhcmU6CisgKiAgLSBUaGUgc2l6ZSBvZiB0aGUgcGF5bG9hZCBpbiBieXRlcy4K KyAqICAtIFRoZSBzdGFydGluZyB2aXJ0dWFsIGFkZHJlc3MgdG8gc2VhcmNoLiBUbyBiZSB1cGRh dGVkIGJ5CisgKiAgICBjYWxsYmFjayBpZiBzcGFjZSBmb3VuZC4KKyAqICAtIFRoZSBlbmRpbmcg dmlydHVhbCBhZGRyZXNzIHRvIHNlYXJjaC4gVG8gYmUgdXBkYXRlZCBieQorICogICAgY2FsbGJh Y2sgaWYgc3BhY2UgZm91bmQuCisgKgorICogVGhlIHJldHVybiB2YWx1ZSBpcyB6ZXJvIGlmIHNl YXJjaCB3YXMgZG9uZS4gLUVYWCB2YWx1ZXMKKyAqIGlmIGVycm9ycyB3ZXJlIGVuY291bnRlcmVk LgorICovCit0eXBlZGVmIGludCAoZmluZF9zcGFjZV90KShzaXplX3QsIHVuc2lnbmVkIGxvbmcg KiwgdW5zaWduZWQgbG9uZyAqKTsKK3ZvaWQgYXJjaF94c3BsaWNlX3JlZ2lzdGVyX2ZpbmRfc3Bh Y2UoZmluZF9zcGFjZV90ICpjYik7CisKICNlbHNlCiAKICNpbmNsdWRlIDx4ZW4vZXJybm8uaD4g LyogRm9yIC1FT1BOT1RTVVBQICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4veHNwbGlj ZV9lbGYuaCBiL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlX2VsZi5oCmluZGV4IGUyZGVhMTguLmY2 ZmZjYmUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlX2VsZi5oCisrKyBiL3hl bi9pbmNsdWRlL3hlbi94c3BsaWNlX2VsZi5oCkBAIC0xNSw2ICsxNSw4IEBAIHN0cnVjdCB4c3Bs aWNlX2VsZl9zZWMgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGZf cmVzb2x2ZV9zZWN0aW9uX25hbWVzLiAqLwogICAgIGNvbnN0IHZvaWQgKmRhdGE7ICAgICAgICAg ICAgICAvKiBQb2ludGVyIHRvIHRoZSBzZWN0aW9uIChkb25lIGJ5CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVsZl9yZXNvbHZlX3NlY3Rpb25zKS4gKi8KKyAgICB1aW50 OF90ICpsb2FkX2FkZHI7ICAgICAgICAgICAgLyogQSBwb2ludGVyIHRvIHRoZSBhbGxvY2F0ZWQg ZGVzdGluYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbmUg YnkgbG9hZF9wYXlsb2FkX2RhdGEuICovCiB9OwogCiBzdHJ1Y3QgeHNwbGljZV9lbGZfc3ltIHsK QEAgLTM4LDYgKzQwLDkgQEAgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqeHNwbGljZV9lbGZfc2Vj X2J5X25hbWUoY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYsCiBpbnQgeHNwbGljZV9lbGZf bG9hZChzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwgdm9pZCAqZGF0YSk7CiB2b2lkIHhzcGxpY2Vf ZWxmX2ZyZWUoc3RydWN0IHhzcGxpY2VfZWxmICplbGYpOwogCitpbnQgeHNwbGljZV9lbGZfcmVz b2x2ZV9zeW1ib2xzKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKTsKK2ludCB4c3BsaWNlX2VsZl9w ZXJmb3JtX3JlbG9jcyhzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZik7CisKICNlbmRpZiAvKiBfX1hF Tl9YU1BMSUNFX0VMRl9IX18gKi8KIAogLyoKLS0gCjIuNS4wCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4t ZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK