From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v9 12/27] xsplice: Implement support for applying/reverting/replacing patches. Date: Mon, 25 Apr 2016 11:34:59 -0400 Message-ID: <1461598514-5440-13-git-send-email-konrad.wilk@oracle.com> References: <1461598514-5440-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.bemta6.messagelabs.com ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1auiYf-0004bo-Ue for xen-devel@lists.xenproject.org; Mon, 25 Apr 2016 15:36:22 +0000 In-Reply-To: <1461598514-5440-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: Kevin Tian , Stefano Stabellini , Keir Fraser , Suravee Suthikulpanit , Konrad Rzeszutek Wilk , Jun Nakajima , Julien Grall , Jan Beulich , Boris Ostrovsky List-Id: xen-devel@lists.xenproject.org RnJvbTogUm9zcyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5jb20+CgpJbXBsZW1l bnQgc3VwcG9ydCBmb3IgdGhlIGFwcGx5LCByZXZlcnQgYW5kIHJlcGxhY2UgYWN0aW9ucy4KClRv IHBlcmZvcm0gYW5kIGFjdGlvbiBvbiBhIHBheWxvYWQsIHRoZSBoeXBlcmNhbGwgc2V0cyB1cCBh IGRhdGEKc3RydWN0dXJlIHRvIHNjaGVkdWxlIHRoZSB3b3JrLiAgQSBob29rIGlzIGFkZGVkIGlu IHRoZSByZXNldF9zdGFja19hbmRfanVtcAp0byBjaGVjayBmb3Igd29yayBhbmQgZXhlY3V0ZSBp dCBpZiBuZWVkZWQgKHNwZWNpZmljYWxseSB3ZSBjaGVjayBhbgpwZXItY3B1IGZsYWcgdG8gbWFr ZSB0aGlzIGFzIHF1aWNrIGFzIHBvc3NpYmxlKS4KCkluIHRoaXMgd2F5LCBwYXRjaGVzIGNhbiBi ZSBhcHBsaWVkIHdpdGggYWxsIENQVXMgaWRsZSBhbmQgd2l0aG91dApzdGFja3MuICBUaGUgZmly c3QgQ1BVIHRvIHJ1biBjaGVja19mb3JfeHNwbGljZV93b3JrKCkgYmVjb21lcyB0aGUKbWFzdGVy IGFuZCB0cmlnZ2VycyBhIHJlc2NoZWR1bGUgc29mdGlycSB0byB0cmlnZ2VyIGFsbCB0aGUgb3Ro ZXIgQ1BVcwp0byBlbnRlciBjaGVja19mb3JfeHNwbGljZV93b3JrKCkgd2l0aCBubyBzdGFjay4g IE9uY2UgYWxsIENQVXMKaGF2ZSByZW5kZXp2b3VzZWQsIGFsbCBDUFVzIGRpc2FibGUgdGhlaXIg SVJRcyBhbmQgTk1JcyBhcmUgaWdub3JlZC4KVGhlIHN5c3RlbSBpcyB0aGVuIHF1aXNjaWVudCBh bmQgdGhlIG1hc3RlciBwZXJmb3JtcyB0aGUgYWN0aW9uLgpBZnRlciB0aGlzLCBhbGwgQ1BVcyBl bmFibGUgSVJRcyBhbmQgTk1JcyBhcmUgcmUtZW5hYmxlZC4KCk5vdGUgdGhhdCBpdCBpcyB1bnNh ZmUgdG8gcGF0Y2ggZG9fbm1pIGFuZCB0aGUgeFNwbGljZSBpbnRlcm5hbCBmdW5jdGlvbnMuClBh dGNoaW5nIGZ1bmN0aW9ucyBvbiBOTUkvTUNFIHBhdGggaXMgbGlhYmxlIHRvIGVuZCBpbiBkaXNh c3RlciBvbiB4ODYuClRoaXMgaXMgbm90IGFkZHJlc3NlZCBpbiB0aGlzIHBhdGNoIGFuZCBpcyBt ZW50aW9uZWQgaW4gdGhlCmRlc2lnbiBkb2MgYXMgYSBmdXJ0aGVyIFRPRE8uCgpUaGUgYWN0aW9u IHRvIHBlcmZvcm0gaXMgb25lIG9mOgotIEFQUExZOiBGb3IgZWFjaCBmdW5jdGlvbiBpbiB0aGUg bW9kdWxlLCBzdG9yZSB0aGUgZmlyc3QgYXJjaC1zcGVjaWZpYwogIG51bWJlciBieXRlcyBvZiB0 aGUgb2xkIGZ1bmN0aW9uIGFuZCByZXBsYWNlIGl0IHdpdGggYSBqdW1wIHRvIHRoZQogIG5ldyBm dW5jdGlvbi4gKG9uIHg4NiBpdCBpcyA1IGJ5dGVzLCBvbiBBUk0gaXQgd2lsbCBsaWtleSBiZSA0 IGJ5dGVzKS4KLSBSRVZFUlQ6IENvcHkgdGhlIHByZXZpb3VzbHkgc3RvcmVkIGJ5dGVzIGludG8g dGhlIGZpcnN0IGFyY2gtc3BlY2lmaWMKICBudW1iZXIgb2YgYnl0ZXMgb2YgdGhlIG9sZCBmdW5j dGlvbiAoYWdhaW4sIDUgYnl0ZXMgb24geDg2KS4KLSBSRVBMQUNFOiBSZXZlcnQgZWFjaCBhcHBs aWVkIG1vZHVsZSBhbmQgdGhlbiBhcHBseSB0aGUgbmV3IG1vZHVsZS4KClRvIHByZXZlbnQgYSBk ZWFkbG9jayB3aXRoIGFueSBvdGhlciBiYXJyaWVyIGluIHRoZSBzeXN0ZW0sIHRoZSBtYXN0ZXIK d2lsbCB3YWl0IGZvciB1cCB0byAzMG1zIGJlZm9yZSB0aW1pbmcgb3V0LgpNZWFzdXJlbWVudHMg Zm91bmQgdGhhdCB0aGUgcGF0Y2ggYXBwbGljYXRpb24gdG8gdGFrZSBhYm91dCAxMDAgzrxzIG9u IGEKNzIgQ1BVIHN5c3RlbSwgd2hldGhlciBpZGxlIG9yIGZ1bGx5IGxvYWRlZC4KClNpZ25lZC1v ZmYtYnk6IFJvc3MgTGFnZXJ3YWxsIDxyb3NzLmxhZ2Vyd2FsbEBjaXRyaXguY29tPgpTaWduZWQt b2ZmLWJ5OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+ClJl dmlld2VkLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgpBY2tl ZC1ieTogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KCi0tCkNjOiBTdGVmYW5v IFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CkNjOiBKdWxpZW4gR3JhbGwgPGp1 bGllbi5ncmFsbEBhcm0uY29tPgpDYzogS2VpciBGcmFzZXIgPGtlaXJAeGVuLm9yZz4KQ2M6IEph biBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5j b29wZXIzQGNpdHJpeC5jb20+CkNjOiBCb3JpcyBPc3Ryb3Zza3kgPGJvcmlzLm9zdHJvdnNreUBv cmFjbGUuY29tPgpDYzogU3VyYXZlZSBTdXRoaWt1bHBhbml0IDxzdXJhdmVlLnN1dGhpa3VscGFu aXRAYW1kLmNvbT4KQ2M6IEp1biBOYWthamltYSA8anVuLm5ha2FqaW1hQGludGVsLmNvbT4KQ2M6 IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgoKdjI6IC0gUGx1Y2sgdGhlICdzdHJ1 Y3QgeHNwbGljZV9wYXRjaF9mdW5jJyBpbiB0aGlzIHBhdGNoLgogICAgLSBNb2RpZnkgY29kZSBw ZXIgcmV2aWV3IGNvbW1lbnRzLgogICAgLSBBZGQgbW9yZSBkYXRhIGluIHRoZSBrZXlib2FyZCBo YW5kbGVyLgogICAgLSBSZWRvIHRoZSBwYXRjaGluZyBjb2RlLCBzcGxpdCBpdCBpbiBmdW5jdGlv bnMuCnYzOiAtIEFkZCByZXR1cm5fIG1hY3JvIGZvciBkZWJ1ZyBidWlsZHMuCiAgICAtIE1vdmUg cy9wYXlsb2FkX2xpc3RfbG9jay9wYXlsb2FkX2xpc3QvIHRvIGVhcmxpZXIgcGF0Y2gKICAgIC0g UmVtb3ZlIGNvbnN0IGFuZCB1c2UgRUxGIHR5cGVzIGZvciB4c3BsaWNlX3BhdGNoX2Z1bmMKICAg ICAtIEFkZCBjaGVjayByb3V0aW5lIHRvIGRvIHNpbXBsZSBzYW5pdHkgY2hlY2tzIGZvciB2YXJp b3VzCiAgICAgIHNlY3Rpb25zLgogICAgLSBzLyVwL1BSSXg2NC8gYXMgQVJNIGJ1aWxkcyBjb21w bGFpbi4KICAgIC0gTW92ZSBjb2RlIGFyb3VuZC4gQWRkIG1vcmUgZHByaW50ay4gQWRkIFhTUExJ Q0UgaW4gZnJvbnQgb2YgYWxsCiAgICAgIHByaW50a3MvZHByaW50ay4KICAgICAgUHV0IHRoZSBO TUlzIGJhY2sgaWYgd2UgZmFpbCBwYXRjaGluZy4KICAgICAgQWRkIHBlci1jcHUgdG8gbGVzc2Vu IGNvbnRlbnRpb24gZm9yIGdsb2JhbCBzdHJ1Y3R1cmUuCiAgICAgIEV4dHJhY3QgZnJvbSB4c3Bs aWNlX2RvX3NpbmdsZSBwYXRjaGluZyBjb2RlIGludG8geHNwbGljZV9kb19hY3Rpb24KICAgICAg U3F1YXNoIHhzcGxpY2VfZG9fc2luZ2xlIGFuZCBjaGVja19mb3JfeHNwbGljZV93b3JrIHRvZ2V0 aGVyIHRvCiAgICAgIGhhdmUgYWxsIHJlbmRlenZvdXMgaW4gb25lIHBsYWNlLgogICAgICBNYWRl IFhTUExJQ0VfQUNUSU9OX1JFUExBQ0Ugd29yayBhZ2FpbiAod3JvbmcgbGlzdCBpdGVyYXRvcikK ICAgICAgcy9maW5kX3NwZWNpYWxfc2VjdGlvbnMvcHJlcGFyZV9wYXlsb2FkLwogICAgICBVc2Ug bGlzdF9kZWxfaW5pdCBhbmQgSU5JVF9MSVNUX0hFQUQgZm9yIGFwcGxpZWRfbGlzdAp2NDoKICAg LSBBZGQgY29tbWVudCwgYWRqdXN0IHNwYWNpbmcgZm9yICJUaW1lZCBvdXQgb24gQ1BVIHNlbWFw aG9yZSIKICAgLSBBZGRlZCBDUjAuV1AgbWFuaXB1bGF0aW9ucyB3aGVuIGFsdGVyaW5nIHRoZSAu dGV4dCBvZiBoeXBlcnZpc29yLgogICAtIEFkZGVkIGZpeCBmcm9tIEFuZHJldyBmb3IgQ1IwLldQ IG1hbmlwdWxhdGlvbi4KdjU6IC0gTWFkZSB4c3BsaWNlX3BhdGNoX2Z1bmMgdXNlIHVpbnRYWF90 IGluc3RlYWQgb2YgRUxGXyB0eXBlcyB0byBlYXN5CiAgICAgIG1ha2luZyBpdCB3b3JrIHVuZGVy IEFSTSAoMzJiaXQpLiBBZGQgbW9yZSBCVUlMRC1CVUctT04gY2hlY2tzLgogICAgLSBBZGQgbW9y ZSBCVUlMRF9PTiBjaGVja3MuIFNwcmlua2xlIG5ld2xpbmVzLgp2NjogUmViYXNlIG9uICJhcm0v eDg2OiBBbHRlciBubWlfY2FsbGJhY2tfdCB0eXBlZGVmIgogICAtIERyb3AgdGhlIHJlY3Vyc2l2 ZSBzcGlubG9jayB1c2FnZS4KICAgLSBNb3ZlIE5NSSBjYWxsYmFja3MgaW4gYXJjaCBzcGVjaWZp Yy4KICAgLSBGb2xkIHRoZSAnY2hlY2tfZm9yX3hzcGxpY2Vfd29yaycgaW4gcmVzZXRfc3RhY2tf YW5kX2p1bXAKICAgLSBBZGQgYXJjaCBzcGVjaWZpYyBjaGVjayBmb3IgLnhzcGxpY2UuZnVuY3Mu CiAgIC0gU2VwZXJhdGUgZXh0ZXJuYWwgYW5kIGludGVybmFsIHN0cnVjdHVyZSBvZiAueHNwbGlj ZS5mdW5jcy4KICAgLSBDaGFuZ2VkIHBlciBKYW4ncyByZXZpZXcKICAgLSBNb2RpZmllZCB0aGUg LnhzcGxpY2UuZnVuY3MgY2hlY2tzCnY3OgogICAtIE1vZGlmaWVkIG9sZF9wdHIgdG8gdm9pZCog aW5zdGVhZCBvZiB1aW50OF90KgogICAtIE1vZGlmaWVkIHRoZSB4c3BsaWNlX3BhdGNoX2Z1bmNf aW50ZXJuYWwgZm9yIEFSTTMyIHRvIGhhdmUgcGFkZGluZy4KICAgLSBVc2VkICNpZiBCSVRTX1BF Ul9MT05HID09IDY0IGZvciB0aGUgeHNwbGljZV9wYXRjaF9mdW5jX2ludGVybmFsIGFsb25nCiAg ICAgd2l0aCBpZm5kZWYgQ09ORklHX0FSTSBmb3IgdGhlIHVuZG8gKHdoaWNoIG1heSBiZSBkaWZm ZXJlbnQgc2l6ZSBvbiBBUk02NCkKdjg6CiAgLSBBZGQgImlzIGVtcHR5IiBpZiBzcGVjaWFsIHNl Y3Rpb25zIGFyZSBpbiBmYWN0IGVtcHR5LgogIC0gQWRkZWQgQW5kcmV3J3MgUmV2aWV3ZWQtYnk6 CiAgLSBSZWJhc2Ugb24gdjcuMiBvZiAgeDg2L21tOiBJbnRyb2R1Y2UgbW9kaWZ5X3hlbl9tYXBw aW5ncygpCiAgLSBDaGFuZ2Ugc29tZSBvZiBwcmludGsgdG8gZHByaW50ayBhbmQgc29tZSBvZiB0 aGUgZHByaW50ayB0byBwcmludGsuCiAgLSBNYWtlIHRoZSB4c3BsaWNlX3BhdGNoX2Z1bmMgKGFu ZCB0aGUgaW50ZXJuYWwpIHN0cnVjdHVyZSBoYXZlIHVpbnQzMl90CiAgICAoaW5zdGVhZCBvZiB1 aW50NjRfdCkgaWYgQklUU19QRVJfTE9ORz09MzIuIFRoaXMgbWFrZXMgdGhlIHNpemUgYW5kCiAg ICBvZmZzZXQgZGlmZmVyZW50IHNvIG5vdGUgdGhhdCBpbiB0aGUgZGVzaWduIGFuZCBjb21tb24g Y29kZS4KICAtIEFkZCAjdW5kZWYgQUNUSU9OCiAgLSBHdWFyZCBzdHJ1Y3QgeHNwbGljZV9wYXRj aF9mdW5jIGluIHN5c2N0bC5oIHdpdGggX19YRU5fXyBhcyB0b29sc3RhY2tzCiAgICB3aWxsIGZh aWwgdG8gY29tcGlsZS4gV2UgZG8gaGF2ZSBCSVRTX1BFUl9MT05HIGRlZmluZWQgaW4geGNfYml0 b3BzLmggYnV0CiAgICB0aGF0IHdpbGwgZ28gYXdheSAoYW5kIGFsc28gdGhhdCBtYWNybyB1c2Vz IHNpemVvZiBhbmQgdGhlIHByZS1wcm9jZXNzb3IKICAgIHdpbGwgY2hva2Ugb24gdGhhdCkuCiAg LSBEcm9wcGVkIEp1bGllbidzIEFja2VkIGFzIEkgcmVwbGFjZWQgQklUU19QRVJfTE9ORy9DT05G SUdfQVJNXzMyLgogICAgKFN0ZWZhbm8gaXMgT0sgd2l0aCBpdCwgYnV0IHdvdWxkIHByZWZlciBC SVRTX1BFUl9MT05HLCBKYW4gZG9lcyBub3Qgd2FudAogICAgQklUU19QRVJfTE9ORykuCnY5OiBF eHBvc2UgdGhlIHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgb2xkX2FkZHIgYW5kIG5ld19hZGRy IGFzIHZvaWQKICAgIGluc3RlYWQgb2YgdWludDMyX3Qgb3IgdWludDY0X3QuCiAgLSBBZGRlZCBK dWxpZW4nIEFjayBiYWNrLgogIC0gUmVuYW1lIHBhZCB0byBvcGFxdWUuCiAgLSBBZGRlZCBjb21t ZW50IGluIGFpZGxlX2xvb3AuCiAgLSBTcXVhc2ggaW50ZXJuYWwgYW5kIHB1YmxpYyBvZiAneHNw bGljZV9wYXRjaF9mdW5jJwogIC0gRml4ZWQgcmVtYWluaWcgc2l6ZW9mIHVzZS4KICAtIFJlbW92 ZWQgcmVmZXJlbmNlIHRvIE1DRQogIC0gRml4ZWQgY29tbWVudCBzdHlsZXMuCiAgLSBVc2UgYm9v bF90IGluIGNoZWNrX3NwZWNpYWxfc2VjdGlvbnMKICAtIEFkZCBhICNkZWZpbmUgZm9yIC54c3Bs aWNlLmZ1bmNzLgogIC0gUmVtb3ZlIGZ1bGwgc3RvcHMgZnJvbSBwcmludGsKICAtIEZpeCB4c3Bs aWNlX2RvX2FjdGlvbiBwZXIgSmFuJ3MgcHVuY2hsaXN0CiAgLSBVc2Ugc3Bpbl9sb2NrX3RyeSBp biBrZXloYW5kbGVyCiAgLSBSZW1vdmUgbGVhZGluZyB1bmRlcnNjb3JlcyBmcm9tIF9fQ0hFQ0tf Rk9SX1hTUExJQ0VfV09SSwogIC0gRG9uJ3QgZmFpbCBjb21waWxhdGlvbiBvbiBHQ0M1IC0gd2Ug TVVTVCBoYXZlIHJjIHNldC4KICAtIERvbid0IGJhaWwgb3V0IGlmIGZpbmRpbmcgIXNoX3R5cGUg YXMgdGhvc2UgYXJlIGZvciAucmVsYSBvciAuZGVidWcKICAgIGFuZCB3aGlsZSB3ZSBkb24ndCBu ZWVkIHRvIGFsbG9jYXRlIGl0IChhcyB3ZSBoYWQgYWxyZWFkeSBkb25lCiAgICB0aGUgcmVsb2Nh dGlvbiksIGRvIGNvbnRpbnVlLgogIC0gTWFrZSBhcHBsaWVkX2xpc3QgYmUgYW4gUkNVIHR5cGUg dG8gZ3VhcmQgYWdhaW5zdCBpbmZpbml0ZSBsb29wcwogICAgd2hlbiBzZWFyY2hpbmcgdGhlIGFw cGxpZWRfbGlzdC4KICAtIERyb3BwZWQgdGhlIGlycV9zZW1hcGhvcmUgYW5kIGFyZSByZS11c2lu ZyB0aGUgc2VtYXBob3JlIGF0b21pYyB3aGVuCiAgICBDUFVzIGhhdmUgcmVuZGV6dm91c2VkIGFu ZCBhcmUgcmVhZHkgdG8gZ28gaW4gSVJRIGRpc2FibGUgcGhhc2UuCi0tLQogeGVuL2FyY2gvYXJt L3hzcGxpY2UuYyAgICAgICAgfCAgMzMgKysrCiB4ZW4vYXJjaC94ODYvZG9tYWluLmMgICAgICAg ICB8ICAgNiArCiB4ZW4vYXJjaC94ODYveHNwbGljZS5jICAgICAgICB8ICA3NiArKysrKysrCiB4 ZW4vY29tbW9uL3hzcGxpY2UuYyAgICAgICAgICB8IDQ2OSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0KIHhlbi9pbmNsdWRlL2FzbS14ODYvY3VycmVudC5oIHwgIDEw ICstCiB4ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmggICB8ICAyMCArKwogeGVuL2luY2x1ZGUv eGVuL3hzcGxpY2UuaCAgICAgfCAgMjEgKysKIDcgZmlsZXMgY2hhbmdlZCwgNjIzIGluc2VydGlv bnMoKyksIDEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS94c3BsaWNl LmMgYi94ZW4vYXJjaC9hcm0veHNwbGljZS5jCmluZGV4IGM3YmNjOGUuLmQ1NzM1YzYgMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL2FybS94c3BsaWNlLmMKKysrIGIveGVuL2FyY2gvYXJtL3hzcGxpY2Uu YwpAQCAtNiw2ICs2LDM5IEBACiAjaW5jbHVkZSA8eGVuL3hzcGxpY2VfZWxmLmg+CiAjaW5jbHVk ZSA8eGVuL3hzcGxpY2UuaD4KIAordm9pZCBhcmNoX3hzcGxpY2VfcGF0Y2hpbmdfZW50ZXIodm9p ZCkKK3sKK30KKwordm9pZCBhcmNoX3hzcGxpY2VfcGF0Y2hpbmdfbGVhdmUodm9pZCkKK3sKK30K KworaW50IGFyY2hfeHNwbGljZV92ZXJpZnlfZnVuYyhjb25zdCBzdHJ1Y3QgeHNwbGljZV9wYXRj aF9mdW5jICpmdW5jKQoreworICAgIHJldHVybiAtRU5PU1lTOworfQorCit2b2lkIGFyY2hfeHNw bGljZV9hcHBseV9qbXAoc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuYyAqZnVuYykKK3sKK30KKwor dm9pZCBhcmNoX3hzcGxpY2VfcmV2ZXJ0X2ptcChjb25zdCBzdHJ1Y3QgeHNwbGljZV9wYXRjaF9m dW5jICpmdW5jKQoreworfQorCit2b2lkIGFyY2hfeHNwbGljZV9wb3N0X2FjdGlvbih2b2lkKQor eworfQorCit2b2lkIGFyY2hfeHNwbGljZV9tYXNrKHZvaWQpCit7Cit9CisKK3ZvaWQgYXJjaF94 c3BsaWNlX3VubWFzayh2b2lkKQoreworfQorCiBpbnQgYXJjaF94c3BsaWNlX3ZlcmlmeV9lbGYo Y29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCiB7CiAgICAgcmV0dXJuIC1FTk9TWVM7CmRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZG9tYWluLmMgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMK aW5kZXggZTkzZmYyMC4uZDEzYjI3MiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2RvbWFpbi5j CisrKyBiL3hlbi9hcmNoL3g4Ni9kb21haW4uYwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUg PHhlbi9jcHUuaD4KICNpbmNsdWRlIDx4ZW4vd2FpdC5oPgogI2luY2x1ZGUgPHhlbi9ndWVzdF9h Y2Nlc3MuaD4KKyNpbmNsdWRlIDx4ZW4veHNwbGljZS5oPgogI2luY2x1ZGUgPHB1YmxpYy9zeXNj dGwuaD4KICNpbmNsdWRlIDxwdWJsaWMvaHZtL2h2bV92Y3B1Lmg+CiAjaW5jbHVkZSA8YXNtL3Jl Z3MuaD4KQEAgLTEyMCw2ICsxMjEsMTEgQEAgc3RhdGljIHZvaWQgaWRsZV9sb29wKHZvaWQpCiAg ICAgICAgICgqcG1faWRsZSkoKTsKICAgICAgICAgZG9fdGFza2xldCgpOwogICAgICAgICBkb19z b2Z0aXJxKCk7CisgICAgICAgIC8qCisgICAgICAgICAqIFdlIE1VU1QgYmUgbGFzdCAob3IgYmVm b3JlIHBtX2lkbGUpLiBPdGhlcndpc2UgYWZ0ZXIgd2UgZ2V0IHRoZQorICAgICAgICAgKiBzb2Z0 aXJxIHdlIHdvdWxkIGV4ZWN1dGUgcG1faWRsZSAoYW5kIHNsZWVwKSBhbmQgbm90IHBhdGNoLgor ICAgICAgICAgKi8KKyAgICAgICAgY2hlY2tfZm9yX3hzcGxpY2Vfd29yaygpOwogICAgIH0KIH0K IApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3hzcGxpY2UuYyBiL3hlbi9hcmNoL3g4Ni94c3Bs aWNlLmMKaW5kZXggZjk1NDYzZS4uNDkzZmVmZSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3hz cGxpY2UuYworKysgYi94ZW4vYXJjaC94ODYveHNwbGljZS5jCkBAIC0xMCw2ICsxMCw4MiBAQAog I2luY2x1ZGUgPHhlbi94c3BsaWNlX2VsZi5oPgogI2luY2x1ZGUgPHhlbi94c3BsaWNlLmg+CiAK KyNpbmNsdWRlIDxhc20vbm1pLmg+CisKKyNkZWZpbmUgUEFUQ0hfSU5TTl9TSVpFIDUKKwordm9p ZCBhcmNoX3hzcGxpY2VfcGF0Y2hpbmdfZW50ZXIodm9pZCkKK3sKKyAgICAvKiBEaXNhYmxlIFdQ IHRvIGFsbG93IGNoYW5nZXMgdG8gcmVhZC1vbmx5IHBhZ2VzLiAqLworICAgIHdyaXRlX2NyMChy ZWFkX2NyMCgpICYgflg4Nl9DUjBfV1ApOworfQorCit2b2lkIGFyY2hfeHNwbGljZV9wYXRjaGlu Z19sZWF2ZSh2b2lkKQoreworICAgIC8qIFJlaW5zdGF0ZSBXUC4gKi8KKyAgICB3cml0ZV9jcjAo cmVhZF9jcjAoKSB8IFg4Nl9DUjBfV1ApOworfQorCitpbnQgYXJjaF94c3BsaWNlX3ZlcmlmeV9m dW5jKGNvbnN0IHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgKmZ1bmMpCit7CisgICAgLyogTm8g Tk9QIHBhdGNoaW5nIHlldC4gKi8KKyAgICBpZiAoICFmdW5jLT5uZXdfc2l6ZSApCisgICAgICAg IHJldHVybiAtRU9QTk9UU1VQUDsKKworICAgIGlmICggZnVuYy0+b2xkX3NpemUgPCBQQVRDSF9J TlNOX1NJWkUgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIHJldHVybiAwOworfQor Cit2b2lkIGFyY2hfeHNwbGljZV9hcHBseV9qbXAoc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuYyAq ZnVuYykKK3sKKyAgICBpbnQzMl90IHZhbDsKKyAgICB1aW50OF90ICpvbGRfcHRyOworCisgICAg QlVJTERfQlVHX09OKFBBVENIX0lOU05fU0laRSA+IHNpemVvZihmdW5jLT5vcGFxdWUpKTsKKyAg ICBCVUlMRF9CVUdfT04oUEFUQ0hfSU5TTl9TSVpFICE9ICgxICsgc2l6ZW9mKHZhbCkpKTsKKwor ICAgIG9sZF9wdHIgPSBmdW5jLT5vbGRfYWRkcjsKKyAgICBtZW1jcHkoZnVuYy0+b3BhcXVlLCBv bGRfcHRyLCBQQVRDSF9JTlNOX1NJWkUpOworCisgICAgKm9sZF9wdHIrKyA9IDB4ZTk7IC8qIFJl bGF0aXZlIGp1bXAgKi8KKyAgICB2YWwgPSBmdW5jLT5uZXdfYWRkciAtIGZ1bmMtPm9sZF9hZGRy IC0gUEFUQ0hfSU5TTl9TSVpFOworICAgIG1lbWNweShvbGRfcHRyLCAmdmFsLCBzaXplb2YodmFs KSk7Cit9CisKK3ZvaWQgYXJjaF94c3BsaWNlX3JldmVydF9qbXAoY29uc3Qgc3RydWN0IHhzcGxp Y2VfcGF0Y2hfZnVuYyAqZnVuYykKK3sKKyAgICBtZW1jcHkoZnVuYy0+b2xkX2FkZHIsIGZ1bmMt Pm9wYXF1ZSwgUEFUQ0hfSU5TTl9TSVpFKTsKK30KKworLyogU2VyaWFsaXNlIHRoZSBDUFUgcGlw ZWxpbmUuICovCit2b2lkIGFyY2hfeHNwbGljZV9wb3N0X2FjdGlvbih2b2lkKQoreworICAgIGNw dWlkX2VheCgwKTsKK30KKworc3RhdGljIG5taV9jYWxsYmFja190ICpzYXZlZF9ubWlfY2FsbGJh Y2s7CisvKgorICogTm90ZSB0aGF0IGJlY2F1c2Ugb2YgdGhpcyBOT1AgY29kZSB0aGUgZG9fbm1p IGlzIG5vdCBzYWZlbHkgcGF0Y2hhYmxlLgorICogQWxzbyBpZiB3ZSBkbyByZWNlaXZlICdyZWFs JyBOTUlzIHdlIGhhdmUgbG9zdCB0aGVtLgorICovCitzdGF0aWMgaW50IG1hc2tfbm1pX2NhbGxi YWNrKGNvbnN0IHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLCBpbnQgY3B1KQoreworICAgIC8q IFRPRE86IEhhbmRsZSBtaXNzaW5nIE5NSS9NQ0UuKi8KKyAgICByZXR1cm4gMTsKK30KKwordm9p ZCBhcmNoX3hzcGxpY2VfbWFzayh2b2lkKQoreworICAgIHNhdmVkX25taV9jYWxsYmFjayA9IHNl dF9ubWlfY2FsbGJhY2sobWFza19ubWlfY2FsbGJhY2spOworfQorCit2b2lkIGFyY2hfeHNwbGlj ZV91bm1hc2sodm9pZCkKK3sKKyAgICBzZXRfbm1pX2NhbGxiYWNrKHNhdmVkX25taV9jYWxsYmFj ayk7Cit9CisKIGludCBhcmNoX3hzcGxpY2VfdmVyaWZ5X2VsZihjb25zdCBzdHJ1Y3QgeHNwbGlj ZV9lbGYgKmVsZikKIHsKIApkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi94c3BsaWNlLmMgYi94ZW4v Y29tbW9uL3hzcGxpY2UuYwppbmRleCBmZDMzYTUzLi5lZmIzOTZhIDEwMDY0NAotLS0gYS94ZW4v Y29tbW9uL3hzcGxpY2UuYworKysgYi94ZW4vY29tbW9uL3hzcGxpY2UuYwpAQCAtMyw2ICszLDcg QEAKICAqCiAgKi8KIAorI2luY2x1ZGUgPHhlbi9jcHUuaD4KICNpbmNsdWRlIDx4ZW4vZXJyLmg+ CiAjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgogI2luY2x1ZGUgPHhlbi9rZXloYW5kbGVy Lmg+CkBAIC0xMSwxOCArMTIsMzAgQEAKICNpbmNsdWRlIDx4ZW4vbW0uaD4KICNpbmNsdWRlIDx4 ZW4vc2NoZWQuaD4KICNpbmNsdWRlIDx4ZW4vc21wLmg+CisjaW5jbHVkZSA8eGVuL3NvZnRpcnEu aD4KICNpbmNsdWRlIDx4ZW4vc3BpbmxvY2suaD4KICNpbmNsdWRlIDx4ZW4vdm1hcC5oPgorI2lu Y2x1ZGUgPHhlbi93YWl0Lmg+CiAjaW5jbHVkZSA8eGVuL3hzcGxpY2VfZWxmLmg+CiAjaW5jbHVk ZSA8eGVuL3hzcGxpY2UuaD4KIAogI2luY2x1ZGUgPGFzbS9ldmVudC5oPgotI2luY2x1ZGUgPHB1 YmxpYy9zeXNjdGwuaD4KIAotLyogUHJvdGVjdHMgYWdhaW5zdCBwYXlsb2FkX2xpc3Qgb3BlcmF0 aW9ucy4gKi8KKy8qCisgKiBQcm90ZWN0cyBhZ2FpbnN0IHBheWxvYWRfbGlzdCBvcGVyYXRpb25z IGFuZCBhbHNvIGFsbG93cyBvbmx5IG9uZQorICogY2FsbGVyIGluIHNjaGVkdWxlX3dvcmsuCisg Ki8KIHN0YXRpYyBERUZJTkVfU1BJTkxPQ0socGF5bG9hZF9sb2NrKTsKIHN0YXRpYyBMSVNUX0hF QUQocGF5bG9hZF9saXN0KTsKIAorLyoKKyAqIFBhdGNoZXMgd2hpY2ggaGF2ZSBiZWVuIGFwcGxp ZWQuIE5lZWQgUkNVIGluIGNhc2Ugd2UgY3Jhc2ggKGFuZCB0aGVuCisgKiB0cmFwcyBjb2RlIHdv dWxkIGl0ZXJhdGUgdmlhIGFwcGxpZWRfbGlzdCkgd2hlbiBhZGRpbmcgZW50cmllcyBvbiB0aGUg bGlzdC4KKyAqCisgKiBOb3RlOiBUaGVyZSBhcmUgbm8gJ3JjdV9hcHBsaWVkX2xvY2snIGFzIHdl IGRvbid0IGl0ZXJhdGUgeWV0IHRoZSBsaXN0LgorICovCitzdGF0aWMgTElTVF9IRUFEKGFwcGxp ZWRfbGlzdCk7CisKIHN0YXRpYyB1bnNpZ25lZCBpbnQgcGF5bG9hZF9jbnQ7CiBzdGF0aWMgdW5z aWduZWQgaW50IHBheWxvYWRfdmVyc2lvbiA9IDE7CiAKQEAgLTM3LDkgKzUwLDM1IEBAIHN0cnVj dCBwYXlsb2FkIHsKICAgICBjb25zdCB2b2lkICpyb19hZGRyOyAgICAgICAgICAgICAgICAgLyog VmlydHVhbCBhZGRyZXNzIG9mIC5yb2RhdGEuICovCiAgICAgc2l6ZV90IHJvX3NpemU7ICAgICAg ICAgICAgICAgICAgICAgIC8qIC4uIGFuZCBpdHMgc2l6ZSAoaWYgYW55KS4gKi8KICAgICB1bnNp Z25lZCBpbnQgcGFnZXM7ICAgICAgICAgICAgICAgICAgLyogVG90YWwgcGFnZXMgZm9yIFt0ZXh0 LHJ3LHJvXV9hZGRyICovCisgICAgc3RydWN0IGxpc3RfaGVhZCBhcHBsaWVkX2xpc3Q7ICAgICAg IC8qIExpbmtlZCB0byAnYXBwbGllZF9saXN0Jy4gKi8KKyAgICBzdHJ1Y3QgeHNwbGljZV9wYXRj aF9mdW5jICpmdW5jczsgICAgLyogVGhlIGFycmF5IG9mIGZ1bmN0aW9ucyB0byBwYXRjaC4gKi8K KyAgICB1bnNpZ25lZCBpbnQgbmZ1bmNzOyAgICAgICAgICAgICAgICAgLyogTnIgb2YgZnVuY3Rp b25zIHRvIHBhdGNoLiAqLwogICAgIGNoYXIgbmFtZVtYRU5fWFNQTElDRV9OQU1FX1NJWkVdOyAg ICAvKiBOYW1lIG9mIGl0LiAqLwogfTsKIAorLyogRGVmaW5lcyBhbiBvdXRzdGFuZGluZyBwYXRj aGluZyBhY3Rpb24uICovCitzdHJ1Y3QgeHNwbGljZV93b3JrCit7CisgICAgYXRvbWljX3Qgc2Vt YXBob3JlOyAgICAgICAgICAvKiBVc2VkIHRvIHJlbmRlenZvdXMgQ1BVcyBpbgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfZm9yX3hzcGxpY2Vfd29yay4gKi8KKyAg ICB1aW50MzJfdCB0aW1lb3V0OyAgICAgICAgICAgIC8qIFRpbWVvdXQgdG8gZG8gdGhlIG9wZXJh dGlvbi4gKi8KKyAgICBzdHJ1Y3QgcGF5bG9hZCAqZGF0YTsgICAgICAgIC8qIFRoZSBwYXlsb2Fk IG9uIHdoaWNoIHRvIGFjdC4gKi8KKyAgICB2b2xhdGlsZSBib29sX3QgZG9fd29yazsgICAgIC8q IFNpZ25hbHMgd29yayB0byBkby4gKi8KKyAgICB2b2xhdGlsZSBib29sX3QgcmVhZHk7ICAgICAg IC8qIFNpZ25hbHMgYWxsIENQVXMgc3luY2hyb25pemVkLiAqLworICAgIHVuc2lnbmVkIGludCBj bWQ7ICAgICAgICAgICAgLyogQWN0aW9uIHJlcXVlc3Q6IFhTUExJQ0VfQUNUSU9OXyogKi8KK307 CisKKy8qIFRoZXJlIGNhbiBiZSBvbmx5IG9uZSBvdXRzdGFuZGluZyBwYXRjaGluZyBhY3Rpb24u ICovCitzdGF0aWMgc3RydWN0IHhzcGxpY2Vfd29yayB4c3BsaWNlX3dvcms7CisKKy8qCisgKiBJ bmRpY2F0ZSB3aGV0aGVyIHRoZSBDUFUgbmVlZHMgdG8gY29uc3VsdCB4c3BsaWNlX3dvcmsgc3Ry dWN0dXJlLgorICogV2Ugd2FudCBhbiBwZXItY3B1IGRhdGEgc3RydWN0dXJlIG90aGVyd2lzZSB0 aGUgY2hlY2tfZm9yX3hzcGxpY2Vfd29yaworICogd291bGQgaGFtbWVyIGEgZ2xvYmFsIHhzcGxp Y2Vfd29yayBzdHJ1Y3R1cmUgb24gZXZlcnkgZ3Vlc3QgVk1FWElULgorICogSGF2aW5nIGFuIHBl ci1jcHUgbGVzc2VucyB0aGUgbG9hZC4KKyAqLworc3RhdGljIERFRklORV9QRVJfQ1BVKGJvb2xf dCwgd29ya190b19kbyk7CisKIHN0YXRpYyBpbnQgZ2V0X25hbWUoY29uc3QgeGVuX3hzcGxpY2Vf bmFtZV90ICpuYW1lLCBjaGFyICpuKQogewogICAgIGlmICggIW5hbWUtPnNpemUgfHwgbmFtZS0+ c2l6ZSA+IFhFTl9YU1BMSUNFX05BTUVfU0laRSApCkBAIC0yNjAsNiArMjk5LDg4IEBAIHN0YXRp YyBpbnQgc2VjdXJlX3BheWxvYWQoc3RydWN0IHBheWxvYWQgKnBheWxvYWQsIHN0cnVjdCB4c3Bs aWNlX2VsZiAqZWxmKQogICAgIHJldHVybiByYzsKIH0KIAorc3RhdGljIGludCBjaGVja19zcGVj aWFsX3NlY3Rpb25zKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQoreworICAgIHVuc2ln bmVkIGludCBpOworICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBuYW1lc1tdID0geyBFTEZf WFNQTElDRV9GVU5DIH07CisgICAgYm9vbF90IGNvdW50W0FSUkFZX1NJWkUobmFtZXMpXSA9IHsg MCB9OworCisgICAgZm9yICggaSA9IDA7IGkgPCBBUlJBWV9TSVpFKG5hbWVzKTsgaSsrICkKKyAg ICB7CisgICAgICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnNlYzsKKworICAgICAg ICBzZWMgPSB4c3BsaWNlX2VsZl9zZWNfYnlfbmFtZShlbGYsIG5hbWVzW2ldKTsKKyAgICAgICAg aWYgKCAhc2VjICkKKyAgICAgICAgeworICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBY U1BMSUNFICIlczogJXMgaXMgbWlzc2luZyFcbiIsCisgICAgICAgICAgICAgICAgICAgIGVsZi0+ bmFtZSwgbmFtZXNbaV0pOworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0K KworICAgICAgICBpZiAoICFzZWMtPnNlYy0+c2hfc2l6ZSApCisgICAgICAgIHsKKyAgICAgICAg ICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6ICVzIGlzIGVtcHR5IVxuIiwKKyAg ICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBuYW1lc1tpXSk7CisgICAgICAgICAgICByZXR1 cm4gLUVJTlZBTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoICsrY291bnRbaV0gPiAxICkKKyAg ICAgICAgeworICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogJXMg d2FzIHNlZW4gbW9yZSB0aGFuIG9uY2UhXG4iLAorICAgICAgICAgICAgICAgICAgICBlbGYtPm5h bWUsIG5hbWVzW2ldKTsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9Cisg ICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcHJlcGFyZV9wYXlsb2FkKHN0 cnVjdCBwYXlsb2FkICpwYXlsb2FkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHhzcGxpY2VfZWxmICplbGYpCit7CisgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAq c2VjOworICAgIHVuc2lnbmVkIGludCBpOworICAgIHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMg KmY7CisKKyAgICBzZWMgPSB4c3BsaWNlX2VsZl9zZWNfYnlfbmFtZShlbGYsIEVMRl9YU1BMSUNF X0ZVTkMpOworICAgIEFTU0VSVChzZWMpOworICAgIGlmICggc2VjLT5zZWMtPnNoX3NpemUgJSBz aXplb2YoKnBheWxvYWQtPmZ1bmNzKSApCisgICAgeworICAgICAgICBkcHJpbnRrKFhFTkxPR19F UlIsIFhTUExJQ0UgIiVzOiBXcm9uZyBzaXplIG9mICJFTEZfWFNQTElDRV9GVU5DIiFcbiIsCisg ICAgICAgICAgICAgICAgZWxmLT5uYW1lKTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAg fQorCisgICAgcGF5bG9hZC0+ZnVuY3MgPSBzZWMtPmxvYWRfYWRkcjsKKyAgICBwYXlsb2FkLT5u ZnVuY3MgPSBzZWMtPnNlYy0+c2hfc2l6ZSAvIHNpemVvZigqcGF5bG9hZC0+ZnVuY3MpOworCisg ICAgZm9yICggaSA9IDA7IGkgPCBwYXlsb2FkLT5uZnVuY3M7IGkrKyApCisgICAgeworICAgICAg ICBpbnQgcmM7CisKKyAgICAgICAgZiA9ICYocGF5bG9hZC0+ZnVuY3NbaV0pOworCisgICAgICAg IGlmICggZi0+dmVyc2lvbiAhPSBYU1BMSUNFX1BBWUxPQURfVkVSU0lPTiApCisgICAgICAgIHsK KyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFdyb25nIHZlcnNp b24gKCV1KS4gRXhwZWN0ZWQgJWQhXG4iLAorICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUs IGYtPnZlcnNpb24sIFhTUExJQ0VfUEFZTE9BRF9WRVJTSU9OKTsKKyAgICAgICAgICAgIHJldHVy biAtRU9QTk9UU1VQUDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggIWYtPm5ld19hZGRyIHx8 ICFmLT5uZXdfc2l6ZSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VS UiwgWFNQTElDRSAiJXM6IEFkZHJlc3Mgb3Igc2l6ZSBmaWVsZHMgYXJlIHplcm8hXG4iLAorICAg ICAgICAgICAgICAgICAgICBlbGYtPm5hbWUpOworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 CisgICAgICAgIH0KKworICAgICAgICByYyA9IGFyY2hfeHNwbGljZV92ZXJpZnlfZnVuYyhmKTsK KyAgICAgICAgaWYgKCByYyApCisgICAgICAgICAgICByZXR1cm4gcmM7CisgICAgfQorCisgICAg cmV0dXJuIDA7Cit9CisKIHN0YXRpYyB2b2lkIGZyZWVfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAq ZGF0YSkKIHsKICAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnBheWxvYWRfbG9jaykpOwpAQCAt MjkxLDYgKzQxMiwxNCBAQCBzdGF0aWMgaW50IGxvYWRfcGF5bG9hZF9kYXRhKHN0cnVjdCBwYXls b2FkICpwYXlsb2FkLCB2b2lkICpyYXcsIHNpemVfdCBsZW4pCiAgICAgaWYgKCByYyApCiAgICAg ICAgIGdvdG8gb3V0OwogCisgICAgcmMgPSBjaGVja19zcGVjaWFsX3NlY3Rpb25zKCZlbGYpOwor ICAgIGlmICggcmMgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJjID0gcHJlcGFyZV9wYXls b2FkKHBheWxvYWQsICZlbGYpOworICAgIGlmICggcmMgKQorICAgICAgICBnb3RvIG91dDsKKwog ICAgIHJjID0gc2VjdXJlX3BheWxvYWQocGF5bG9hZCwgJmVsZik7CiAKICBvdXQ6CkBAIC0zNDcs NiArNDc2LDcgQEAgc3RhdGljIGludCB4c3BsaWNlX3VwbG9hZCh4ZW5fc3lzY3RsX3hzcGxpY2Vf dXBsb2FkX3QgKnVwbG9hZCkKIAogICAgIGRhdGEtPnN0YXRlID0gWFNQTElDRV9TVEFURV9DSEVD S0VEOwogICAgIElOSVRfTElTVF9IRUFEKCZkYXRhLT5saXN0KTsKKyAgICBJTklUX0xJU1RfSEVB RCgmZGF0YS0+YXBwbGllZF9saXN0KTsKIAogICAgIGxpc3RfYWRkX3RhaWwoJmRhdGEtPmxpc3Qs ICZwYXlsb2FkX2xpc3QpOwogICAgIHBheWxvYWRfY250Kys7CkBAIC00NTcsNiArNTg3LDMwNSBA QCBzdGF0aWMgaW50IHhzcGxpY2VfbGlzdCh4ZW5fc3lzY3RsX3hzcGxpY2VfbGlzdF90ICpsaXN0 KQogICAgIHJldHVybiByYyA/IDogaWR4OwogfQogCisvKgorICogVGhlIGZvbGxvd2luZyBmdW5j dGlvbnMgZ2V0IHRoZSBDUFVzIGludG8gYW4gYXBwcm9wcmlhdGUgc3RhdGUgYW5kCisgKiBhcHBs eSAob3IgcmV2ZXJ0KSBlYWNoIG9mIHRoZSBwYXlsb2FkJ3MgZnVuY3Rpb25zLiBUaGlzIGlzIG5l ZWRlZAorICogZm9yIFhFTl9TWVNDVExfWFNQTElDRV9BQ1RJT04gb3BlcmF0aW9uIChzZWUgeHNw bGljZV9hY3Rpb24pLgorICovCisKK3N0YXRpYyBpbnQgYXBwbHlfcGF5bG9hZChzdHJ1Y3QgcGF5 bG9hZCAqZGF0YSkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIHByaW50ayhYRU5MT0df SU5GTyBYU1BMSUNFICIlczogQXBwbHlpbmcgJXUgZnVuY3Rpb25zXG4iLAorICAgICAgICAgICAg ZGF0YS0+bmFtZSwgZGF0YS0+bmZ1bmNzKTsKKworICAgIGFyY2hfeHNwbGljZV9wYXRjaGluZ19l bnRlcigpOworCisgICAgZm9yICggaSA9IDA7IGkgPCBkYXRhLT5uZnVuY3M7IGkrKyApCisgICAg ICAgIGFyY2hfeHNwbGljZV9hcHBseV9qbXAoJmRhdGEtPmZ1bmNzW2ldKTsKKworICAgIGFyY2hf eHNwbGljZV9wYXRjaGluZ19sZWF2ZSgpOworCisgICAgbGlzdF9hZGRfdGFpbF9yY3UoJmRhdGEt PmFwcGxpZWRfbGlzdCwgJmFwcGxpZWRfbGlzdCk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3Rh dGljIGludCByZXZlcnRfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqZGF0YSkKK3sKKyAgICB1bnNp Z25lZCBpbnQgaTsKKworICAgIHByaW50ayhYRU5MT0dfSU5GTyBYU1BMSUNFICIlczogUmV2ZXJ0 aW5nXG4iLCBkYXRhLT5uYW1lKTsKKworICAgIGFyY2hfeHNwbGljZV9wYXRjaGluZ19lbnRlcigp OworCisgICAgZm9yICggaSA9IDA7IGkgPCBkYXRhLT5uZnVuY3M7IGkrKyApCisgICAgICAgIGFy Y2hfeHNwbGljZV9yZXZlcnRfam1wKCZkYXRhLT5mdW5jc1tpXSk7CisKKyAgICBhcmNoX3hzcGxp Y2VfcGF0Y2hpbmdfbGVhdmUoKTsKKworICAgIGxpc3RfZGVsX3JjdSgmZGF0YS0+YXBwbGllZF9s aXN0KTsKKworICAgIHJldHVybiAwOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBpcyBleGVj dXRlZCBoYXZpbmcgYWxsIG90aGVyIENQVXMgd2l0aCBubyBkZWVwIHN0YWNrICh3ZSBtYXkKKyAq IGhhdmUgY3B1X2lkbGUgb24gaXQpIGFuZCBJUlFzIGRpc2FibGVkLgorICovCitzdGF0aWMgdm9p ZCB4c3BsaWNlX2RvX2FjdGlvbih2b2lkKQoreworICAgIGludCByYzsKKyAgICBzdHJ1Y3QgcGF5 bG9hZCAqZGF0YSwgKm90aGVyLCAqdG1wOworCisgICAgZGF0YSA9IHhzcGxpY2Vfd29yay5kYXRh OworICAgIC8qCisgICAgICogVGhpcyBmdW5jdGlvbiBhbmQgdGhlIHRyYW5zaXRpb24gZnJvbSBh c20gdG8gQyBjb2RlIHNob3VsZCBiZSB0aGUgb25seQorICAgICAqIG9uZSBvbiBhbnkgc3RhY2su IE5vIG5lZWQgdG8gbG9jayB0aGUgcGF5bG9hZCBsaXN0IG9yIGFwcGxpZWQgbGlzdC4KKyAgICAg Ki8KKyAgICBzd2l0Y2ggKCB4c3BsaWNlX3dvcmsuY21kICkKKyAgICB7CisgICAgY2FzZSBYU1BM SUNFX0FDVElPTl9BUFBMWToKKyAgICAgICAgcmMgPSBhcHBseV9wYXlsb2FkKGRhdGEpOworICAg ICAgICBpZiAoIHJjID09IDAgKQorICAgICAgICAgICAgZGF0YS0+c3RhdGUgPSBYU1BMSUNFX1NU QVRFX0FQUExJRUQ7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYU1BMSUNFX0FDVElPTl9S RVZFUlQ6CisgICAgICAgIHJjID0gcmV2ZXJ0X3BheWxvYWQoZGF0YSk7CisgICAgICAgIGlmICgg cmMgPT0gMCApCisgICAgICAgICAgICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tF RDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFhTUExJQ0VfQUNUSU9OX1JFUExBQ0U6Cisg ICAgICAgIHJjID0gMDsKKyAgICAgICAgLyoKKwkgKiBOLkI6IFVzZSAnYXBwbGllZF9saXN0JyBt ZW1iZXIsIG5vdCAnbGlzdCcuIFdlIGFsc28gYWJ1c2UgdGhlCisJICogdGhlICdub3JtYWwnIGxp c3QgaXRlcmF0b3IgYXMgdGhlIGxpc3QgaXMgYW4gUkNVIG9uZS4KKwkgKi8KKyAgICAgICAgbGlz dF9mb3JfZWFjaF9lbnRyeV9zYWZlX3JldmVyc2UgKCBvdGhlciwgdG1wLCAmYXBwbGllZF9saXN0 LCBhcHBsaWVkX2xpc3QgKQorICAgICAgICB7CisgICAgICAgICAgICBvdGhlci0+cmMgPSByZXZl cnRfcGF5bG9hZChvdGhlcik7CisgICAgICAgICAgICBpZiAoIG90aGVyLT5yYyA9PSAwICkKKyAg ICAgICAgICAgICAgICBvdGhlci0+c3RhdGUgPSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQ7CisgICAg ICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmMgPSAtRUlOVkFM OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg ICAgICAgaWYgKCByYyA9PSAwICkKKyAgICAgICAgeworICAgICAgICAgICAgcmMgPSBhcHBseV9w YXlsb2FkKGRhdGEpOworICAgICAgICAgICAgaWYgKCByYyA9PSAwICkKKyAgICAgICAgICAgICAg ICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQVBQTElFRDsKKyAgICAgICAgfQorICAgICAg ICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJjID0gLUVJTlZBTDsgLyogTWFrZSBH Q0M1IGhhcHB5LiAqLworICAgICAgICBBU1NFUlRfVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgYnJl YWs7CisgICAgfQorCisgICAgLyogV2UgbXVzdCBzZXQgcmMgYXMgeHNwbGljZV9hY3Rpb24gc2V0 cyBpdCB0byAtRUFHQUlOIHdoZW4ga2lja2luZyBvZi4gKi8KKyAgICBkYXRhLT5yYyA9IHJjOwor fQorCitzdGF0aWMgaW50IHNjaGVkdWxlX3dvcmsoc3RydWN0IHBheWxvYWQgKmRhdGEsIHVpbnQz Ml90IGNtZCwgdWludDMyX3QgdGltZW91dCkKK3sKKyAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQo JnBheWxvYWRfbG9jaykpOworCisgICAgLyogRmFpbCBpZiBhbiBvcGVyYXRpb24gaXMgYWxyZWFk eSBzY2hlZHVsZWQuICovCisgICAgaWYgKCB4c3BsaWNlX3dvcmsuZG9fd29yayApCisgICAgICAg IHJldHVybiAtRUJVU1k7CisKKyAgICBpZiAoICFnZXRfY3B1X21hcHMoKSApCisgICAgeworICAg ICAgICBwcmludGsoWEVOTE9HX0VSUiBYU1BMSUNFICIlczogdW5hYmxlIHRvIGdldCBjcHVfbWFw cyBsb2NrIVxuIiwKKyAgICAgICAgICAgICAgIGRhdGEtPm5hbWUpOworICAgICAgICByZXR1cm4g LUVCVVNZOworICAgIH0KKworICAgIHhzcGxpY2Vfd29yay5jbWQgPSBjbWQ7CisgICAgeHNwbGlj ZV93b3JrLmRhdGEgPSBkYXRhOworICAgIHhzcGxpY2Vfd29yay50aW1lb3V0ID0gdGltZW91dCA/ OiBNSUxMSVNFQ1MoMzApOworCisgICAgZHByaW50ayhYRU5MT0dfREVCVUcsIFhTUExJQ0UgIiVz OiB0aW1lb3V0IGlzICUiUFJJX3N0aW1lIm1zXG4iLAorICAgICAgICAgICAgZGF0YS0+bmFtZSwg eHNwbGljZV93b3JrLnRpbWVvdXQgLyBNSUxMSVNFQ1MoMSkpOworCisgICAgYXRvbWljX3NldCgm eHNwbGljZV93b3JrLnNlbWFwaG9yZSwgLTEpOworCisgICAgeHNwbGljZV93b3JrLnJlYWR5ID0g MDsKKworICAgIHNtcF93bWIoKTsKKworICAgIHhzcGxpY2Vfd29yay5kb193b3JrID0gMTsKKyAg ICB0aGlzX2NwdSh3b3JrX3RvX2RvKSA9IDE7CisKKyAgICBwdXRfY3B1X21hcHMoKTsKKworICAg IHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCByZXNjaGVkdWxlX2ZuKHZvaWQgKnVudXNlZCkK K3sKKyAgICB0aGlzX2NwdSh3b3JrX3RvX2RvKSA9IDE7CisgICAgcmFpc2Vfc29mdGlycShTQ0hF RFVMRV9TT0ZUSVJRKTsKK30KKworc3RhdGljIGludCB4c3BsaWNlX3NwaW4oYXRvbWljX3QgKmNv dW50ZXIsIHNfdGltZV90IHRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgY3B1cywgY29uc3QgY2hhciAqcykKK3sKKyAgICBpbnQgcmMgPSAwOworCisgICAg d2hpbGUgKCBhdG9taWNfcmVhZChjb3VudGVyKSAhPSBjcHVzICYmIE5PVygpIDwgdGltZW91dCAp CisgICAgICAgIGNwdV9yZWxheCgpOworCisgICAgLyogTG9nICYgYWJvcnQuICovCisgICAgaWYg KCBhdG9taWNfcmVhZChjb3VudGVyKSAhPSBjcHVzICkKKyAgICB7CisgICAgICAgIHByaW50ayhY RU5MT0dfRVJSIFhTUExJQ0UgIiVzOiBUaW1lZCBvdXQgb24gc2VtYXBob3JlIGluICVzIHF1aWVz Y2UgcGhhc2UgJXUvJXVcbiIsCisgICAgICAgICAgICAgICB4c3BsaWNlX3dvcmsuZGF0YS0+bmFt ZSwgcywgYXRvbWljX3JlYWQoY291bnRlciksIGNwdXMpOworICAgICAgICByYyA9IC1FQlVTWTsK KyAgICAgICAgeHNwbGljZV93b3JrLmRhdGEtPnJjID0gcmM7CisgICAgICAgIHNtcF93bWIoKTsK KyAgICAgICAgeHNwbGljZV93b3JrLmRvX3dvcmsgPSAwOworICAgIH0KKworICAgIHJldHVybiBy YzsKK30KKworLyoKKyAqIFRoZSBtYWluIGZ1bmN0aW9uIHdoaWNoIG1hbmFnZXMgdGhlIHdvcmsg b2YgcXVpZXNjaW5nIHRoZSBzeXN0ZW0gYW5kCisgKiBwYXRjaGluZyBjb2RlLgorICovCit2b2lk IGNoZWNrX2Zvcl94c3BsaWNlX3dvcmsodm9pZCkKK3sKKyNkZWZpbmUgQUNUSU9OKHgpIFtYU1BM SUNFX0FDVElPTl8jI3hdID0gI3gKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgbmFtZXNb XSA9IHsKKyAgICAgICAgICAgIEFDVElPTihBUFBMWSksCisgICAgICAgICAgICBBQ1RJT04oUkVW RVJUKSwKKyAgICAgICAgICAgIEFDVElPTihSRVBMQUNFKSwKKyAgICB9OworI3VuZGVmIEFDVElP TgorICAgIHVuc2lnbmVkIGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CisgICAgc190aW1l X3QgdGltZW91dDsKKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworCisgICAgLyogRmFzdCBwYXRo OiBubyB3b3JrIHRvIGRvLiAqLworICAgIGlmICggIXBlcl9jcHUod29ya190b19kbywgY3B1ICkg KQorICAgICAgICByZXR1cm47CisKKyAgICBzbXBfcm1iKCk7CisgICAgLyogSW4gY2FzZSB3ZSBh Ym9ydGVkLCBvdGhlciBDUFVzIGNhbiBza2lwIHJpZ2h0IGF3YXkuICovCisgICAgaWYgKCAheHNw bGljZV93b3JrLmRvX3dvcmsgKQorICAgIHsKKyAgICAgICAgcGVyX2NwdSh3b3JrX3RvX2RvLCBj cHUpID0gMDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChsb2NhbF9pcnFf aXNfZW5hYmxlZCgpKTsKKworICAgIC8qIFNldCBhdCAtMSwgc28gd2lsbCBnbyB1cCB0byBudW1f b25saW5lX2NwdXMgLSAxLiAqLworICAgIGlmICggYXRvbWljX2luY19hbmRfdGVzdCgmeHNwbGlj ZV93b3JrLnNlbWFwaG9yZSkgKQorICAgIHsKKyAgICAgICAgc3RydWN0IHBheWxvYWQgKnA7Cisg ICAgICAgIHVuc2lnbmVkIGludCBjcHVzOworCisgICAgICAgIHAgPSB4c3BsaWNlX3dvcmsuZGF0 YTsKKyAgICAgICAgaWYgKCAhZ2V0X2NwdV9tYXBzKCkgKQorICAgICAgICB7CisgICAgICAgICAg ICBwcmludGsoWEVOTE9HX0VSUiBYU1BMSUNFICIlczogQ1BVJXUgLSB1bmFibGUgdG8gZ2V0IGNw dV9tYXBzIGxvY2shXG4iLAorICAgICAgICAgICAgICAgICAgIHAtPm5hbWUsIGNwdSk7CisgICAg ICAgICAgICBwZXJfY3B1KHdvcmtfdG9fZG8sIGNwdSkgPSAwOworICAgICAgICAgICAgeHNwbGlj ZV93b3JrLmRhdGEtPnJjID0gLUVCVVNZOworICAgICAgICAgICAgc21wX3dtYigpOworICAgICAg ICAgICAgeHNwbGljZV93b3JrLmRvX3dvcmsgPSAwOworICAgICAgICAgICAgLyoKKyAgICAgICAg ICAgICAqIERvIE5PVCBkZWNyZW1lbnQgeHNwbGljZV93b3JrLnNlbWFwaG9yZSBkb3duIC0gYXMg dGhhdCBtYXkgY2F1c2UKKyAgICAgICAgICAgICAqIHRoZSBvdGhlciBDUFUgKHdoaWNoIG1heSBi ZSBhdCB0aGlzIHBvaW50IHJlYWR5IHRvIGluY3JlbWVudCBpdCkKKyAgICAgICAgICAgICAqIHRv IGFzc3VtZSB0aGUgcm9sZSBvZiBtYXN0ZXIgYW5kIHRoZW4gbmVlZGxlc3NseSB0aW1lIG91dAor ICAgICAgICAgICAgICogb3V0IChhcyBkb193b3JrIGlzIHplcm8pLgorICAgICAgICAgICAgICov CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLyogIk1hc2siIE5NSXMu ICovCisgICAgICAgIGFyY2hfeHNwbGljZV9tYXNrKCk7CisKKyAgICAgICAgYmFycmllcigpOyAv KiBNVVNUIGRvIGl0IGFmdGVyIGdldF9jcHVfbWFwcy4gKi8KKyAgICAgICAgY3B1cyA9IG51bV9v bmxpbmVfY3B1cygpIC0gMTsKKworICAgICAgICBpZiAoIGNwdXMgKQorICAgICAgICB7CisgICAg ICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgWFNQTElDRSAiJXM6IENQVSV1IC0gSVBJaW5n IHRoZSBvdGhlciAldSBDUFVzXG4iLAorICAgICAgICAgICAgICAgICAgICBwLT5uYW1lLCBjcHUs IGNwdXMpOworICAgICAgICAgICAgc21wX2NhbGxfZnVuY3Rpb24ocmVzY2hlZHVsZV9mbiwgTlVM TCwgMCk7CisgICAgICAgIH0KKworICAgICAgICB0aW1lb3V0ID0geHNwbGljZV93b3JrLnRpbWVv dXQgKyBOT1coKTsKKyAgICAgICAgaWYgKCB4c3BsaWNlX3NwaW4oJnhzcGxpY2Vfd29yay5zZW1h cGhvcmUsIHRpbWVvdXQsIGNwdXMsICJDUFUiKSApCisgICAgICAgICAgICBnb3RvIGFib3J0Owor CisgICAgICAgIC8qIEFsbCBDUFVzIGFyZSB3YWl0aW5nLCBub3cgc2lnbmFsIHRvIGRpc2FibGUg SVJRcy4gKi8KKyAgICAgICAgYXRvbWljX3NldCgmeHNwbGljZV93b3JrLnNlbWFwaG9yZSwgMCk7 CisgICAgICAgIC8qCisgICAgICAgICAqIE1VU1QgaGF2ZSBhIGJhcnJpZXIgYWZ0ZXIgc2VtYXBo b3JlIHNvIHRoYXQgdGhlIG90aGVyIENQVXMgZG9uJ3QKKyAgICAgICAgICogbGVhayBvdXQgb2Yg dGhlICdXYWl0IGZvciBhbGwgQ1BVcyB0byByZW5kZXp2b3VzJyBsb29wIGFuZCBpbmNyZW1lbnQK KyAgICAgICAgICogJ3NlbWFwaG9yZScgYmVmb3JlIHdlIHNldCBpdCB0byB6ZXJvLgorICAgICAg ICAgKi8KKyAgICAgICAgc21wX3dtYigpOworICAgICAgICB4c3BsaWNlX3dvcmsucmVhZHkgPSAx OworCisgICAgICAgIGlmICggIXhzcGxpY2Vfc3BpbigmeHNwbGljZV93b3JrLnNlbWFwaG9yZSwg dGltZW91dCwgY3B1cywgIklSUSIpICkKKyAgICAgICAgeworICAgICAgICAgICAgbG9jYWxfaXJx X3NhdmUoZmxhZ3MpOworICAgICAgICAgICAgLyogRG8gdGhlIHBhdGNoaW5nLiAqLworICAgICAg ICAgICAgeHNwbGljZV9kb19hY3Rpb24oKTsKKyAgICAgICAgICAgIC8qIFNlcmlhbGl6ZSBhbmQg Zmx1c2ggb3V0IHRoZSBDUFUgdmlhIENQVUlEIGluc3RydWN0aW9uIChvbiB4ODYpLiAqLworICAg ICAgICAgICAgYXJjaF94c3BsaWNlX3Bvc3RfYWN0aW9uKCk7CisgICAgICAgICAgICBsb2NhbF9p cnFfcmVzdG9yZShmbGFncyk7CisgICAgICAgIH0KKyAgICAgICAgYXJjaF94c3BsaWNlX3VubWFz aygpOworCisgYWJvcnQ6CisgICAgICAgIHBlcl9jcHUod29ya190b19kbywgY3B1KSA9IDA7Cisg ICAgICAgIHhzcGxpY2Vfd29yay5kb193b3JrID0gMDsKKworICAgICAgICAvKiBwdXRfY3B1X21h cHMgaGFzIGFuIGJhcnJpZXIoKS4gKi8KKyAgICAgICAgcHV0X2NwdV9tYXBzKCk7CisKKyAgICAg ICAgcHJpbnRrKFhFTkxPR19JTkZPIFhTUExJQ0UgIiVzIGZpbmlzaGVkICVzIHdpdGggcmM9JWRc biIsCisgICAgICAgICAgICAgICBwLT5uYW1lLCBuYW1lc1t4c3BsaWNlX3dvcmsuY21kXSwgcC0+ cmMpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAvKiBXYWl0IGZvciBhbGwgQ1BV cyB0byByZW5kZXp2b3VzLiAqLworICAgICAgICB3aGlsZSAoIHhzcGxpY2Vfd29yay5kb193b3Jr ICYmICF4c3BsaWNlX3dvcmsucmVhZHkgKQorICAgICAgICAgICAgY3B1X3JlbGF4KCk7CisKKyAg ICAgICAgLyogRGlzYWJsZSBJUlFzIGFuZCBzaWduYWwuICovCisgICAgICAgIGxvY2FsX2lycV9z YXZlKGZsYWdzKTsKKyAgICAgICAgLyoKKyAgICAgICAgICogV2UgcmUtdXNlIHRoZSBzZW1wYWhv cmUsIHNvIE1VU1QgaGF2ZSBpdCByZXNldCBieSBtYXN0ZXIgYmVmb3JlCisgICAgICAgICAqIHdl IGV4aXQgdGhlIGxvb3AgYWJvdmUuCisgICAgICAgICAqLworICAgICAgICBhdG9taWNfaW5jKCZ4 c3BsaWNlX3dvcmsuc2VtYXBob3JlKTsKKworICAgICAgICAvKiBXYWl0IGZvciBwYXRjaGluZyB0 byBjb21wbGV0ZS4gKi8KKyAgICAgICAgd2hpbGUgKCB4c3BsaWNlX3dvcmsuZG9fd29yayApCisg ICAgICAgICAgICBjcHVfcmVsYXgoKTsKKworICAgICAgICAvKiBUbyBmbHVzaCBvdXQgcGlwZWxp bmUuICovCisgICAgICAgIGFyY2hfeHNwbGljZV9wb3N0X2FjdGlvbigpOworICAgICAgICBsb2Nh bF9pcnFfcmVzdG9yZShmbGFncyk7CisKKyAgICAgICAgcGVyX2NwdSh3b3JrX3RvX2RvLCBjcHUp ID0gMDsKKyAgICB9Cit9CisKIHN0YXRpYyBpbnQgeHNwbGljZV9hY3Rpb24oeGVuX3N5c2N0bF94 c3BsaWNlX2FjdGlvbl90ICphY3Rpb24pCiB7CiAgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7CkBA IC01MDUsMjcgKzkzNCwyNCBAQCBzdGF0aWMgaW50IHhzcGxpY2VfYWN0aW9uKHhlbl9zeXNjdGxf eHNwbGljZV9hY3Rpb25fdCAqYWN0aW9uKQogICAgIGNhc2UgWFNQTElDRV9BQ1RJT05fUkVWRVJU OgogICAgICAgICBpZiAoIGRhdGEtPnN0YXRlID09IFhTUExJQ0VfU1RBVEVfQVBQTElFRCApCiAg ICAgICAgIHsKLSAgICAgICAgICAgIC8qIE5vIGltcGxlbWVudGF0aW9uIHlldC4gKi8KLSAgICAg ICAgICAgIGRhdGEtPnN0YXRlID0gWFNQTElDRV9TVEFURV9DSEVDS0VEOwotICAgICAgICAgICAg ZGF0YS0+cmMgPSAwOworICAgICAgICAgICAgZGF0YS0+cmMgPSAtRUFHQUlOOworICAgICAgICAg ICAgcmMgPSBzY2hlZHVsZV93b3JrKGRhdGEsIGFjdGlvbi0+Y21kLCBhY3Rpb24tPnRpbWVvdXQp OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBYU1BMSUNFX0FDVElPTl9B UFBMWToKICAgICAgICAgaWYgKCBkYXRhLT5zdGF0ZSA9PSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQg KQogICAgICAgICB7Ci0gICAgICAgICAgICAvKiBObyBpbXBsZW1lbnRhdGlvbiB5ZXQuICovCi0g ICAgICAgICAgICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQVBQTElFRDsKLSAgICAgICAg ICAgIGRhdGEtPnJjID0gMDsKKyAgICAgICAgICAgIGRhdGEtPnJjID0gLUVBR0FJTjsKKyAgICAg ICAgICAgIHJjID0gc2NoZWR1bGVfd29yayhkYXRhLCBhY3Rpb24tPmNtZCwgYWN0aW9uLT50aW1l b3V0KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgWFNQTElDRV9BQ1RJ T05fUkVQTEFDRToKICAgICAgICAgaWYgKCBkYXRhLT5zdGF0ZSA9PSBYU1BMSUNFX1NUQVRFX0NI RUNLRUQgKQogICAgICAgICB7Ci0gICAgICAgICAgICAvKiBObyBpbXBsZW1lbnRhdGlvbiB5ZXQu ICovCi0gICAgICAgICAgICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRDsKLSAg ICAgICAgICAgIGRhdGEtPnJjID0gMDsKKyAgICAgICAgICAgIGRhdGEtPnJjID0gLUVBR0FJTjsK KyAgICAgICAgICAgIHJjID0gc2NoZWR1bGVfd29yayhkYXRhLCBhY3Rpb24tPmNtZCwgYWN0aW9u LT50aW1lb3V0KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIApAQCAtNTkwLDYgKzEwMTYs NyBAQCBzdGF0aWMgY29uc3QgY2hhciAqc3RhdGUyc3RyKHVpbnQzMl90IHN0YXRlKQogc3RhdGlj IHZvaWQgeHNwbGljZV9wcmludGFsbCh1bnNpZ25lZCBjaGFyIGtleSkKIHsKICAgICBzdHJ1Y3Qg cGF5bG9hZCAqZGF0YTsKKyAgICB1bnNpZ25lZCBpbnQgaTsKIAogICAgIHByaW50aygiJyVjJyBw cmVzc2VkIC0gRHVtcGluZyBhbGwgeHNwbGljZSBwYXRjaGVzXG4iLCBrZXkpOwogCkBAIC02MDAs MTAgKzEwMjcsMzAgQEAgc3RhdGljIHZvaWQgeHNwbGljZV9wcmludGFsbCh1bnNpZ25lZCBjaGFy IGtleSkKICAgICB9CiAKICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggZGF0YSwgJnBheWxvYWRf bGlzdCwgbGlzdCApCisgICAgewogICAgICAgICBwcmludGsoIiBuYW1lPSVzIHN0YXRlPSVzKCVk KSAlcCAoLmRhdGE9JXAsIC5yb2RhdGE9JXApIHVzaW5nICV1IHBhZ2VzLlxuIiwKICAgICAgICAg ICAgICAgIGRhdGEtPm5hbWUsIHN0YXRlMnN0cihkYXRhLT5zdGF0ZSksIGRhdGEtPnN0YXRlLCBk YXRhLT50ZXh0X2FkZHIsCiAgICAgICAgICAgICAgICBkYXRhLT5yd19hZGRyLCBkYXRhLT5yb19h ZGRyLCBkYXRhLT5wYWdlcyk7CiAKKyAgICAgICAgZm9yICggaSA9IDA7IGkgPCBkYXRhLT5uZnVu Y3M7IGkrKyApCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1 bmMgKmYgPSAmKGRhdGEtPmZ1bmNzW2ldKTsKKyAgICAgICAgICAgIHByaW50aygiICAgICVzIHBh dGNoICVwKCV1KSB3aXRoICVwICgldSlcbiIsCisgICAgICAgICAgICAgICAgICAgZi0+bmFtZSwg Zi0+b2xkX2FkZHIsIGYtPm9sZF9zaXplLCBmLT5uZXdfYWRkciwgZi0+bmV3X3NpemUpOworCisg ICAgICAgICAgICBpZiAoIGkgJiYgIShpICUgNjQpICkKKyAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICBzcGluX3VubG9jaygmcGF5bG9hZF9sb2NrKTsKKyAgICAgICAgICAgICAgICBwcm9j ZXNzX3BlbmRpbmdfc29mdGlycXMoKTsKKyAgICAgICAgICAgICAgICBpZiAoIHNwaW5fdHJ5bG9j aygmcGF5bG9hZF9sb2NrKSApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg ICBwcmludGsoIkNvdWxkbid0IHJlYWNxdWlyZSBsb2NrLiBUcnkgYWdhaW4uXG4iKTsKKyAgICAg ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K KyAgICAgICAgfQorICAgIH0KKwogICAgIHNwaW5fdW5sb2NrKCZwYXlsb2FkX2xvY2spOwogfQog CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2N1cnJlbnQuaCBiL3hlbi9pbmNsdWRl L2FzbS14ODYvY3VycmVudC5oCmluZGV4IDQwODMyNjEuLjczYTcyMDkgMTAwNjQ0Ci0tLSBhL3hl bi9pbmNsdWRlL2FzbS14ODYvY3VycmVudC5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvY3Vy cmVudC5oCkBAIC04NiwxMCArODYsMTggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgY3B1X2luZm8g KmdldF9jcHVfaW5mbyh2b2lkKQogdW5zaWduZWQgbG9uZyBnZXRfc3RhY2tfdHJhY2VfYm90dG9t KHVuc2lnbmVkIGxvbmcgc3ApOwogdW5zaWduZWQgbG9uZyBnZXRfc3RhY2tfZHVtcF9ib3R0b20g KHVuc2lnbmVkIGxvbmcgc3ApOwogCisjaWZkZWYgQ09ORklHX1hTUExJQ0UKKyMgZGVmaW5lIENI RUNLX0ZPUl9YU1BMSUNFX1dPUksgImNhbGwgY2hlY2tfZm9yX3hzcGxpY2Vfd29yazsiCisjZWxz ZQorIyBkZWZpbmUgQ0hFQ0tfRk9SX1hTUExJQ0VfV09SSyAiIgorI2VuZGlmCisKICNkZWZpbmUg cmVzZXRfc3RhY2tfYW5kX2p1bXAoX19mbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKICAgICAoeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18g KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAg ICJtb3YgJTAsJSUiX19PUCJzcDsgam1wICVjMSIgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICAgICAgICAgICJtb3YgJTAsJSUiX19PUCJzcDsiICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIENIRUNLX0ZPUl9YU1BMSUNFX1dP UksgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAi am1wICVjMSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKICAgICAgICAgICAgIDogOiAiciIgKGd1ZXN0X2NwdV91c2VyX3JlZ3MoKSksICJpIiAoX19m bikgOiAibWVtb3J5IiApOyAgIFwKICAgICAgICAgdW5yZWFjaGFibGUoKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9KQpkaWZmIC0tZ2l0 IGEveGVuL2luY2x1ZGUvcHVibGljL3N5c2N0bC5oIGIveGVuL2luY2x1ZGUvcHVibGljL3N5c2N0 bC5oCmluZGV4IDQxNmUzOWEuLjM2YTM3ZWYgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1Ymxp Yy9zeXNjdGwuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmgKQEAgLTg2OSw2ICs4 NjksMjYgQEAgREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3N5c2N0bF9mZWF0dXJlc2V0X3Qp OwogICogICAgIElmIHplcm8gZXhpdCB3aXRoIHN1Y2Nlc3MuCiAgKi8KIAorI2RlZmluZSBYU1BM SUNFX1BBWUxPQURfVkVSU0lPTiAxCisvKgorICogLnhzcGxpY2UuZnVuY3Mgc3RydWN0dXJlIGxh eW91dCBkZWZpbmVkIGluIHRoZSBgUGF5bG9hZCBmb3JtYXRgCisgKiBzZWN0aW9uIGluIHRoZSB4 U3BsaWNlIGRlc2lnbiBkb2N1bWVudC4KKyAqCisgKiBXZSBndWFyZCB0aGlzIHdpdGggX19YRU5f XyBhcyB0b29sc3RhY2tzIFNIT1VMRCBub3QgdXNlIGl0LgorICovCisjaWZkZWYgX19YRU5fXwor c3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuYyB7CisgICAgY29uc3QgY2hhciAqbmFtZTsgICAgICAg LyogTmFtZSBvZiBmdW5jdGlvbiB0byBiZSBwYXRjaGVkLiAqLworICAgIHZvaWQgKm5ld19hZGRy OworICAgIHZvaWQgKm9sZF9hZGRyOworICAgIHVpbnQzMl90IG5ld19zaXplOworICAgIHVpbnQz Ml90IG9sZF9zaXplOworICAgIHVpbnQ4X3QgdmVyc2lvbjsgICAgICAgIC8qIE1VU1QgYmUgWFNQ TElDRV9QQVlMT0FEX1ZFUlNJT04uICovCisgICAgdWludDhfdCBvcGFxdWVbMzFdOyAgICAgLyog TVVTVCBiZSB6ZXJvIGZpbGxlZC4gKi8KK307Cit0eXBlZGVmIHN0cnVjdCB4c3BsaWNlX3BhdGNo X2Z1bmMgeHNwbGljZV9wYXRjaF9mdW5jX3Q7CisjZW5kaWYKKwogLyoKICAqIFN0cnVjdHVyZSBk ZXNjcmliaW5nIGFuIEVMRiBwYXlsb2FkLiBVbmlxdWVseSBpZGVudGlmaWVzIHRoZQogICogcGF5 bG9hZC4gU2hvdWxkIGJlIGh1bWFuIHJlYWRhYmxlLgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUv eGVuL3hzcGxpY2UuaCBiL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKaW5kZXggODU3YzI2NC4u Yzk3MjNlNCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaAorKysgYi94ZW4v aW5jbHVkZS94ZW4veHNwbGljZS5oCkBAIC0xMSwxMiArMTEsMTYgQEAgc3RydWN0IHhzcGxpY2Vf ZWxmX3NlYzsKIHN0cnVjdCB4c3BsaWNlX2VsZl9zeW07CiBzdHJ1Y3QgeGVuX3N5c2N0bF94c3Bs aWNlX29wOwogCisjaW5jbHVkZSA8eGVuL2VsZnN0cnVjdHMuaD4KICNpZmRlZiBDT05GSUdfWFNQ TElDRQogCiAvKiBDb252ZW5pZW5jZSBkZWZpbmUgZm9yIHByaW50ay4gKi8KICNkZWZpbmUgWFNQ TElDRSAgICAgICAgICAgICAieHNwbGljZTogIgorLyogRUxGIHBheWxvYWQgc3BlY2lhbCBzZWN0 aW9uIG5hbWVzLiAqLworI2RlZmluZSBFTEZfWFNQTElDRV9GVU5DICAgICIueHNwbGljZS5mdW5j cyIKIAogaW50IHhzcGxpY2Vfb3Aoc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9vcCAqKTsKK3Zv aWQgY2hlY2tfZm9yX3hzcGxpY2Vfd29yayh2b2lkKTsKIAogLyogQXJjaCBob29rcy4gKi8KIGlu dCBhcmNoX3hzcGxpY2VfdmVyaWZ5X2VsZihjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZik7 CkBAIC0zOSw2ICs0MywyMiBAQCBlbnVtIHZhX3R5cGUgewogaW50IGFyY2hfeHNwbGljZV9zZWN1 cmUoY29uc3Qgdm9pZCAqdmEsIHVuc2lnbmVkIGludCBwYWdlcywgZW51bSB2YV90eXBlIHR5cGVz KTsKIAogdm9pZCBhcmNoX3hzcGxpY2VfaW5pdCh2b2lkKTsKKworI2luY2x1ZGUgPHB1YmxpYy9z eXNjdGwuaD4gLyogRm9yIHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMuICovCitpbnQgYXJjaF94 c3BsaWNlX3ZlcmlmeV9mdW5jKGNvbnN0IHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgKmZ1bmMp OworLyoKKyAqIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGFyb3VuZCB0aGUgY3JpdGljYWwg cmVnaW9uIHBhdGNoaW5nIGxpdmUgY29kZSwKKyAqIGZvciBhbiBhcmNoaXRlY3R1cmUgdG8gdGFr ZSBtYWtlIGFwcHJvcHJhdGllIGdsb2JhbCBzdGF0ZSBhZGp1c3RtZW50cy4KKyAqLwordm9pZCBh cmNoX3hzcGxpY2VfcGF0Y2hpbmdfZW50ZXIodm9pZCk7Cit2b2lkIGFyY2hfeHNwbGljZV9wYXRj aGluZ19sZWF2ZSh2b2lkKTsKKwordm9pZCBhcmNoX3hzcGxpY2VfYXBwbHlfam1wKHN0cnVjdCB4 c3BsaWNlX3BhdGNoX2Z1bmMgKmZ1bmMpOwordm9pZCBhcmNoX3hzcGxpY2VfcmV2ZXJ0X2ptcChj b25zdCBzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jICpmdW5jKTsKK3ZvaWQgYXJjaF94c3BsaWNl X3Bvc3RfYWN0aW9uKHZvaWQpOworCit2b2lkIGFyY2hfeHNwbGljZV9tYXNrKHZvaWQpOwordm9p ZCBhcmNoX3hzcGxpY2VfdW5tYXNrKHZvaWQpOwogI2Vsc2UKIAogI2luY2x1ZGUgPHhlbi9lcnJu by5oPiAvKiBGb3IgLUVOT1NZUyAqLwpAQCAtNDcsNiArNjcsNyBAQCBzdGF0aWMgaW5saW5lIGlu dCB4c3BsaWNlX29wKHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vfb3AgKm9wKQogICAgIHJldHVy biAtRU5PU1lTOwogfQogCitzdGF0aWMgaW5saW5lIHZvaWQgY2hlY2tfZm9yX3hzcGxpY2Vfd29y ayh2b2lkKSB7IH07CiAjZW5kaWYgLyogQ09ORklHX1hTUExJQ0UgKi8KIAogI2VuZGlmIC8qIF9f WEVOX1hTUExJQ0VfSF9fICovCi0tIAoyLjUuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==