From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v6 10/24] xsplice: Implement support for applying/reverting/replacing patches. Date: Wed, 6 Apr 2016 23:49:29 -0400 Message-ID: <1460000983-28170-11-git-send-email-konrad.wilk@oracle.com> References: <1460000983-28170-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 1ao0xN-0004pt-3Q for xen-devel@lists.xenproject.org; Thu, 07 Apr 2016 03:50:09 +0000 In-Reply-To: <1460000983-28170-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, konrad@kernel.org, ross.lagerwall@citrix.com, mpohlack@amazon.de, sasha.levin@oracle.com, andrew.cooper3@citrix.com Cc: Kevin Tian , Keir Fraser , Suravee Suthikulpanit , Konrad Rzeszutek Wilk , Jun Nakajima , Julien Grall , Stefano Stabellini , Jan Beulich , Boris Ostrovsky List-Id: xen-devel@lists.xenproject.org RnJvbTogUm9zcyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5jb20+CgpJbXBsZW1l bnQgc3VwcG9ydCBmb3IgdGhlIGFwcGx5LCByZXZlcnQgYW5kIHJlcGxhY2UgYWN0aW9ucy4KClRv IHBlcmZvcm0gYW5kIGFjdGlvbiBvbiBhIHBheWxvYWQsIHRoZSBoeXBlcmNhbGwgc2V0cyB1cCBh IGRhdGEKc3RydWN0dXJlIHRvIHNjaGVkdWxlIHRoZSB3b3JrLiAgQSBob29rIGlzIGFkZGVkIGlu IHRoZSByZXNldF9zdGFja19hbmRfanVtcAp0byBjaGVjayBmb3Igd29yayBhbmQgZXhlY3V0ZSBp dCBpZiBuZWVkZWQgKHNwZWNpZmljYWxseSB3ZSBjaGVjayBhbgpwZXItY3B1IGZsYWcgdG8gbWFr ZSB0aGlzIGFzIHF1aWNrIGFzIHBvc3NpYmxlKS4KCkluIHRoaXMgd2F5LCBwYXRjaGVzIGNhbiBi ZSBhcHBsaWVkIHdpdGggYWxsIENQVXMgaWRsZSBhbmQgd2l0aG91dApzdGFja3MuICBUaGUgZmly c3QgQ1BVIHRvIHJ1biBjaGVja19mb3JfeHNwbGljZV93b3JrKCkgYmVjb21lcyB0aGUKbWFzdGVy IGFuZCB0cmlnZ2VycyBhIHJlc2NoZWR1bGUgc29mdGlycSB0byB0cmlnZ2VyIGFsbCB0aGUgb3Ro ZXIgQ1BVcwp0byBlbnRlciBjaGVja19mb3JfeHNwbGljZV93b3JrKCkgd2l0aCBubyBzdGFjay4g IE9uY2UgYWxsIENQVXMKaGF2ZSByZW5kZXp2b3VzZWQsIGFsbCBDUFVzIGRpc2FibGUgSVJRcyBh bmQgTk1JcyBhcmUgaWdub3JlZC4KVGhlIHN5c3RlbSBpcyB0aGVuIHF1aXNjaWVudCBhbmQgdGhl IG1hc3RlciBwZXJmb3JtcyB0aGUgYWN0aW9uLgpBZnRlciB0aGlzLCBhbGwgQ1BVcyBlbmFibGUg SVJRcyBhbmQgTk1JcyBhcmUgcmUtZW5hYmxlZC4KCk5vdGUgdGhhdCBpdCBpcyB1bnNhZmUgdG8g cGF0Y2ggZG9fbm1pIGFuZCB0aGUgeFNwbGljZSBpbnRlcm5hbCBmdW5jdGlvbnMuClBhdGNoaW5n IGZ1bmN0aW9ucyBvbiBOTUkvTUNFIHBhdGggaXMgbGlhYmxlIHRvIGVuZCBpbiBkaXNhc3Rlci4K VGhpcyBpcyBub3QgYWRkcmVzc2VkIGluIHRoaXMgcGF0Y2ggYW5kIGlzIG1lbnRpb25lZCBpbiB0 aGUKZGVzaWduIGRvYyBhcyBhIGZ1cnRoZXIgVE9ETy4KClRoZSBhY3Rpb24gdG8gcGVyZm9ybSBp cyBvbmUgb2Y6Ci0gQVBQTFk6IEZvciBlYWNoIGZ1bmN0aW9uIGluIHRoZSBtb2R1bGUsIHN0b3Jl IHRoZSBmaXJzdCA1IGJ5dGVzIG9mIHRoZQogIG9sZCBmdW5jdGlvbiBhbmQgcmVwbGFjZSBpdCB3 aXRoIGEganVtcCB0byB0aGUgbmV3IGZ1bmN0aW9uLgotIFJFVkVSVDogQ29weSB0aGUgcHJldmlv dXNseSBzdG9yZWQgYnl0ZXMgaW50byB0aGUgZmlyc3QgNSBieXRlcyBvZiB0aGUKICBvbGQgZnVu Y3Rpb24uCi0gUkVQTEFDRTogUmV2ZXJ0IGVhY2ggYXBwbGllZCBtb2R1bGUgYW5kIHRoZW4gYXBw bHkgdGhlIG5ldyBtb2R1bGUuCgpUbyBwcmV2ZW50IGEgZGVhZGxvY2sgd2l0aCBhbnkgb3RoZXIg YmFycmllciBpbiB0aGUgc3lzdGVtLCB0aGUgbWFzdGVyCndpbGwgd2FpdCBmb3IgdXAgdG8gMzBt cyBiZWZvcmUgdGltaW5nIG91dC4KTWVhc3VyZW1lbnRzIGZvdW5kIHRoYXQgdGhlIHBhdGNoIGFw cGxpY2F0aW9uIHRvIHRha2UgYWJvdXQgMTAwIM68cyBvbiBhCjcyIENQVSBzeXN0ZW0sIHdoZXRo ZXIgaWRsZSBvciBmdWxseSBsb2FkZWQuCgpXZSBhbHNvIGFkZCBhbiBCVUlMRF9PTiB0byBtYWtl IHN1cmUgdGhhdCB0aGUgc2l6ZSBvZiB0aGUgc3RydWN0dXJlCm9mIHRoZSBwYXlsb2FkIGlzIG5v dCBpbmFkdmVydGx5IGNoYW5nZWQgYW5kIHRoYXQgdGhlIG9mZnNldHMgYXJlCmNvcnJlY3Qgb24g Ym90aCAzMiBhbmQgNjQtYml0IGh5cGVydmlzb3IgKEFSTTMyIGFuZCBBUk02NCkuCgpTaWduZWQt b2ZmLWJ5OiBSb3NzIExhZ2Vyd2FsbCA8cm9zcy5sYWdlcndhbGxAY2l0cml4LmNvbT4KU2lnbmVk LW9mZi1ieTogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgoK LS0KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3RlZmFuby5zdGFiZWxsaW5pQGNpdHJpeC5jb20+ CkNjOiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgpDYzogS2VpciBGcmFzZXIg PGtlaXJAeGVuLm9yZz4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEFu ZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBCb3JpcyBPc3Ryb3Zz a3kgPGJvcmlzLm9zdHJvdnNreUBvcmFjbGUuY29tPgpDYzogU3VyYXZlZSBTdXRoaWt1bHBhbml0 IDxzdXJhdmVlLnN1dGhpa3VscGFuaXRAYW1kLmNvbT4KQ2M6IEp1biBOYWthamltYSA8anVuLm5h a2FqaW1hQGludGVsLmNvbT4KQ2M6IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgoK djI6IC0gUGx1Y2sgdGhlICdzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jJyBpbiB0aGlzIHBhdGNo LgogICAgLSBNb2RpZnkgY29kZSBwZXIgcmV2aWV3IGNvbW1lbnRzLgogICAgLSBBZGQgbW9yZSBk YXRhIGluIHRoZSBrZXlib2FyZCBoYW5kbGVyLgogICAgLSBSZWRvIHRoZSBwYXRjaGluZyBjb2Rl LCBzcGxpdCBpdCBpbiBmdW5jdGlvbnMuCnYzOiAtIEFkZCByZXR1cm5fIG1hY3JvIGZvciBkZWJ1 ZyBidWlsZHMuCiAgICAtIE1vdmUgcy9wYXlsb2FkX2xpc3RfbG9jay9wYXlsb2FkX2xpc3QvIHRv IGVhcmxpZXIgcGF0Y2gKICAgIC0gUmVtb3ZlIGNvbnN0IGFuZCB1c2UgRUxGIHR5cGVzIGZvciB4 c3BsaWNlX3BhdGNoX2Z1bmMKICAgICAtIEFkZCBjaGVjayByb3V0aW5lIHRvIGRvIHNpbXBsZSBz YW5pdHkgY2hlY2tzIGZvciB2YXJpb3VzCiAgICAgIHNlY3Rpb25zLgogICAgLSBzLyVwL1BSSXg2 NC8gYXMgQVJNIGJ1aWxkcyBjb21wbGFpbi4KICAgIC0gTW92ZSBjb2RlIGFyb3VuZC4gQWRkIG1v cmUgZHByaW50ay4gQWRkIFhTUExJQ0UgaW4gZnJvbnQgb2YgYWxsCiAgICAgIHByaW50a3MvZHBy aW50ay4KICAgICAgUHV0IHRoZSBOTUlzIGJhY2sgaWYgd2UgZmFpbCBwYXRjaGluZy4KICAgICAg QWRkIHBlci1jcHUgdG8gbGVzc2VuIGNvbnRlbnRpb24gZm9yIGdsb2JhbCBzdHJ1Y3R1cmUuCiAg ICAgIEV4dHJhY3QgZnJvbSB4c3BsaWNlX2RvX3NpbmdsZSBwYXRjaGluZyBjb2RlIGludG8geHNw bGljZV9kb19hY3Rpb24KICAgICAgU3F1YXNoIHhzcGxpY2VfZG9fc2luZ2xlIGFuZCBjaGVja19m b3JfeHNwbGljZV93b3JrIHRvZ2V0aGVyIHRvCiAgICAgIGhhdmUgYWxsIHJlbmRlenZvdXMgaW4g b25lIHBsYWNlLgogICAgICBNYWRlIFhTUExJQ0VfQUNUSU9OX1JFUExBQ0Ugd29yayBhZ2FpbiAo d3JvbmcgbGlzdCBpdGVyYXRvcikKICAgICAgcy9maW5kX3NwZWNpYWxfc2VjdGlvbnMvcHJlcGFy ZV9wYXlsb2FkLwogICAgICBVc2UgbGlzdF9kZWxfaW5pdCBhbmQgSU5JVF9MSVNUX0hFQUQgZm9y IGFwcGxpZWRfbGlzdAp2NDoKICAgLSBBZGQgY29tbWVudCwgYWRqdXN0IHNwYWNpbmcgZm9yICJU aW1lZCBvdXQgb24gQ1BVIHNlbWFwaG9yZSIKICAgLSBBZGRlZCBDUjAuV1AgbWFuaXB1bGF0aW9u cyB3aGVuIGFsdGVyaW5nIHRoZSAudGV4dCBvZiBoeXBlcnZpc29yLgogICAtIEFkZGVkIGZpeCBm cm9tIEFuZHJldyBmb3IgQ1IwLldQIG1hbmlwdWxhdGlvbi4KdjU6IC0gTWFkZSB4c3BsaWNlX3Bh dGNoX2Z1bmMgdXNlIHVpbnRYWF90IGluc3RlYWQgb2YgRUxGXyB0eXBlcyB0byBlYXN5CiAgICAg IG1ha2luZyBpdCB3b3JrIHVuZGVyIEFSTSAoMzJiaXQpLiBBZGQgbW9yZSBCVUlMRC1CVUctT04g Y2hlY2tzLgogICAgLSBBZGQgbW9yZSBCVUlMRF9PTiBjaGVja3MuIFNwcmlua2xlIG5ld2xpbmVz Lgp2NjogUmViYXNlIG9uICJhcm0veDg2OiBBbHRlciBubWlfY2FsbGJhY2tfdCB0eXBlZGVmIgog ICAtIERyb3AgdGhlIHJlY3Vyc2l2ZSBzcGlubG9jayB1c2FnZS4KICAgLSBNb3ZlIE5NSSBjYWxs YmFja3MgaW4gYXJjaCBzcGVjaWZpYy4KICAgLSBGb2xkIHRoZSAnY2hlY2tfZm9yX3hzcGxpY2Vf d29yaycgaW4gcmVzZXRfc3RhY2tfYW5kX2p1bXAKICAgLSBBZGQgYXJjaCBzcGVjaWZpYyBjaGVj ayBmb3IgLnhzcGxpY2UuZnVuY3MuCiAgIC0gU2VwZXJhdGUgZXh0ZXJuYWwgYW5kIGludGVybmFs IHN0cnVjdHVyZSBvZiAueHNwbGljZS5mdW5jcy4KICAgLSBDaGFuZ2VkIHBlciBKYW4ncyByZXZp ZXcKICAgLSBNb2RpZmllZCB0aGUgLnhzcGxpY2UuZnVuY3MgY2hlY2tzCi0tLQotLS0KIHhlbi9h cmNoL2FybS94c3BsaWNlLmMgICAgICAgICAgfCAgMzMgKysrCiB4ZW4vYXJjaC94ODYvZG9tYWlu LmMgICAgICAgICAgIHwgICAyICsKIHhlbi9hcmNoL3g4Ni94c3BsaWNlLmMgICAgICAgICAgfCAg NzUgKysrKysrKwogeGVuL2NvbW1vbi94c3BsaWNlLmMgICAgICAgICAgICB8IDQ1MyArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiB4ZW4vaW5jbHVkZS9hc20teDg2L2N1 cnJlbnQuaCAgIHwgIDEwICstCiB4ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oICAgICAgIHwgIDQy ICsrKy0KIHhlbi9pbmNsdWRlL3hlbi94c3BsaWNlX3BhdGNoLmggfCAgMjUgKysrCiA3IGZpbGVz IGNoYW5nZWQsIDYyOSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCB4ZW4vaW5jbHVkZS94ZW4veHNwbGljZV9wYXRjaC5oCgpkaWZmIC0tZ2l0IGEveGVu L2FyY2gvYXJtL3hzcGxpY2UuYyBiL3hlbi9hcmNoL2FybS94c3BsaWNlLmMKaW5kZXggMmQwNzQx NS4uMDMyMDVjMCAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL3hzcGxpY2UuYworKysgYi94ZW4v YXJjaC9hcm0veHNwbGljZS5jCkBAIC02LDYgKzYsMzkgQEAKICNpbmNsdWRlIDx4ZW4veHNwbGlj ZV9lbGYuaD4KICNpbmNsdWRlIDx4ZW4veHNwbGljZS5oPgogCit2b2lkIGFyY2hfeHNwbGljZV9w YXRjaGluZ19lbnRlcih2b2lkKQoreworfQorCit2b2lkIGFyY2hfeHNwbGljZV9wYXRjaGluZ19s ZWF2ZSh2b2lkKQoreworfQorCitpbnQgYXJjaF94c3BsaWNlX3ZlcmlmeV9mdW5jKGNvbnN0IHN0 cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmNfaW50ZXJuYWwgKmZ1bmMpCit7CisgICAgcmV0dXJuIC1F Tk9TWVM7Cit9CisKK3ZvaWQgYXJjaF94c3BsaWNlX2FwcGx5X2ptcChzdHJ1Y3QgeHNwbGljZV9w YXRjaF9mdW5jX2ludGVybmFsICpmdW5jKQoreworfQorCit2b2lkIGFyY2hfeHNwbGljZV9yZXZl cnRfam1wKGNvbnN0IHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmNfaW50ZXJuYWwgKmZ1bmMpCit7 Cit9CisKK3ZvaWQgYXJjaF94c3BsaWNlX3Bvc3RfYWN0aW9uKHZvaWQpCit7Cit9CisKK3ZvaWQg YXJjaF94c3BsaWNlX21hc2sodm9pZCkKK3sKK30KKwordm9pZCBhcmNoX3hzcGxpY2VfdW5tYXNr KHZvaWQpCit7Cit9CisKIGludCBhcmNoX3hzcGxpY2VfdmVyaWZ5X2VsZihjb25zdCBzdHJ1Y3Qg eHNwbGljZV9lbGYgKmVsZikKIHsKICAgICByZXR1cm4gLUVOT1NZUzsKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9kb21haW4uYyBiL3hlbi9hcmNoL3g4Ni9kb21haW4uYwppbmRleCBhNGY2ZGIy Li44N2U0ZjJmIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZG9tYWluLmMKKysrIGIveGVuL2Fy Y2gveDg2L2RvbWFpbi5jCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8eGVuL2NwdS5oPgog I2luY2x1ZGUgPHhlbi93YWl0Lmg+CiAjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgorI2lu Y2x1ZGUgPHhlbi94c3BsaWNlLmg+CiAjaW5jbHVkZSA8cHVibGljL3N5c2N0bC5oPgogI2luY2x1 ZGUgPHB1YmxpYy9odm0vaHZtX3ZjcHUuaD4KICNpbmNsdWRlIDxhc20vcmVncy5oPgpAQCAtMTIw LDYgKzEyMSw3IEBAIHN0YXRpYyB2b2lkIGlkbGVfbG9vcCh2b2lkKQogICAgICAgICAoKnBtX2lk bGUpKCk7CiAgICAgICAgIGRvX3Rhc2tsZXQoKTsKICAgICAgICAgZG9fc29mdGlycSgpOworICAg ICAgICBjaGVja19mb3JfeHNwbGljZV93b3JrKCk7IC8qIE11c3QgYmUgbGFzdC4gKi8KICAgICB9 CiB9CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94c3BsaWNlLmMgYi94ZW4vYXJjaC94ODYv eHNwbGljZS5jCmluZGV4IGNhZGYxZjEuLjQ0OWE1YjQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni94c3BsaWNlLmMKKysrIGIveGVuL2FyY2gveDg2L3hzcGxpY2UuYwpAQCAtMTAsNiArMTAsODEg QEAKICNpbmNsdWRlIDx4ZW4veHNwbGljZV9lbGYuaD4KICNpbmNsdWRlIDx4ZW4veHNwbGljZS5o PgogCisjaW5jbHVkZSA8YXNtL25taS5oPgorCisjZGVmaW5lIFBBVENIX0lOU05fU0laRSA1CisK K3ZvaWQgYXJjaF94c3BsaWNlX3BhdGNoaW5nX2VudGVyKHZvaWQpCit7CisgICAgLyogRGlzYWJs ZSBXUCB0byBhbGxvdyBjaGFuZ2VzIHRvIHJlYWQtb25seSBwYWdlcy4gKi8KKyAgICB3cml0ZV9j cjAocmVhZF9jcjAoKSAmIH5YODZfQ1IwX1dQKTsKK30KKwordm9pZCBhcmNoX3hzcGxpY2VfcGF0 Y2hpbmdfbGVhdmUodm9pZCkKK3sKKyAgICAvKiBSZWluc3RhdGUgV1AuICovCisgICAgd3JpdGVf Y3IwKHJlYWRfY3IwKCkgfCBYODZfQ1IwX1dQKTsKK30KKworaW50IGFyY2hfeHNwbGljZV92ZXJp ZnlfZnVuYyhjb25zdCBzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jX2ludGVybmFsICpmdW5jKQor eworICAgIC8qIE5vIE5PUCBwYXRjaGluZyB5ZXQuICovCisgICAgaWYgKCAhZnVuYy0+bmV3X3Np emUgKQorICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7CisKKyAgICBpZiAoIGZ1bmMtPm9sZF9z aXplIDwgUEFUQ0hfSU5TTl9TSVpFICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBy ZXR1cm4gMDsKK30KKwordm9pZCBhcmNoX3hzcGxpY2VfYXBwbHlfam1wKHN0cnVjdCB4c3BsaWNl X3BhdGNoX2Z1bmNfaW50ZXJuYWwgKmZ1bmMpCit7CisgICAgaW50MzJfdCB2YWw7CisgICAgdWlu dDhfdCAqb2xkX3B0cjsKKworICAgIEJVSUxEX0JVR19PTihQQVRDSF9JTlNOX1NJWkUgPiBzaXpl b2YoZnVuYy0+dS51bmRvKSk7CisgICAgQlVJTERfQlVHX09OKFBBVENIX0lOU05fU0laRSAhPSAo MSArIHNpemVvZiB2YWwpKTsKKworICAgIG9sZF9wdHIgPSAodWludDhfdCAqKWZ1bmMtPm9sZF9h ZGRyOworICAgIG1lbWNweShmdW5jLT51LnVuZG8sIG9sZF9wdHIsIFBBVENIX0lOU05fU0laRSk7 CisKKyAgICAqb2xkX3B0cisrID0gMHhlOTsgLyogUmVsYXRpdmUganVtcCAqLworICAgIHZhbCA9 IGZ1bmMtPm5ld19hZGRyIC0gZnVuYy0+b2xkX2FkZHIgLSBQQVRDSF9JTlNOX1NJWkU7CisgICAg bWVtY3B5KG9sZF9wdHIsICZ2YWwsIHNpemVvZiB2YWwpOworfQorCit2b2lkIGFyY2hfeHNwbGlj ZV9yZXZlcnRfam1wKGNvbnN0IHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmNfaW50ZXJuYWwgKmZ1 bmMpCit7CisgICAgbWVtY3B5KCh2b2lkICopZnVuYy0+b2xkX2FkZHIsIGZ1bmMtPnUudW5kbywg UEFUQ0hfSU5TTl9TSVpFKTsKK30KKwordm9pZCBhcmNoX3hzcGxpY2VfcG9zdF9hY3Rpb24odm9p ZCkKK3sKKyAgICBjcHVpZF9lYXgoMCk7Cit9CisKK3N0YXRpYyBubWlfY2FsbGJhY2tfdCAqc2F2 ZWRfbm1pX2NhbGxiYWNrOworLyoKKyAqIE5vdGUgdGhhdCBiZWNhdXNlIG9mIHRoaXMgTk9QIGNv ZGUgdGhlIGRvX25taSBpcyBub3Qgc2FmZWx5IHBhdGNoYWJsZS4KKyAqIEFsc28gaWYgd2UgZG8g cmVjZWl2ZSAncmVhbCcgTk1JcyB3ZSBoYXZlIGxvc3QgdGhlbS4gRGl0dG8gZm9yIE1DRS4KKyAq Lworc3RhdGljIGludCBtYXNrX25taV9jYWxsYmFjayhjb25zdCBzdHJ1Y3QgY3B1X3VzZXJfcmVn cyAqcmVncywgaW50IGNwdSkKK3sKKyAgICAvKiBUT0RPOiBIYW5kbGUgbWlzc2luZyBOTUkvTUNF LiovCisgICAgcmV0dXJuIDE7Cit9CisKK3ZvaWQgYXJjaF94c3BsaWNlX21hc2sodm9pZCkKK3sK KyAgICBzYXZlZF9ubWlfY2FsbGJhY2sgPSBzZXRfbm1pX2NhbGxiYWNrKG1hc2tfbm1pX2NhbGxi YWNrKTsKK30KKwordm9pZCBhcmNoX3hzcGxpY2VfdW5tYXNrKHZvaWQpCit7CisgICAgc2V0X25t aV9jYWxsYmFjayhzYXZlZF9ubWlfY2FsbGJhY2spOworfQorCiBpbnQgYXJjaF94c3BsaWNlX3Zl cmlmeV9lbGYoY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCiB7CiAKZGlmZiAtLWdpdCBh L3hlbi9jb21tb24veHNwbGljZS5jIGIveGVuL2NvbW1vbi94c3BsaWNlLmMKaW5kZXggMTBjODE2 Ni4uMmRmODc5ZSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi94c3BsaWNlLmMKKysrIGIveGVuL2Nv bW1vbi94c3BsaWNlLmMKQEAgLTMsNiArMyw3IEBACiAgKgogICovCiAKKyNpbmNsdWRlIDx4ZW4v Y3B1Lmg+CiAjaW5jbHVkZSA8eGVuL2Vyci5oPgogI2luY2x1ZGUgPHhlbi9ndWVzdF9hY2Nlc3Mu aD4KICNpbmNsdWRlIDx4ZW4va2V5aGFuZGxlci5oPgpAQCAtMTEsMTcgKzEyLDI5IEBACiAjaW5j bHVkZSA8eGVuL21tLmg+CiAjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CiAjaW5jbHVkZSA8eGVuL3Nt cC5oPgorI2luY2x1ZGUgPHhlbi9zb2Z0aXJxLmg+CiAjaW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+ CiAjaW5jbHVkZSA8eGVuL3ZtYXAuaD4KKyNpbmNsdWRlIDx4ZW4vd2FpdC5oPgogI2luY2x1ZGUg PHhlbi94c3BsaWNlX2VsZi5oPgogI2luY2x1ZGUgPHhlbi94c3BsaWNlLmg+CisjaW5jbHVkZSA8 eGVuL3hzcGxpY2VfcGF0Y2guaD4KIAogI2luY2x1ZGUgPGFzbS9ldmVudC5oPgogI2luY2x1ZGUg PHB1YmxpYy9zeXNjdGwuaD4KIAorLyoKKyAqIFByb3RlY3RzIGFnYWluc3QgcGF5bG9hZF9saXN0 IG9wZXJhdGlvbnMgYW5kIGFsc28gYWxsb3dzIG9ubHkgb25lCisgKiBjYWxsZXIgaW4gc2NoZWR1 bGVfd29yay4KKyAqLwogc3RhdGljIERFRklORV9TUElOTE9DSyhwYXlsb2FkX2xvY2spOwogc3Rh dGljIExJU1RfSEVBRChwYXlsb2FkX2xpc3QpOwogCisvKgorICogUGF0Y2hlcyB3aGljaCBoYXZl IGJlZW4gYXBwbGllZC4KKyAqLworc3RhdGljIExJU1RfSEVBRChhcHBsaWVkX2xpc3QpOworCiBz dGF0aWMgdW5zaWduZWQgaW50IHBheWxvYWRfY250Owogc3RhdGljIHVuc2lnbmVkIGludCBwYXls b2FkX3ZlcnNpb24gPSAxOwogCkBAIC0zNyw5ICs1MCwzNSBAQCBzdHJ1Y3QgcGF5bG9hZCB7CiAg ICAgc2l6ZV90IHJvX3NpemU7ICAgICAgICAgICAgICAgICAgICAgIC8qIC4uIGFuZCBpdHMgc2l6 ZSAoaWYgYW55KS4gKi8KICAgICBzaXplX3QgcGFnZXM7ICAgICAgICAgICAgICAgICAgICAgICAg LyogVG90YWwgcGFnZXMgZm9yIFt0ZXh0LHJ3LHJvXV9hZGRyICovCiAgICAgbWZuX3QgKm1mbjsg ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRoZSBNRk5zIGJhY2tpbmcgdGhlc2UgcGFnZXMu ICovCisgICAgc3RydWN0IGxpc3RfaGVhZCBhcHBsaWVkX2xpc3Q7ICAgICAgIC8qIExpbmtlZCB0 byAnYXBwbGllZF9saXN0Jy4gKi8KKyAgICBzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jX2ludGVy bmFsICpmdW5jczsgICAgLyogVGhlIGFycmF5IG9mIGZ1bmN0aW9ucyB0byBwYXRjaC4gKi8KKyAg ICB1bnNpZ25lZCBpbnQgbmZ1bmNzOyAgICAgICAgICAgICAgICAgLyogTnIgb2YgZnVuY3Rpb25z IHRvIHBhdGNoLiAqLwogICAgIGNoYXIgbmFtZVtYRU5fWFNQTElDRV9OQU1FX1NJWkVdOyAgICAv KiBOYW1lIG9mIGl0LiAqLwogfTsKIAorLyogRGVmaW5lcyBhbiBvdXRzdGFuZGluZyBwYXRjaGlu ZyBhY3Rpb24uICovCitzdHJ1Y3QgeHNwbGljZV93b3JrCit7CisgICAgYXRvbWljX3Qgc2VtYXBo b3JlOyAgICAgICAgICAvKiBVc2VkIGZvciByZW5kZXp2b3VzLiAqLworICAgIGF0b21pY190IGly cV9zZW1hcGhvcmU7ICAgICAgLyogVXNlZCB0byBzaWduYWwgYWxsIElSUXMgZGlzYWJsZWQuICov CisgICAgdWludDMyX3QgdGltZW91dDsgICAgICAgICAgICAvKiBUaW1lb3V0IHRvIGRvIHRoZSBv cGVyYXRpb24uICovCisgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7ICAgICAgICAvKiBUaGUgcGF5 bG9hZCBvbiB3aGljaCB0byBhY3QuICovCisgICAgdm9sYXRpbGUgYm9vbF90IGRvX3dvcms7ICAg ICAvKiBTaWduYWxzIHdvcmsgdG8gZG8uICovCisgICAgdm9sYXRpbGUgYm9vbF90IHJlYWR5OyAg ICAgICAvKiBTaWduYWxzIGFsbCBDUFVzIHN5bmNocm9uaXplZC4gKi8KKyAgICB1bnNpZ25lZCBp bnQgY21kOyAgICAgICAgICAgICAgICAvKiBBY3Rpb24gcmVxdWVzdDogWFNQTElDRV9BQ1RJT05f KiAqLworfTsKKworLyogVGhlcmUgY2FuIGJlIG9ubHkgb25lIG91dHN0YW5kaW5nIHBhdGNoaW5n IGFjdGlvbi4gKi8KK3N0YXRpYyBzdHJ1Y3QgeHNwbGljZV93b3JrIHhzcGxpY2Vfd29yazsKKwor LyoKKyAqIEluZGljYXRlIHdoZXRoZXIgdGhlIENQVSBuZWVkcyB0byBjb25zdWx0IHhzcGxpY2Vf d29yayBzdHJ1Y3R1cmUuCisgKiBXZSB3YW50IGFuIHBlci1jcHUgZGF0YSBzdHJ1Y3R1cmUgb3Ro ZXJ3aXNlIHRoZSBjaGVja19mb3JfeHNwbGljZV93b3JrCisgKiB3b3VsZCBoYW1tZXIgYSBnbG9i YWwgeHNwbGljZV93b3JrIHN0cnVjdHVyZSBvbiBldmVyeSBndWVzdCBWTUVYSVQuCisgKiBIYXZp bmcgYW4gcGVyLWNwdSBsZXNzZW5zIHRoZSBsb2FkLgorICovCitzdGF0aWMgREVGSU5FX1BFUl9D UFUoYm9vbF90LCB3b3JrX3RvX2RvKTsKKwogc3RhdGljIGludCB2ZXJpZnlfbmFtZShjb25zdCB4 ZW5feHNwbGljZV9uYW1lX3QgKm5hbWUsIGNoYXIgKm4pCiB7CiAgICAgaWYgKCAhbmFtZS0+c2l6 ZSB8fCBuYW1lLT5zaXplID4gWEVOX1hTUExJQ0VfTkFNRV9TSVpFICkKQEAgLTI2Niw2ICszMDUs ODIgQEAgc3RhdGljIGludCBzZWN1cmVfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqcGF5bG9hZCwg c3RydWN0IHhzcGxpY2VfZWxmICplbGYpCiAgICAgcmV0dXJuIHJjOwogfQogCitzdGF0aWMgaW50 IGNoZWNrX3NwZWNpYWxfc2VjdGlvbnMoY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCit7 CisgICAgdW5zaWduZWQgaW50IGk7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IG5hbWVz W10gPSB7ICIueHNwbGljZS5mdW5jcyIgfTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgQVJSQVlf U0laRShuYW1lcyk7IGkrKyApCisgICAgeworICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9l bGZfc2VjICpzZWM7CisKKyAgICAgICAgc2VjID0geHNwbGljZV9lbGZfc2VjX2J5X25hbWUoZWxm LCBuYW1lc1tpXSk7CisgICAgICAgIGlmICggIXNlYyApCisgICAgICAgIHsKKyAgICAgICAgICAg IHByaW50ayhYRU5MT0dfRVJSIFhTUExJQ0UgIiVzOiAlcyBpcyBtaXNzaW5nIVxuIiwKKyAgICAg ICAgICAgICAgICAgICBlbGYtPm5hbWUsIG5hbWVzW2ldKTsKKyAgICAgICAgICAgIHJldHVybiAt RUlOVkFMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCAhc2VjLT5zZWMtPnNoX3NpemUgKQor ICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgcHJlcGFyZV9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpwYXlsb2FkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCit7CisgICAg Y29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqc2VjOworICAgIHVuc2lnbmVkIGludCBpOwor ICAgIHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmNfaW50ZXJuYWwgKmY7CisKKyAgICBzZWMgPSB4 c3BsaWNlX2VsZl9zZWNfYnlfbmFtZShlbGYsICIueHNwbGljZS5mdW5jcyIpOworICAgIEFTU0VS VChzZWMpOworICAgIGlmICggc2VjLT5zZWMtPnNoX3NpemUgJSBzaXplb2YoKnBheWxvYWQtPmZ1 bmNzKSApCisgICAgeworICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgWFNQTElDRSAiJXM6 IFdyb25nIHNpemUgb2YgLnhzcGxpY2UuZnVuY3MhXG4iLAorICAgICAgICAgICAgICAgIGVsZi0+ bmFtZSk7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIHBheWxvYWQtPmZ1 bmNzID0gc2VjLT5sb2FkX2FkZHI7CisgICAgcGF5bG9hZC0+bmZ1bmNzID0gc2VjLT5zZWMtPnNo X3NpemUgLyBzaXplb2YoKnBheWxvYWQtPmZ1bmNzKTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwg cGF5bG9hZC0+bmZ1bmNzOyBpKysgKQorICAgIHsKKyAgICAgICAgaW50IHJjOworICAgICAgICB1 bnNpZ25lZCBpbnQgajsKKworICAgICAgICBmID0gJihwYXlsb2FkLT5mdW5jc1tpXSk7CisKKyAg ICAgICAgaWYgKCBmLT52ZXJzaW9uICE9IFhTUExJQ0VfUEFZTE9BRF9WRVJTSU9OICkKKyAgICAg ICAgeworICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfREVCVUcsIFhTUExJQ0UgIiVzOiBXcm9u ZyB2ZXJzaW9uICgldSkuIEV4cGVjdGVkICVkIVxuIiwKKyAgICAgICAgICAgICAgICAgICAgZWxm LT5uYW1lLCBmLT52ZXJzaW9uLCBYU1BMSUNFX1BBWUxPQURfVkVSU0lPTik7CisgICAgICAgICAg ICByZXR1cm4gLUVPUE5PVFNVUFA7CisgICAgICAgIH0KKworICAgICAgICBpZiAoICFmLT5uZXdf YWRkciB8fCAhZi0+bmV3X3NpemUgKQorICAgICAgICB7CisgICAgICAgICAgICBkcHJpbnRrKFhF TkxPR19ERUJVRywgWFNQTElDRSAiJXM6IEFkZHJlc3Mgb3Igc2l6ZSBmaWVsZHMgYXJlIHplcm8h XG4iLAorICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUpOworICAgICAgICAgICAgcmV0dXJu IC1FSU5WQUw7CisgICAgICAgIH0KKworICAgICAgICByYyA9IGFyY2hfeHNwbGljZV92ZXJpZnlf ZnVuYyhmKTsKKyAgICAgICAgaWYgKCByYyApCisgICAgICAgICAgICByZXR1cm4gcmM7CisKKyAg ICAgICAgZm9yICggaiA9IDA7IGogPCBBUlJBWV9TSVpFKGYtPnUucGFkKTsgaisrICkKKyAgICAg ICAgICAgIGlmICggZi0+dS5wYWRbal0gKQorICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFM OworICAgIH0KKworICAgIHJldHVybiAwOworfQorCiAvKiBXZSBNVVNUIGJlIGhvbGRpbmcgdGhl IHBheWxvYWRfbG9jayBzcGlubG9jay4gKi8KIHN0YXRpYyB2b2lkIGZyZWVfcGF5bG9hZChzdHJ1 Y3QgcGF5bG9hZCAqZGF0YSkKIHsKQEAgLTI5OCw2ICs0MTMsMTQgQEAgc3RhdGljIGludCBsb2Fk X3BheWxvYWRfZGF0YShzdHJ1Y3QgcGF5bG9hZCAqcGF5bG9hZCwgdm9pZCAqcmF3LCBzaXplX3Qg bGVuKQogICAgIGlmICggcmMgKQogICAgICAgICBnb3RvIG91dDsKIAorICAgIHJjID0gY2hlY2tf c3BlY2lhbF9zZWN0aW9ucygmZWxmKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290byBvdXQ7 CisKKyAgICByYyA9IHByZXBhcmVfcGF5bG9hZChwYXlsb2FkLCAmZWxmKTsKKyAgICBpZiAoIHJj ICkKKyAgICAgICAgZ290byBvdXQ7CisKICAgICByYyA9IHNlY3VyZV9wYXlsb2FkKHBheWxvYWQs ICZlbGYpOwogCiAgb3V0OgpAQCAtMzU5LDYgKzQ4Miw3IEBAIHN0YXRpYyBpbnQgeHNwbGljZV91 cGxvYWQoeGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZF90ICp1cGxvYWQpCiAKICAgICBkYXRhLT5z dGF0ZSA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRDsKICAgICBJTklUX0xJU1RfSEVBRCgmZGF0YS0+ bGlzdCk7CisgICAgSU5JVF9MSVNUX0hFQUQoJmRhdGEtPmFwcGxpZWRfbGlzdCk7CiAKICAgICBs aXN0X2FkZF90YWlsKCZkYXRhLT5saXN0LCAmcGF5bG9hZF9saXN0KTsKICAgICBwYXlsb2FkX2Nu dCsrOwpAQCAtNDY5LDYgKzU5MywyOTggQEAgc3RhdGljIGludCB4c3BsaWNlX2xpc3QoeGVuX3N5 c2N0bF94c3BsaWNlX2xpc3RfdCAqbGlzdCkKICAgICByZXR1cm4gcmMgPyA6IGlkeDsKIH0KIAor LyoKKyAqIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGdldCB0aGUgQ1BVcyBpbnRvIGFuIGFwcHJv cHJpYXRlIHN0YXRlIGFuZAorICogYXBwbHkgKG9yIHJldmVydCkgZWFjaCBvZiB0aGUgcGF5bG9h ZCdzIGZ1bmN0aW9ucy4gVGhpcyBpcyBuZWVkZWQKKyAqIGZvciBYRU5fU1lTQ1RMX1hTUExJQ0Vf QUNUSU9OIG9wZXJhdGlvbiAoc2VlIHhzcGxpY2VfYWN0aW9uKS4KKyAqLworCitzdGF0aWMgaW50 IGFwcGx5X3BheWxvYWQoc3RydWN0IHBheWxvYWQgKmRhdGEpCit7CisgICAgdW5zaWduZWQgaW50 IGk7CisKKyAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgWFNQTElDRSAiJXM6IEFwcGx5aW5nICV1 IGZ1bmN0aW9ucy5cbiIsCisgICAgICAgICAgICBkYXRhLT5uYW1lLCBkYXRhLT5uZnVuY3MpOwor CisgICAgYXJjaF94c3BsaWNlX3BhdGNoaW5nX2VudGVyKCk7CisKKyAgICBmb3IgKCBpID0gMDsg aSA8IGRhdGEtPm5mdW5jczsgaSsrICkKKyAgICAgICAgYXJjaF94c3BsaWNlX2FwcGx5X2ptcCgm ZGF0YS0+ZnVuY3NbaV0pOworCisgICAgYXJjaF94c3BsaWNlX3BhdGNoaW5nX2xlYXZlKCk7CisK KyAgICBsaXN0X2FkZF90YWlsKCZkYXRhLT5hcHBsaWVkX2xpc3QsICZhcHBsaWVkX2xpc3QpOwor CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcmV2ZXJ0X3BheWxvYWQoc3RydWN0IHBh eWxvYWQgKmRhdGEpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBkcHJpbnRrKFhFTkxP R19ERUJVRywgWFNQTElDRSAiJXM6IFJldmVydGluZy5cbiIsIGRhdGEtPm5hbWUpOworCisgICAg YXJjaF94c3BsaWNlX3BhdGNoaW5nX2VudGVyKCk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IGRh dGEtPm5mdW5jczsgaSsrICkKKyAgICAgICAgYXJjaF94c3BsaWNlX3JldmVydF9qbXAoJmRhdGEt PmZ1bmNzW2ldKTsKKworICAgIGFyY2hfeHNwbGljZV9wYXRjaGluZ19sZWF2ZSgpOworCisgICAg bGlzdF9kZWxfaW5pdCgmZGF0YS0+YXBwbGllZF9saXN0KTsKKworICAgIHJldHVybiAwOworfQor CisvKgorICogVGhpcyBmdW5jdGlvbiBpcyBleGVjdXRlZCBoYXZpbmcgYWxsIG90aGVyIENQVXMg d2l0aCBubyBzdGFjayAod2UgbWF5CisgKiBoYXZlIGNwdV9pZGxlIG9uIGl0KSBhbmQgSVJRcyBk aXNhYmxlZC4gV2UgZ3VhcmQgYWdhaW5zdCBOTUkgYnkgdGVtcG9yYXJpbHkKKyAqIGluc3RhbGxp bmcgb3VyIE5PUCBOTUkgaGFuZGxlci4KKyAqLworc3RhdGljIHZvaWQgeHNwbGljZV9kb19hY3Rp b24odm9pZCkKK3sKKyAgICBpbnQgcmM7CisgICAgc3RydWN0IHBheWxvYWQgKmRhdGEsICpvdGhl ciwgKnRtcDsKKworICAgIGRhdGEgPSB4c3BsaWNlX3dvcmsuZGF0YTsKKyAgICAvKgorICAgICAq IE5vdyB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB0aGUgb25seSBvbmUgb24gYW55IHN0YWNrLgor ICAgICAqIE5vIG5lZWQgdG8gbG9jayB0aGUgcGF5bG9hZCBsaXN0IG9yIGFwcGxpZWQgbGlzdC4K KyAgICAgKi8KKyAgICBzd2l0Y2ggKCB4c3BsaWNlX3dvcmsuY21kICkKKyAgICB7CisgICAgY2Fz ZSBYU1BMSUNFX0FDVElPTl9BUFBMWToKKyAgICAgICAgcmMgPSBhcHBseV9wYXlsb2FkKGRhdGEp OworICAgICAgICBpZiAoIHJjID09IDAgKQorICAgICAgICAgICAgZGF0YS0+c3RhdGUgPSBYU1BM SUNFX1NUQVRFX0FQUExJRUQ7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYU1BMSUNFX0FD VElPTl9SRVZFUlQ6CisgICAgICAgIHJjID0gcmV2ZXJ0X3BheWxvYWQoZGF0YSk7CisgICAgICAg IGlmICggcmMgPT0gMCApCisgICAgICAgICAgICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVf Q0hFQ0tFRDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFhTUExJQ0VfQUNUSU9OX1JFUExB Q0U6CisgICAgICAgIHJjID0gMDsKKyAgICAgICAgLyogTi5COiBVc2UgJ2FwcGxpZWRfbGlzdCcg bWVtYmVyLCBub3QgJ2xpc3QnLiAqLworICAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmVf cmV2ZXJzZSAoIG90aGVyLCB0bXAsICZhcHBsaWVkX2xpc3QsIGFwcGxpZWRfbGlzdCApCisgICAg ICAgIHsKKyAgICAgICAgICAgIG90aGVyLT5yYyA9IHJldmVydF9wYXlsb2FkKG90aGVyKTsKKyAg ICAgICAgICAgIGlmICggb3RoZXItPnJjID09IDAgKQorICAgICAgICAgICAgICAgIG90aGVyLT5z dGF0ZSA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgICAgICAgICAgYnJl YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIHJjID09IDAgKQor ICAgICAgICB7CisgICAgICAgICAgICByYyA9IGFwcGx5X3BheWxvYWQoZGF0YSk7CisgICAgICAg ICAgICBpZiAoIHJjID09IDAgKQorICAgICAgICAgICAgICAgIGRhdGEtPnN0YXRlID0gWFNQTElD RV9TVEFURV9BUFBMSUVEOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVs dDoKKyAgICAgICAgQVNTRVJUX1VOUkVBQ0hBQkxFKCk7CisgICAgICAgIGJyZWFrOworICAgIH0K KworICAgIC8qIFdlIG11c3Qgc2V0IHJjIGFzIHhzcGxpY2VfYWN0aW9uIHNldHMgaXQgdG8gLUVB R0FJTiB3aGVuIGtpY2tpbmcgb2YuICovCisgICAgZGF0YS0+cmMgPSByYzsKK30KKworc3RhdGlj IGludCBzY2hlZHVsZV93b3JrKHN0cnVjdCBwYXlsb2FkICpkYXRhLCB1aW50MzJfdCBjbWQsIHVp bnQzMl90IHRpbWVvdXQpCit7CisgICAgdW5zaWduZWQgaW50IGNwdTsKKworICAgIEFTU0VSVChz cGluX2lzX2xvY2tlZCgmcGF5bG9hZF9sb2NrKSk7CisKKyAgICAvKiBGYWlsIGlmIGFuIG9wZXJh dGlvbiBpcyBhbHJlYWR5IHNjaGVkdWxlZC4gKi8KKyAgICBpZiAoIHhzcGxpY2Vfd29yay5kb193 b3JrICkKKyAgICAgICAgcmV0dXJuIC1FQlVTWTsKKworICAgIGlmICggIWdldF9jcHVfbWFwcygp ICkKKyAgICB7CisgICAgICAgIHByaW50ayhYRU5MT0dfRVJSIFhTUExJQ0UgIiVzOiB1bmFibGUg dG8gZ2V0IGNwdV9tYXBzIGxvY2shXG4iLAorICAgICAgICAgICAgICAgZGF0YS0+bmFtZSk7Cisg ICAgICAgIHJldHVybiAtRUJVU1k7CisgICAgfQorCisgICAgeHNwbGljZV93b3JrLmNtZCA9IGNt ZDsKKyAgICB4c3BsaWNlX3dvcmsuZGF0YSA9IGRhdGE7CisgICAgeHNwbGljZV93b3JrLnRpbWVv dXQgPSB0aW1lb3V0ID86IE1JTExJU0VDUygzMCk7CisKKyAgICBkcHJpbnRrKFhFTkxPR19ERUJV RywgWFNQTElDRSAiJXM6IHRpbWVvdXQgaXMgJSJQUklfc3RpbWUibXNcbiIsCisgICAgICAgICAg ICBkYXRhLT5uYW1lLCB4c3BsaWNlX3dvcmsudGltZW91dCAvIE1JTExJU0VDUygxKSk7CisKKyAg ICBhdG9taWNfc2V0KCZ4c3BsaWNlX3dvcmsuc2VtYXBob3JlLCAtMSk7CisgICAgYXRvbWljX3Nl dCgmeHNwbGljZV93b3JrLmlycV9zZW1hcGhvcmUsIC0xKTsKKworICAgIHhzcGxpY2Vfd29yay5y ZWFkeSA9IDA7CisgICAgc21wX3dtYigpOworICAgIHhzcGxpY2Vfd29yay5kb193b3JrID0gMTsK KyAgICBzbXBfd21iKCk7CisgICAgLyoKKyAgICAgKiBBYm92ZSBzbXBfd21iKCkgZ2l2ZXMgdXMg YSBjb21waWxlciBiYXJyaWVyLCBhcyB3ZSBNVVNUIGRvIHRoaXMKKyAgICAgKiBhZnRlciBzZXR0 aW5nIHRoZSBnbG9iYWwgc3RydWN0dXJlLgorICAgICAqLworICAgIGZvcl9lYWNoX29ubGluZV9j cHUgKCBjcHUgKQorICAgICAgICBwZXJfY3B1KHdvcmtfdG9fZG8sIGNwdSkgPSAxOworCisgICAg cHV0X2NwdV9tYXBzKCk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgcmVzY2hl ZHVsZV9mbih2b2lkICp1bnVzZWQpCit7CisgICAgc21wX21iKCk7IC8qIFN5bmNocm9uaXplIHdp dGggc2V0dGluZyBkb193b3JrICovCisgICAgcmFpc2Vfc29mdGlycShTQ0hFRFVMRV9TT0ZUSVJR KTsKK30KKworc3RhdGljIGludCB4c3BsaWNlX3NwaW4oYXRvbWljX3QgKmNvdW50ZXIsIHNfdGlt ZV90IHRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY3B1 cywgY29uc3QgY2hhciAqcykKK3sKKyAgICBpbnQgcmMgPSAwOworCisgICAgd2hpbGUgKCBhdG9t aWNfcmVhZChjb3VudGVyKSAhPSBjcHVzICYmIE5PVygpIDwgdGltZW91dCApCisgICAgICAgIGNw dV9yZWxheCgpOworCisgICAgLyogTG9nICYgYWJvcnQuICovCisgICAgaWYgKCBhdG9taWNfcmVh ZChjb3VudGVyKSAhPSBjcHVzICkKKyAgICB7CisgICAgICAgIHByaW50ayhYRU5MT0dfRVJSIFhT UExJQ0UgIiVzOiBUaW1lZCBvdXQgb24gJXMgc2VtYXBob3JlICV1LyV1XG4iLAorICAgICAgICAg ICAgICAgeHNwbGljZV93b3JrLmRhdGEtPm5hbWUsIHMsIGF0b21pY19yZWFkKGNvdW50ZXIpLCBj cHVzKTsKKyAgICAgICAgcmMgPSAtRUJVU1k7CisgICAgICAgIHhzcGxpY2Vfd29yay5kYXRhLT5y YyA9IHJjOworICAgICAgICB4c3BsaWNlX3dvcmsuZG9fd29yayA9IDA7CisgICAgICAgIHNtcF93 bWIoKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9CisKKy8qCisgKiBUaGUgbWFpbiBmdW5j dGlvbiB3aGljaCBtYW5hZ2VzIHRoZSB3b3JrIG9mIHF1aWVzY2luZyB0aGUgc3lzdGVtIGFuZAor ICogcGF0Y2hpbmcgY29kZS4KKyAqLwordm9pZCBjaGVja19mb3JfeHNwbGljZV93b3JrKHZvaWQp Cit7CisjZGVmaW5lIEFDVElPTih4KSBbWFNQTElDRV9BQ1RJT05fIyN4XSA9ICN4CisgICAgc3Rh dGljIGNvbnN0IGNoYXIgKmNvbnN0IG5hbWVzW10gPSB7CisgICAgICAgICAgICBBQ1RJT04oQVBQ TFkpLAorICAgICAgICAgICAgQUNUSU9OKFJFVkVSVCksCisgICAgICAgICAgICBBQ1RJT04oUkVQ TEFDRSksCisgICAgfTsKKyAgICB1bnNpZ25lZCBpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgp OworICAgIHNfdGltZV90IHRpbWVvdXQ7CisgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKworICAg IC8qIEZhc3QgcGF0aDogbm8gd29yayB0byBkby4gKi8KKyAgICBpZiAoICFwZXJfY3B1KHdvcmtf dG9fZG8sIGNwdSApICkKKyAgICAgICAgcmV0dXJuOworCisgICAgLyogSW4gY2FzZSB3ZSBhYm9y dGVkLCBvdGhlciBDUFVzIGNhbiBza2lwIHJpZ2h0IGF3YXkuICovCisgICAgaWYgKCAheHNwbGlj ZV93b3JrLmRvX3dvcmsgKQorICAgIHsKKyAgICAgICAgcGVyX2NwdSh3b3JrX3RvX2RvLCBjcHUp ID0gMDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChsb2NhbF9pcnFfaXNf ZW5hYmxlZCgpKTsKKworICAgIC8qIFNldCBhdCAtMSwgc28gd2lsbCBnbyB1cCB0byBudW1fb25s aW5lX2NwdXMgLSAxLiAqLworICAgIGlmICggYXRvbWljX2luY19hbmRfdGVzdCgmeHNwbGljZV93 b3JrLnNlbWFwaG9yZSkgKQorICAgIHsKKyAgICAgICAgc3RydWN0IHBheWxvYWQgKnA7CisgICAg ICAgIHVuc2lnbmVkIGludCBjcHVzOworCisgICAgICAgIHAgPSB4c3BsaWNlX3dvcmsuZGF0YTsK KyAgICAgICAgaWYgKCAhZ2V0X2NwdV9tYXBzKCkgKQorICAgICAgICB7CisgICAgICAgICAgICBw cmludGsoWEVOTE9HX0VSUiBYU1BMSUNFICIlczogQ1BVJXUgLSB1bmFibGUgdG8gZ2V0IGNwdV9t YXBzIGxvY2shXG4iLAorICAgICAgICAgICAgICAgICAgIHAtPm5hbWUsIGNwdSk7CisgICAgICAg ICAgICBwZXJfY3B1KHdvcmtfdG9fZG8sIGNwdSkgPSAwOworICAgICAgICAgICAgeHNwbGljZV93 b3JrLmRhdGEtPnJjID0gLUVCVVNZOworICAgICAgICAgICAgeHNwbGljZV93b3JrLmRvX3dvcmsg PSAwOworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIERvIE5PVCBkZWNyZW1lbnQgc2Vt YXBob3JlIGRvd24gLSBhcyB0aGF0IG1heSBjYXVzZSB0aGUgb3RoZXIKKyAgICAgICAgICAgICAq IENQVSAod2hpY2ggbWF5IGJlIGF0IHRoaXMgcmVhZHkgdG8gaW5jcmVtZW50IGl0KQorICAgICAg ICAgICAgICogdG8gYXNzdW1lIHRoZSByb2xlIG9mIG1hc3RlciBhbmQgdGhlbiBuZWVkbGVzc2x5 IHRpbWUgb3V0CisgICAgICAgICAgICAgKiBvdXQgKGFzIGRvX3dvcmsgaXMgemVybykuCisgICAg ICAgICAgICAgKi8KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvKiAi TWFzayIgTk1Jcy4gKi8KKyAgICAgICAgYXJjaF94c3BsaWNlX21hc2soKTsKKworICAgICAgICBi YXJyaWVyKCk7IC8qIE1VU1QgZG8gaXQgYWZ0ZXIgZ2V0X2NwdV9tYXBzLiAqLworICAgICAgICBj cHVzID0gbnVtX29ubGluZV9jcHVzKCkgLSAxOworCisgICAgICAgIGlmICggY3B1cyApCisgICAg ICAgIHsKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCBYU1BMSUNFICIlczogQ1BV JXUgLSBJUElpbmcgdGhlIG90aGVyICV1IENQVXNcbiIsCisgICAgICAgICAgICAgICAgICAgIHAt Pm5hbWUsIGNwdSwgY3B1cyk7CisgICAgICAgICAgICBzbXBfY2FsbF9mdW5jdGlvbihyZXNjaGVk dWxlX2ZuLCBOVUxMLCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIHRpbWVvdXQgPSB4c3BsaWNl X3dvcmsudGltZW91dCArIE5PVygpOworICAgICAgICBpZiAoIHhzcGxpY2Vfc3BpbigmeHNwbGlj ZV93b3JrLnNlbWFwaG9yZSwgdGltZW91dCwgY3B1cywgIkNQVSIpICkKKyAgICAgICAgICAgIGdv dG8gYWJvcnQ7CisKKyAgICAgICAgLyogQWxsIENQVXMgYXJlIHdhaXRpbmcsIG5vdyBzaWduYWwg dG8gZGlzYWJsZSBJUlFzLiAqLworICAgICAgICB4c3BsaWNlX3dvcmsucmVhZHkgPSAxOworICAg ICAgICBzbXBfd21iKCk7CisKKyAgICAgICAgYXRvbWljX2luYygmeHNwbGljZV93b3JrLmlycV9z ZW1hcGhvcmUpOworICAgICAgICBpZiAoICF4c3BsaWNlX3NwaW4oJnhzcGxpY2Vfd29yay5pcnFf c2VtYXBob3JlLCB0aW1lb3V0LCBjcHVzLCAiSVJRIikgKQorICAgICAgICB7CisgICAgICAgICAg ICBsb2NhbF9pcnFfc2F2ZShmbGFncyk7CisgICAgICAgICAgICAvKiBEbyB0aGUgcGF0Y2hpbmcu ICovCisgICAgICAgICAgICB4c3BsaWNlX2RvX2FjdGlvbigpOworICAgICAgICAgICAgLyogRmx1 c2ggdGhlIENQVSBpLWNhY2hlIHZpYSBDUFVJRCBpbnN0cnVjdGlvbiAob24geDg2KS4gKi8KKyAg ICAgICAgICAgIGFyY2hfeHNwbGljZV9wb3N0X2FjdGlvbigpOworICAgICAgICAgICAgbG9jYWxf aXJxX3Jlc3RvcmUoZmxhZ3MpOworICAgICAgICB9CisgICAgICAgIGFyY2hfeHNwbGljZV91bm1h c2soKTsKKworIGFib3J0OgorICAgICAgICBwZXJfY3B1KHdvcmtfdG9fZG8sIGNwdSkgPSAwOwor ICAgICAgICB4c3BsaWNlX3dvcmsuZG9fd29yayA9IDA7CisKKyAgICAgICAgc21wX3dtYigpOyAv KiBNVVNUIGNvbXBsZXRlIHdyaXRlcyBiZWZvcmUgcHV0X2NwdV9tYXBzKCkuICovCisKKyAgICAg ICAgcHV0X2NwdV9tYXBzKCk7CisKKyAgICAgICAgcHJpbnRrKFhFTkxPR19JTkZPIFhTUExJQ0Ug IiVzIGZpbmlzaGVkICVzIHdpdGggcmM9JWRcbiIsCisgICAgICAgICAgICAgICBwLT5uYW1lLCBu YW1lc1t4c3BsaWNlX3dvcmsuY21kXSwgcC0+cmMpOworICAgIH0KKyAgICBlbHNlCisgICAgewor ICAgICAgICAvKiBXYWl0IGZvciBhbGwgQ1BVcyB0byByZW5kZXp2b3VzLiAqLworICAgICAgICB3 aGlsZSAoIHhzcGxpY2Vfd29yay5kb193b3JrICYmICF4c3BsaWNlX3dvcmsucmVhZHkgKQorICAg ICAgICAgICAgY3B1X3JlbGF4KCk7CisKKyAgICAgICAgLyogRGlzYWJsZSBJUlFzIGFuZCBzaWdu YWwuICovCisgICAgICAgIGxvY2FsX2lycV9zYXZlKGZsYWdzKTsKKyAgICAgICAgYXRvbWljX2lu YygmeHNwbGljZV93b3JrLmlycV9zZW1hcGhvcmUpOworCisgICAgICAgIC8qIFdhaXQgZm9yIHBh dGNoaW5nIHRvIGNvbXBsZXRlLiAqLworICAgICAgICB3aGlsZSAoIHhzcGxpY2Vfd29yay5kb193 b3JrICkKKyAgICAgICAgICAgIGNwdV9yZWxheCgpOworCisgICAgICAgIC8qIFRvIGZsdXNoIG91 dCBwaXBlbGluZS4gKi8KKyAgICAgICAgYXJjaF94c3BsaWNlX3Bvc3RfYWN0aW9uKCk7CisgICAg ICAgIGxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKKworICAgICAgICBwZXJfY3B1KHdvcmtfdG9f ZG8sIGNwdSkgPSAwOworICAgIH0KK30KKwogc3RhdGljIGludCB4c3BsaWNlX2FjdGlvbih4ZW5f c3lzY3RsX3hzcGxpY2VfYWN0aW9uX3QgKmFjdGlvbikKIHsKICAgICBzdHJ1Y3QgcGF5bG9hZCAq ZGF0YTsKQEAgLTUxNSwyNyArOTMxLDI0IEBAIHN0YXRpYyBpbnQgeHNwbGljZV9hY3Rpb24oeGVu X3N5c2N0bF94c3BsaWNlX2FjdGlvbl90ICphY3Rpb24pCiAgICAgY2FzZSBYU1BMSUNFX0FDVElP Tl9SRVZFUlQ6CiAgICAgICAgIGlmICggZGF0YS0+c3RhdGUgPT0gWFNQTElDRV9TVEFURV9BUFBM SUVEICkKICAgICAgICAgewotICAgICAgICAgICAgLyogTm8gaW1wbGVtZW50YXRpb24geWV0LiAq LwotICAgICAgICAgICAgZGF0YS0+c3RhdGUgPSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQ7Ci0gICAg ICAgICAgICBkYXRhLT5yYyA9IDA7CisgICAgICAgICAgICBkYXRhLT5yYyA9IC1FQUdBSU47Cisg ICAgICAgICAgICByYyA9IHNjaGVkdWxlX3dvcmsoZGF0YSwgYWN0aW9uLT5jbWQsIGFjdGlvbi0+ dGltZW91dCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFhTUExJQ0Vf QUNUSU9OX0FQUExZOgogICAgICAgICBpZiAoIGRhdGEtPnN0YXRlID09IFhTUExJQ0VfU1RBVEVf Q0hFQ0tFRCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIC8qIE5vIGltcGxlbWVudGF0aW9uIHll dC4gKi8KLSAgICAgICAgICAgIGRhdGEtPnN0YXRlID0gWFNQTElDRV9TVEFURV9BUFBMSUVEOwot ICAgICAgICAgICAgZGF0YS0+cmMgPSAwOworICAgICAgICAgICAgZGF0YS0+cmMgPSAtRUFHQUlO OworICAgICAgICAgICAgcmMgPSBzY2hlZHVsZV93b3JrKGRhdGEsIGFjdGlvbi0+Y21kLCBhY3Rp b24tPnRpbWVvdXQpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBYU1BM SUNFX0FDVElPTl9SRVBMQUNFOgogICAgICAgICBpZiAoIGRhdGEtPnN0YXRlID09IFhTUExJQ0Vf U1RBVEVfQ0hFQ0tFRCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIC8qIE5vIGltcGxlbWVudGF0 aW9uIHlldC4gKi8KLSAgICAgICAgICAgIGRhdGEtPnN0YXRlID0gWFNQTElDRV9TVEFURV9DSEVD S0VEOwotICAgICAgICAgICAgZGF0YS0+cmMgPSAwOworICAgICAgICAgICAgZGF0YS0+cmMgPSAt RUFHQUlOOworICAgICAgICAgICAgcmMgPSBzY2hlZHVsZV93b3JrKGRhdGEsIGFjdGlvbi0+Y21k LCBhY3Rpb24tPnRpbWVvdXQpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCkBAIC02MDAs NiArMTAxMyw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpzdGF0ZTJzdHIodWludDMyX3Qgc3RhdGUp CiBzdGF0aWMgdm9pZCB4c3BsaWNlX3ByaW50YWxsKHVuc2lnbmVkIGNoYXIga2V5KQogewogICAg IHN0cnVjdCBwYXlsb2FkICpkYXRhOworICAgIHVuc2lnbmVkIGludCBpOwogCiAgICAgaWYgKCAh c3Bpbl90cnlsb2NrKCZwYXlsb2FkX2xvY2spICkKICAgICB7CkBAIC02MDgsMTUgKzEwMjIsMzYg QEAgc3RhdGljIHZvaWQgeHNwbGljZV9wcmludGFsbCh1bnNpZ25lZCBjaGFyIGtleSkKICAgICB9 CiAKICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggZGF0YSwgJnBheWxvYWRfbGlzdCwgbGlzdCAp CisgICAgewogICAgICAgICBwcmludGsoIiBuYW1lPSVzIHN0YXRlPSVzKCVkKSAlcCAoLmRhdGE9 JXAsIC5yb2RhdGE9JXApIHVzaW5nICV6dSBwYWdlcy5cbiIsCiAgICAgICAgICAgICAgICBkYXRh LT5uYW1lLCBzdGF0ZTJzdHIoZGF0YS0+c3RhdGUpLCBkYXRhLT5zdGF0ZSwgZGF0YS0+dGV4dF9h ZGRyLAogICAgICAgICAgICAgICAgZGF0YS0+cndfYWRkciwgZGF0YS0+cm9fYWRkciwgZGF0YS0+ cGFnZXMpOwogCisgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgZGF0YS0+bmZ1bmNzOyBpKysgKQor ICAgICAgICB7CisgICAgICAgICAgICBzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jX2ludGVybmFs ICpmID0gJihkYXRhLT5mdW5jc1tpXSk7CisgICAgICAgICAgICBwcmludGsoIiAgICAlcyBwYXRj aCAlIyJQUkl4NjQiKCV1KSB3aXRoICUjIlBSSXg2NCIoJXUpXG4iLAorICAgICAgICAgICAgICAg ICAgIGYtPm5hbWUsIGYtPm9sZF9hZGRyLCBmLT5vbGRfc2l6ZSwgZi0+bmV3X2FkZHIsIGYtPm5l d19zaXplKTsKKworICAgICAgICAgICAgaWYgKCBpICYmICEoaSAlIDY0KSApCisgICAgICAgICAg ICB7CisgICAgICAgICAgICAgICAgc3Bpbl91bmxvY2soJnBheWxvYWRfbG9jayk7CisgICAgICAg ICAgICAgICAgcHJvY2Vzc19wZW5kaW5nX3NvZnRpcnFzKCk7CisgICAgICAgICAgICAgICAgc3Bp bl9sb2NrKCZwYXlsb2FkX2xvY2spOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor CiAgICAgc3Bpbl91bmxvY2soJnBheWxvYWRfbG9jayk7CiB9CiAKIHN0YXRpYyBpbnQgX19pbml0 IHhzcGxpY2VfaW5pdCh2b2lkKQogeworICAgIEJVSUxEX0JVR19PTiggc2l6ZW9mKHN0cnVjdCB4 c3BsaWNlX3BhdGNoX2Z1bmMpICE9IDY0ICk7CisgICAgQlVJTERfQlVHX09OKCBzaXplb2Yoc3Ry dWN0IHhzcGxpY2VfcGF0Y2hfZnVuY19pbnRlcm5hbCkgIT0gNjQgKTsKKyAgICBCVUlMRF9CVUdf T04oIG9mZnNldG9mKHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMsIG5ld19hZGRyKSAhPSA4ICk7 CisgICAgQlVJTERfQlVHX09OKCBvZmZzZXRvZihzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jLCBu ZXdfc2l6ZSkgIT0gMjQgKTsKKwogICAgIHJlZ2lzdGVyX2tleWhhbmRsZXIoJ3gnLCB4c3BsaWNl X3ByaW50YWxsLCAicHJpbnQgeHNwbGljaW5nIGluZm8iLCAxKTsKIAogICAgIGFyY2hfeHNwbGlj ZV9pbml0KCk7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2N1cnJlbnQuaCBiL3hl bi9pbmNsdWRlL2FzbS14ODYvY3VycmVudC5oCmluZGV4IDQwODMyNjEuLjAyN2FhMGMgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvY3VycmVudC5oCisrKyBiL3hlbi9pbmNsdWRlL2Fz bS14ODYvY3VycmVudC5oCkBAIC04NiwxMCArODYsMTggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qg Y3B1X2luZm8gKmdldF9jcHVfaW5mbyh2b2lkKQogdW5zaWduZWQgbG9uZyBnZXRfc3RhY2tfdHJh Y2VfYm90dG9tKHVuc2lnbmVkIGxvbmcgc3ApOwogdW5zaWduZWQgbG9uZyBnZXRfc3RhY2tfZHVt cF9ib3R0b20gKHVuc2lnbmVkIGxvbmcgc3ApOwogCisjaWZkZWYgQ09ORklHX1hTUExJQ0UKKyMg ZGVmaW5lIF9fQ0hFQ0tfRk9SX1hTUExJQ0VfV09SSyAiY2FsbCBjaGVja19mb3JfeHNwbGljZV93 b3JrOyIKKyNlbHNlCisjIGRlZmluZSBfX0NIRUNLX0ZPUl9YU1BMSUNFX1dPUksgIiIKKyNlbmRp ZgorCiAjZGVmaW5lIHJlc2V0X3N0YWNrX2FuZF9qdW1wKF9fZm4pICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCiAgICAgKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIF9fYXNtX18g X192b2xhdGlsZV9fICggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0gICAgICAgICAgICAibW92ICUwLCUlIl9fT1Aic3A7IGptcCAlYzEiICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAibW92ICUwLCUlIl9fT1Aic3A7IiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfX0NIRUNL X0ZPUl9YU1BMSUNFX1dPUksgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgICAgICAgICAgImptcCAlYzEiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCiAgICAgICAgICAgICA6IDogInIiIChndWVzdF9jcHVfdXNlcl9yZWdz KCkpLCAiaSIgKF9fZm4pIDogIm1lbW9yeSIgKTsgICBcCiAgICAgICAgIHVucmVhY2hhYmxlKCk7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg fSkKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmggYi94ZW4vaW5jbHVkZS94 ZW4veHNwbGljZS5oCmluZGV4IGI4NDNiNWYuLjcxZDc5MzkgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNs dWRlL3hlbi94c3BsaWNlLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaApAQCAtMTEs MTIgKzExLDM3IEBAIHN0cnVjdCB4c3BsaWNlX2VsZl9zZWM7CiBzdHJ1Y3QgeHNwbGljZV9lbGZf c3ltOwogc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9vcDsKIAorI2luY2x1ZGUgPHhlbi9lbGZz dHJ1Y3RzLmg+CiAjaWZkZWYgQ09ORklHX1hTUExJQ0UKIAorLyoKKyAqIFRoZSBzdHJ1Y3R1cmUg d2hpY2ggZGVmaW5lcyB0aGUgcGF0Y2hpbmcuIFRoaXMgaXMgd2hhdCB0aGUgaHlwZXJ2aXNvcgor ICogZXhwZWN0cyBpbiB0aGUgJy54c3BsaWNlLmZ1bmMnIHNlY3Rpb24gb2YgdGhlIEVMRiBmaWxl LgorICoKKyAqIFRoaXMgTVVTVCBiZSBpbiBzeW5jIHdpdGggd2hhdCB0aGUgdG9vbHMgZ2VuZXJh dGUuIFdlIGV4cG9zZQorICogZm9yIHRoZSB0b29scyB0aGUgJ3N0cnVjdCB4c3BsaWNlX3BhdGNo X2Z1bmMnIHdoaWNoIGRvZXMgbm90IGhhdmUKKyAqIHBsYXRmb3JtIHNwZWNpZmljIGVudHJpZXMu CisgKi8KK3N0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmNfaW50ZXJuYWwgeworICAgIGNvbnN0IGNo YXIgKm5hbWU7CisgICAgdWludDY0X3QgbmV3X2FkZHI7CisgICAgdWludDY0X3Qgb2xkX2FkZHI7 CisgICAgdWludDMyX3QgbmV3X3NpemU7CisgICAgdWludDMyX3Qgb2xkX3NpemU7CisgICAgdWlu dDhfdCB2ZXJzaW9uOworICAgIHVuaW9uIHsKKyNpZmRlZiBDT05GSUdfWDg2CisgICAgICAgIHVp bnQ4X3QgdW5kb1s4XTsKKyNlbmRpZgorICAgICAgICB1aW50OF90IHBhZFszMV07CisgICAgfSB1 OworfTsKKwogLyogQ29udmVuaWVuY2UgZGVmaW5lIGZvciBwcmludGsuICovCiAjZGVmaW5lIFhT UExJQ0UgInhzcGxpY2U6ICIKIAogaW50IHhzcGxpY2Vfb3Aoc3RydWN0IHhlbl9zeXNjdGxfeHNw bGljZV9vcCAqKTsKK3ZvaWQgY2hlY2tfZm9yX3hzcGxpY2Vfd29yayh2b2lkKTsKIAogLyogQXJj aCBob29rcy4gKi8KIGludCBhcmNoX3hzcGxpY2VfdmVyaWZ5X2VsZihjb25zdCBzdHJ1Y3QgeHNw bGljZV9lbGYgKmVsZik7CkBAIC00NSw2ICs3MCwyMSBAQCBpbnQgYXJjaF94c3BsaWNlX3NlY3Vy ZSh2b2lkICp2YSwgdW5zaWduZWQgaW50IHBhZ2VzLCBlbnVtIHZhX3R5cGUgdHlwZXMsCiB2b2lk IGFyY2hfeHNwbGljZV9mcmVlX3BheWxvYWQodm9pZCAqdmEpOwogCiB2b2lkIGFyY2hfeHNwbGlj ZV9pbml0KHZvaWQpOworCitpbnQgYXJjaF94c3BsaWNlX3ZlcmlmeV9mdW5jKGNvbnN0IHN0cnVj dCB4c3BsaWNlX3BhdGNoX2Z1bmNfaW50ZXJuYWwgKmZ1bmMpOworLyoKKyAqIFRoZXNlIGZ1bmN0 aW9ucyBhcmUgY2FsbGVkIGFyb3VuZCB0aGUgY3JpdGljYWwgcmVnaW9uIHBhdGNoaW5nIGxpdmUg Y29kZSwKKyAqIGZvciBhbiBhcmNoaXRlY3R1cmUgdG8gdGFrZSBtYWtlIGFwcHJvcHJhdGllIGds b2JhbCBzdGF0ZSBhZGp1c3RtZW50cy4KKyAqLwordm9pZCBhcmNoX3hzcGxpY2VfcGF0Y2hpbmdf ZW50ZXIodm9pZCk7Cit2b2lkIGFyY2hfeHNwbGljZV9wYXRjaGluZ19sZWF2ZSh2b2lkKTsKKwor dm9pZCBhcmNoX3hzcGxpY2VfYXBwbHlfam1wKHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmNfaW50 ZXJuYWwgKmZ1bmMpOwordm9pZCBhcmNoX3hzcGxpY2VfcmV2ZXJ0X2ptcChjb25zdCBzdHJ1Y3Qg eHNwbGljZV9wYXRjaF9mdW5jX2ludGVybmFsICpmdW5jKTsKK3ZvaWQgYXJjaF94c3BsaWNlX3Bv c3RfYWN0aW9uKHZvaWQpOworCit2b2lkIGFyY2hfeHNwbGljZV9tYXNrKHZvaWQpOwordm9pZCBh cmNoX3hzcGxpY2VfdW5tYXNrKHZvaWQpOwogI2Vsc2UKIAogI2luY2x1ZGUgPHhlbi9lcnJuby5o PiAvKiBGb3IgLUVPUE5PVFNVUFAgKi8KQEAgLTUyLDcgKzkyLDcgQEAgc3RhdGljIGlubGluZSBp bnQgeHNwbGljZV9vcChzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX29wICpvcCkKIHsKICAgICBy ZXR1cm4gLUVPUE5PVFNVUFA7CiB9Ci0KK3N0YXRpYyBpbmxpbmUgdm9pZCBjaGVja19mb3JfeHNw bGljZV93b3JrKHZvaWQpIHsgfTsKICNlbmRpZiAvKiBDT05GSUdfWFNQTElDRSAqLwogCiAjZW5k aWYgLyogX19YRU5fWFNQTElDRV9IX18gKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi94 c3BsaWNlX3BhdGNoLmggYi94ZW4vaW5jbHVkZS94ZW4veHNwbGljZV9wYXRjaC5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzMDU4MjYKLS0tIC9kZXYvbnVsbAorKysgYi94 ZW4vaW5jbHVkZS94ZW4veHNwbGljZV9wYXRjaC5oCkBAIC0wLDAgKzEsMjUgQEAKKy8qCisgKiBD b3B5cmlnaHQgKEMpIDIwMTYgQ2l0cml4IFN5c3RlbXMgUiZEIEx0ZC4KKyAqLworCisjaWZuZGVm IF9fWEVOX1hTUExJQ0VfUEFUQ0hfSF9fCisjZGVmaW5lIF9fWEVOX1hTUExJQ0VfUEFUQ0hfSF9f CisKKyNkZWZpbmUgWFNQTElDRV9QQVlMT0FEX1ZFUlNJT04gMQorLyoKKyAqIC54c3BsaWNlLmZ1 bmNzIHN0cnVjdHVyZSBsYXlvdXQgZGVmaW5lZCBpbiB0aGUgYFBheWxvYWQgZm9ybWF0YAorICog c2VjdGlvbiBpbiB0aGUgeFNwbGljZSBkZXNpZ24gZG9jdW1lbnQuCisgKgorICogVGhlIHNpemUg c2hvdWxkIGJlIGV4YWN0bHkgNjQgYnl0ZXMuCisgKi8KK3N0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1 bmMgeworICAgIGNvbnN0IGNoYXIgKm5hbWU7ICAgICAgIC8qIE5hbWUgb2YgZnVuY3Rpb24gdG8g YmUgcGF0Y2hlZC4gKi8KKyAgICB1aW50NjRfdCBuZXdfYWRkcjsKKyAgICB1aW50NjRfdCBvbGRf YWRkcjsgICAgICAvKiBDYW4gYmUgemVybyBhbmQgbmFtZSB3aWxsIGJlIGxvb2tlZCB1cC4gKi8K KyAgICB1aW50MzJfdCBuZXdfc2l6ZTsKKyAgICB1aW50MzJfdCBvbGRfc2l6ZTsKKyAgICB1aW50 OF90IHZlcnNpb247ICAgICAgICAvKiBNVVNUIGJlIFhTUExJQ0VfUEFZTE9BRF9WRVJTSU9OLiAq LworICAgIHVpbnQ4X3QgcGFkWzMxXTsgICAgICAgIC8qIE1VU1QgYmUgemVybyBmaWxsZWQuICov Cit9OworCisjZW5kaWYgLyogX19YRU5fWFNQTElDRV9QQVRDSF9IX18gKi8KLS0gCjIuNS4wCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9y Zy94ZW4tZGV2ZWwK