From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v10 09/24] xsplice: Implement support for applying/reverting/replacing patches. Date: Wed, 27 Apr 2016 15:27:06 -0400 Message-ID: <1461785241-4481-10-git-send-email-konrad.wilk@oracle.com> References: <1461785241-4481-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1avV8K-0004kj-Tw for xen-devel@lists.xenproject.org; Wed, 27 Apr 2016 19:28:25 +0000 In-Reply-To: <1461785241-4481-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: konrad@kernel.org, xen-devel@lists.xenproject.org, sasha.levin@oracle.com, andrew.cooper3@citrix.com, ross.lagerwall@citrix.com, mpohlack@amazon.de Cc: 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+CkFj a2VkLWJ5OiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgpBY2tlZC1ieTogSmFu IEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgoKLS0KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8 c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KQ2M6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFy bS5jb20+CkNjOiBLZWlyIEZyYXNlciA8a2VpckB4ZW4ub3JnPgpDYzogSmFuIEJldWxpY2ggPGpi ZXVsaWNoQHN1c2UuY29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4 LmNvbT4KQ2M6IEJvcmlzIE9zdHJvdnNreSA8Ym9yaXMub3N0cm92c2t5QG9yYWNsZS5jb20+CkNj OiBTdXJhdmVlIFN1dGhpa3VscGFuaXQgPHN1cmF2ZWUuc3V0aGlrdWxwYW5pdEBhbWQuY29tPgpD YzogSnVuIE5ha2FqaW1hIDxqdW4ubmFrYWppbWFAaW50ZWwuY29tPgpDYzogS2V2aW4gVGlhbiA8 a2V2aW4udGlhbkBpbnRlbC5jb20+Cgp2MjogLSBQbHVjayB0aGUgJ3N0cnVjdCB4c3BsaWNlX3Bh dGNoX2Z1bmMnIGluIHRoaXMgcGF0Y2guCiAgICAtIE1vZGlmeSBjb2RlIHBlciByZXZpZXcgY29t bWVudHMuCiAgICAtIEFkZCBtb3JlIGRhdGEgaW4gdGhlIGtleWJvYXJkIGhhbmRsZXIuCiAgICAt IFJlZG8gdGhlIHBhdGNoaW5nIGNvZGUsIHNwbGl0IGl0IGluIGZ1bmN0aW9ucy4KdjM6IC0gQWRk IHJldHVybl8gbWFjcm8gZm9yIGRlYnVnIGJ1aWxkcy4KICAgIC0gTW92ZSBzL3BheWxvYWRfbGlz dF9sb2NrL3BheWxvYWRfbGlzdC8gdG8gZWFybGllciBwYXRjaAogICAgLSBSZW1vdmUgY29uc3Qg YW5kIHVzZSBFTEYgdHlwZXMgZm9yIHhzcGxpY2VfcGF0Y2hfZnVuYwogICAgIC0gQWRkIGNoZWNr IHJvdXRpbmUgdG8gZG8gc2ltcGxlIHNhbml0eSBjaGVja3MgZm9yIHZhcmlvdXMKICAgICAgc2Vj dGlvbnMuCiAgICAtIHMvJXAvUFJJeDY0LyBhcyBBUk0gYnVpbGRzIGNvbXBsYWluLgogICAgLSBN b3ZlIGNvZGUgYXJvdW5kLiBBZGQgbW9yZSBkcHJpbnRrLiBBZGQgWFNQTElDRSBpbiBmcm9udCBv ZiBhbGwKICAgICAgcHJpbnRrcy9kcHJpbnRrLgogICAgICBQdXQgdGhlIE5NSXMgYmFjayBpZiB3 ZSBmYWlsIHBhdGNoaW5nLgogICAgICBBZGQgcGVyLWNwdSB0byBsZXNzZW4gY29udGVudGlvbiBm b3IgZ2xvYmFsIHN0cnVjdHVyZS4KICAgICAgRXh0cmFjdCBmcm9tIHhzcGxpY2VfZG9fc2luZ2xl IHBhdGNoaW5nIGNvZGUgaW50byB4c3BsaWNlX2RvX2FjdGlvbgogICAgICBTcXVhc2ggeHNwbGlj ZV9kb19zaW5nbGUgYW5kIGNoZWNrX2Zvcl94c3BsaWNlX3dvcmsgdG9nZXRoZXIgdG8KICAgICAg aGF2ZSBhbGwgcmVuZGV6dm91cyBpbiBvbmUgcGxhY2UuCiAgICAgIE1hZGUgWFNQTElDRV9BQ1RJ T05fUkVQTEFDRSB3b3JrIGFnYWluICh3cm9uZyBsaXN0IGl0ZXJhdG9yKQogICAgICBzL2ZpbmRf c3BlY2lhbF9zZWN0aW9ucy9wcmVwYXJlX3BheWxvYWQvCiAgICAgIFVzZSBsaXN0X2RlbF9pbml0 IGFuZCBJTklUX0xJU1RfSEVBRCBmb3IgYXBwbGllZF9saXN0CnY0OgogICAtIEFkZCBjb21tZW50 LCBhZGp1c3Qgc3BhY2luZyBmb3IgIlRpbWVkIG91dCBvbiBDUFUgc2VtYXBob3JlIgogICAtIEFk ZGVkIENSMC5XUCBtYW5pcHVsYXRpb25zIHdoZW4gYWx0ZXJpbmcgdGhlIC50ZXh0IG9mIGh5cGVy dmlzb3IuCiAgIC0gQWRkZWQgZml4IGZyb20gQW5kcmV3IGZvciBDUjAuV1AgbWFuaXB1bGF0aW9u Lgp2NTogLSBNYWRlIHhzcGxpY2VfcGF0Y2hfZnVuYyB1c2UgdWludFhYX3QgaW5zdGVhZCBvZiBF TEZfIHR5cGVzIHRvIGVhc3kKICAgICAgbWFraW5nIGl0IHdvcmsgdW5kZXIgQVJNICgzMmJpdCku IEFkZCBtb3JlIEJVSUxELUJVRy1PTiBjaGVja3MuCiAgICAtIEFkZCBtb3JlIEJVSUxEX09OIGNo ZWNrcy4gU3ByaW5rbGUgbmV3bGluZXMuCnY2OiBSZWJhc2Ugb24gImFybS94ODY6IEFsdGVyIG5t aV9jYWxsYmFja190IHR5cGVkZWYiCiAgIC0gRHJvcCB0aGUgcmVjdXJzaXZlIHNwaW5sb2NrIHVz YWdlLgogICAtIE1vdmUgTk1JIGNhbGxiYWNrcyBpbiBhcmNoIHNwZWNpZmljLgogICAtIEZvbGQg dGhlICdjaGVja19mb3JfeHNwbGljZV93b3JrJyBpbiByZXNldF9zdGFja19hbmRfanVtcAogICAt IEFkZCBhcmNoIHNwZWNpZmljIGNoZWNrIGZvciAueHNwbGljZS5mdW5jcy4KICAgLSBTZXBlcmF0 ZSBleHRlcm5hbCBhbmQgaW50ZXJuYWwgc3RydWN0dXJlIG9mIC54c3BsaWNlLmZ1bmNzLgogICAt IENoYW5nZWQgcGVyIEphbidzIHJldmlldwogICAtIE1vZGlmaWVkIHRoZSAueHNwbGljZS5mdW5j cyBjaGVja3MKdjc6CiAgIC0gTW9kaWZpZWQgb2xkX3B0ciB0byB2b2lkKiBpbnN0ZWFkIG9mIHVp bnQ4X3QqCiAgIC0gTW9kaWZpZWQgdGhlIHhzcGxpY2VfcGF0Y2hfZnVuY19pbnRlcm5hbCBmb3Ig QVJNMzIgdG8gaGF2ZSBwYWRkaW5nLgogICAtIFVzZWQgI2lmIEJJVFNfUEVSX0xPTkcgPT0gNjQg Zm9yIHRoZSB4c3BsaWNlX3BhdGNoX2Z1bmNfaW50ZXJuYWwgYWxvbmcKICAgICB3aXRoIGlmbmRl ZiBDT05GSUdfQVJNIGZvciB0aGUgdW5kbyAod2hpY2ggbWF5IGJlIGRpZmZlcmVudCBzaXplIG9u IEFSTTY0KQp2ODoKICAtIEFkZCAiaXMgZW1wdHkiIGlmIHNwZWNpYWwgc2VjdGlvbnMgYXJlIGlu IGZhY3QgZW1wdHkuCiAgLSBBZGRlZCBBbmRyZXcncyBSZXZpZXdlZC1ieToKICAtIFJlYmFzZSBv biB2Ny4yIG9mICB4ODYvbW06IEludHJvZHVjZSBtb2RpZnlfeGVuX21hcHBpbmdzKCkKICAtIENo YW5nZSBzb21lIG9mIHByaW50ayB0byBkcHJpbnRrIGFuZCBzb21lIG9mIHRoZSBkcHJpbnRrIHRv IHByaW50ay4KICAtIE1ha2UgdGhlIHhzcGxpY2VfcGF0Y2hfZnVuYyAoYW5kIHRoZSBpbnRlcm5h bCkgc3RydWN0dXJlIGhhdmUgdWludDMyX3QKICAgIChpbnN0ZWFkIG9mIHVpbnQ2NF90KSBpZiBC SVRTX1BFUl9MT05HPT0zMi4gVGhpcyBtYWtlcyB0aGUgc2l6ZSBhbmQKICAgIG9mZnNldCBkaWZm ZXJlbnQgc28gbm90ZSB0aGF0IGluIHRoZSBkZXNpZ24gYW5kIGNvbW1vbiBjb2RlLgogIC0gQWRk ICN1bmRlZiBBQ1RJT04KICAtIEd1YXJkIHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgaW4gc3lz Y3RsLmggd2l0aCBfX1hFTl9fIGFzIHRvb2xzdGFja3MKICAgIHdpbGwgZmFpbCB0byBjb21waWxl LiBXZSBkbyBoYXZlIEJJVFNfUEVSX0xPTkcgZGVmaW5lZCBpbiB4Y19iaXRvcHMuaCBidXQKICAg IHRoYXQgd2lsbCBnbyBhd2F5IChhbmQgYWxzbyB0aGF0IG1hY3JvIHVzZXMgc2l6ZW9mIGFuZCB0 aGUgcHJlLXByb2Nlc3NvcgogICAgd2lsbCBjaG9rZSBvbiB0aGF0KS4KICAtIERyb3BwZWQgSnVs aWVuJ3MgQWNrZWQgYXMgSSByZXBsYWNlZCBCSVRTX1BFUl9MT05HL0NPTkZJR19BUk1fMzIuCiAg ICAoU3RlZmFubyBpcyBPSyB3aXRoIGl0LCBidXQgd291bGQgcHJlZmVyIEJJVFNfUEVSX0xPTkcs IEphbiBkb2VzIG5vdCB3YW50CiAgICBCSVRTX1BFUl9MT05HKS4Kdjk6IEV4cG9zZSB0aGUgc3Ry dWN0IHhzcGxpY2VfcGF0Y2hfZnVuYyBvbGRfYWRkciBhbmQgbmV3X2FkZHIgYXMgdm9pZAogICAg aW5zdGVhZCBvZiB1aW50MzJfdCBvciB1aW50NjRfdC4KICAtIEFkZGVkIEp1bGllbicgQWNrIGJh Y2suCiAgLSBSZW5hbWUgcGFkIHRvIG9wYXF1ZS4KICAtIEFkZGVkIGNvbW1lbnQgaW4gYWlkbGVf bG9vcC4KICAtIFNxdWFzaCBpbnRlcm5hbCBhbmQgcHVibGljIG9mICd4c3BsaWNlX3BhdGNoX2Z1 bmMnCiAgLSBGaXhlZCByZW1haW5pZyBzaXplb2YgdXNlLgogIC0gUmVtb3ZlZCByZWZlcmVuY2Ug dG8gTUNFCiAgLSBGaXhlZCBjb21tZW50IHN0eWxlcy4KICAtIFVzZSBib29sX3QgaW4gY2hlY2tf c3BlY2lhbF9zZWN0aW9ucwogIC0gQWRkIGEgI2RlZmluZSBmb3IgLnhzcGxpY2UuZnVuY3MuCiAg LSBSZW1vdmUgZnVsbCBzdG9wcyBmcm9tIHByaW50awogIC0gRml4IHhzcGxpY2VfZG9fYWN0aW9u IHBlciBKYW4ncyBwdW5jaGxpc3QKICAtIFVzZSBzcGluX2xvY2tfdHJ5IGluIGtleWhhbmRsZXIK ICAtIFJlbW92ZSBsZWFkaW5nIHVuZGVyc2NvcmVzIGZyb20gX19DSEVDS19GT1JfWFNQTElDRV9X T1JLCiAgLSBEb24ndCBmYWlsIGNvbXBpbGF0aW9uIG9uIEdDQzUgLSB3ZSBNVVNUIGhhdmUgcmMg c2V0LgogIC0gRG9uJ3QgYmFpbCBvdXQgaWYgZmluZGluZyAhc2hfdHlwZSBhcyB0aG9zZSBhcmUg Zm9yIC5yZWxhIG9yIC5kZWJ1ZwogICAgYW5kIHdoaWxlIHdlIGRvbid0IG5lZWQgdG8gYWxsb2Nh dGUgaXQgKGFzIHdlIGhhZCBhbHJlYWR5IGRvbmUKICAgIHRoZSByZWxvY2F0aW9uKSwgZG8gY29u dGludWUuCiAgLSBNYWtlIGFwcGxpZWRfbGlzdCBiZSBhbiBSQ1UgdHlwZSB0byBndWFyZCBhZ2Fp bnN0IGluZmluaXRlIGxvb3BzCiAgICB3aGVuIHNlYXJjaGluZyB0aGUgYXBwbGllZF9saXN0Lgog IC0gRHJvcHBlZCB0aGUgaXJxX3NlbWFwaG9yZSBhbmQgYXJlIHJlLXVzaW5nIHRoZSBzZW1hcGhv cmUgYXRvbWljIHdoZW4KICAgIENQVXMgaGF2ZSByZW5kZXp2b3VzZWQgYW5kIGFyZSByZWFkeSB0 byBnbyBpbiBJUlEgZGlzYWJsZSBwaGFzZS4KdjEwOiBEcm9wIFJldmlld2VkLWJ5CiAgLSBVc2Ug Yml0bWFwIGZvciBpbiBjaGVja19zcGVjaWFsX3NlY3Rpb25zIHRvIGNoZWNrIGZvciBzZWN0aW9u cwogICAgYXBwZWFyaW5nIHR3aWNlLgogIC0gQWRkIGNvbW1lbnQgYWJvdXQgdXMgYWJ1c2luZyB0 aGUgbGlzdCBSQ1UgZm9yIG91ciBzYWZldHkgcmVhc29ucy4KICAtIEFuZCByZW1vdmUgTVVTVCBj b21tZW50IGFib3V0IG9wYXF1ZSBoYXZpbmcgdG8gYmUgemVybyBmaWxsZWQuCnYxMCAtIHBhdGNo IGlubGluZSBpbiByZXNwb25zZSB0byB2OSBwYXRjaHNldC4KICAtIE1ha2UgdGhlIGJpdG1hcCBp biBjaGVja19zcGVjaWFsX3NlY3Rpb25zIGJlIGNhbGxlZCBmb3VuZCBhbmQgdXNlCiAgICBfX3Rl c3RfYW5kX1NldF9iaXQuCiAgLSBBZGQgSmFuJ3MgQWNrZWQtYnkKLS0tCiB4ZW4vYXJjaC9hcm0v eHNwbGljZS5jICAgICAgICB8ICAzMyArKysKIHhlbi9hcmNoL3g4Ni9kb21haW4uYyAgICAgICAg IHwgICA2ICsKIHhlbi9hcmNoL3g4Ni94c3BsaWNlLmMgICAgICAgIHwgIDc2ICsrKysrKysKIHhl bi9jb21tb24veHNwbGljZS5jICAgICAgICAgIHwgNDc4ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9jdXJyZW50LmggfCAgMTAg Ky0KIHhlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaCAgIHwgIDIwICsrCiB4ZW4vaW5jbHVkZS94 ZW4veHNwbGljZS5oICAgICB8ICAyMSArKwogNyBmaWxlcyBjaGFuZ2VkLCA2MzIgaW5zZXJ0aW9u cygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3hzcGxpY2Uu YyBiL3hlbi9hcmNoL2FybS94c3BsaWNlLmMKaW5kZXggOGNiNzc2Ny4uZGIwZGNlMiAxMDA2NDQK LS0tIGEveGVuL2FyY2gvYXJtL3hzcGxpY2UuYworKysgYi94ZW4vYXJjaC9hcm0veHNwbGljZS5j CkBAIC03LDYgKzcsMzkgQEAKICNpbmNsdWRlIDx4ZW4veHNwbGljZV9lbGYuaD4KICNpbmNsdWRl IDx4ZW4veHNwbGljZS5oPgogCit2b2lkIGFyY2hfeHNwbGljZV9wYXRjaGluZ19lbnRlcih2b2lk KQoreworfQorCit2b2lkIGFyY2hfeHNwbGljZV9wYXRjaGluZ19sZWF2ZSh2b2lkKQoreworfQor CitpbnQgYXJjaF94c3BsaWNlX3ZlcmlmeV9mdW5jKGNvbnN0IHN0cnVjdCB4c3BsaWNlX3BhdGNo X2Z1bmMgKmZ1bmMpCit7CisgICAgcmV0dXJuIC1FTk9TWVM7Cit9CisKK3ZvaWQgYXJjaF94c3Bs aWNlX2FwcGx5X2ptcChzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jICpmdW5jKQoreworfQorCit2 b2lkIGFyY2hfeHNwbGljZV9yZXZlcnRfam1wKGNvbnN0IHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1 bmMgKmZ1bmMpCit7Cit9CisKK3ZvaWQgYXJjaF94c3BsaWNlX3Bvc3RfYWN0aW9uKHZvaWQpCit7 Cit9CisKK3ZvaWQgYXJjaF94c3BsaWNlX21hc2sodm9pZCkKK3sKK30KKwordm9pZCBhcmNoX3hz cGxpY2VfdW5tYXNrKHZvaWQpCit7Cit9CisKIGludCBhcmNoX3hzcGxpY2VfdmVyaWZ5X2VsZihj b25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZikKIHsKICAgICByZXR1cm4gLUVOT1NZUzsKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21haW4uYyBiL3hlbi9hcmNoL3g4Ni9kb21haW4uYwpp bmRleCBlOTNmZjIwLi5kMTNiMjcyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZG9tYWluLmMK KysrIGIveGVuL2FyY2gveDg2L2RvbWFpbi5jCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8 eGVuL2NwdS5oPgogI2luY2x1ZGUgPHhlbi93YWl0Lmg+CiAjaW5jbHVkZSA8eGVuL2d1ZXN0X2Fj Y2Vzcy5oPgorI2luY2x1ZGUgPHhlbi94c3BsaWNlLmg+CiAjaW5jbHVkZSA8cHVibGljL3N5c2N0 bC5oPgogI2luY2x1ZGUgPHB1YmxpYy9odm0vaHZtX3ZjcHUuaD4KICNpbmNsdWRlIDxhc20vcmVn cy5oPgpAQCAtMTIwLDYgKzEyMSwxMSBAQCBzdGF0aWMgdm9pZCBpZGxlX2xvb3Aodm9pZCkKICAg ICAgICAgKCpwbV9pZGxlKSgpOwogICAgICAgICBkb190YXNrbGV0KCk7CiAgICAgICAgIGRvX3Nv ZnRpcnEoKTsKKyAgICAgICAgLyoKKyAgICAgICAgICogV2UgTVVTVCBiZSBsYXN0IChvciBiZWZv cmUgcG1faWRsZSkuIE90aGVyd2lzZSBhZnRlciB3ZSBnZXQgdGhlCisgICAgICAgICAqIHNvZnRp cnEgd2Ugd291bGQgZXhlY3V0ZSBwbV9pZGxlIChhbmQgc2xlZXApIGFuZCBub3QgcGF0Y2guCisg ICAgICAgICAqLworICAgICAgICBjaGVja19mb3JfeHNwbGljZV93b3JrKCk7CiAgICAgfQogfQog CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveHNwbGljZS5jIGIveGVuL2FyY2gveDg2L3hzcGxp Y2UuYwppbmRleCA4MjYxOGY3Li5mZjEzNDZjIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYveHNw bGljZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni94c3BsaWNlLmMKQEAgLTExLDYgKzExLDgyIEBACiAj aW5jbHVkZSA8eGVuL3hzcGxpY2VfZWxmLmg+CiAjaW5jbHVkZSA8eGVuL3hzcGxpY2UuaD4KIAor I2luY2x1ZGUgPGFzbS9ubWkuaD4KKworI2RlZmluZSBQQVRDSF9JTlNOX1NJWkUgNQorCit2b2lk IGFyY2hfeHNwbGljZV9wYXRjaGluZ19lbnRlcih2b2lkKQoreworICAgIC8qIERpc2FibGUgV1Ag dG8gYWxsb3cgY2hhbmdlcyB0byByZWFkLW9ubHkgcGFnZXMuICovCisgICAgd3JpdGVfY3IwKHJl YWRfY3IwKCkgJiB+WDg2X0NSMF9XUCk7Cit9CisKK3ZvaWQgYXJjaF94c3BsaWNlX3BhdGNoaW5n X2xlYXZlKHZvaWQpCit7CisgICAgLyogUmVpbnN0YXRlIFdQLiAqLworICAgIHdyaXRlX2NyMChy ZWFkX2NyMCgpIHwgWDg2X0NSMF9XUCk7Cit9CisKK2ludCBhcmNoX3hzcGxpY2VfdmVyaWZ5X2Z1 bmMoY29uc3Qgc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuYyAqZnVuYykKK3sKKyAgICAvKiBObyBO T1AgcGF0Y2hpbmcgeWV0LiAqLworICAgIGlmICggIWZ1bmMtPm5ld19zaXplICkKKyAgICAgICAg cmV0dXJuIC1FT1BOT1RTVVBQOworCisgICAgaWYgKCBmdW5jLT5vbGRfc2l6ZSA8IFBBVENIX0lO U05fU0laRSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgcmV0dXJuIDA7Cit9CisK K3ZvaWQgYXJjaF94c3BsaWNlX2FwcGx5X2ptcChzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jICpm dW5jKQoreworICAgIGludDMyX3QgdmFsOworICAgIHVpbnQ4X3QgKm9sZF9wdHI7CisKKyAgICBC VUlMRF9CVUdfT04oUEFUQ0hfSU5TTl9TSVpFID4gc2l6ZW9mKGZ1bmMtPm9wYXF1ZSkpOworICAg IEJVSUxEX0JVR19PTihQQVRDSF9JTlNOX1NJWkUgIT0gKDEgKyBzaXplb2YodmFsKSkpOworCisg ICAgb2xkX3B0ciA9IGZ1bmMtPm9sZF9hZGRyOworICAgIG1lbWNweShmdW5jLT5vcGFxdWUsIG9s ZF9wdHIsIFBBVENIX0lOU05fU0laRSk7CisKKyAgICAqb2xkX3B0cisrID0gMHhlOTsgLyogUmVs YXRpdmUganVtcCAqLworICAgIHZhbCA9IGZ1bmMtPm5ld19hZGRyIC0gZnVuYy0+b2xkX2FkZHIg LSBQQVRDSF9JTlNOX1NJWkU7CisgICAgbWVtY3B5KG9sZF9wdHIsICZ2YWwsIHNpemVvZih2YWwp KTsKK30KKwordm9pZCBhcmNoX3hzcGxpY2VfcmV2ZXJ0X2ptcChjb25zdCBzdHJ1Y3QgeHNwbGlj ZV9wYXRjaF9mdW5jICpmdW5jKQoreworICAgIG1lbWNweShmdW5jLT5vbGRfYWRkciwgZnVuYy0+ b3BhcXVlLCBQQVRDSF9JTlNOX1NJWkUpOworfQorCisvKiBTZXJpYWxpc2UgdGhlIENQVSBwaXBl bGluZS4gKi8KK3ZvaWQgYXJjaF94c3BsaWNlX3Bvc3RfYWN0aW9uKHZvaWQpCit7CisgICAgY3B1 aWRfZWF4KDApOworfQorCitzdGF0aWMgbm1pX2NhbGxiYWNrX3QgKnNhdmVkX25taV9jYWxsYmFj azsKKy8qCisgKiBOb3RlIHRoYXQgYmVjYXVzZSBvZiB0aGlzIE5PUCBjb2RlIHRoZSBkb19ubWkg aXMgbm90IHNhZmVseSBwYXRjaGFibGUuCisgKiBBbHNvIGlmIHdlIGRvIHJlY2VpdmUgJ3JlYWwn IE5NSXMgd2UgaGF2ZSBsb3N0IHRoZW0uCisgKi8KK3N0YXRpYyBpbnQgbWFza19ubWlfY2FsbGJh Y2soY29uc3Qgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsIGludCBjcHUpCit7CisgICAgLyog VE9ETzogSGFuZGxlIG1pc3NpbmcgTk1JL01DRS4qLworICAgIHJldHVybiAxOworfQorCit2b2lk IGFyY2hfeHNwbGljZV9tYXNrKHZvaWQpCit7CisgICAgc2F2ZWRfbm1pX2NhbGxiYWNrID0gc2V0 X25taV9jYWxsYmFjayhtYXNrX25taV9jYWxsYmFjayk7Cit9CisKK3ZvaWQgYXJjaF94c3BsaWNl X3VubWFzayh2b2lkKQoreworICAgIHNldF9ubWlfY2FsbGJhY2soc2F2ZWRfbm1pX2NhbGxiYWNr KTsKK30KKwogaW50IGFyY2hfeHNwbGljZV92ZXJpZnlfZWxmKGNvbnN0IHN0cnVjdCB4c3BsaWNl X2VsZiAqZWxmKQogewogCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3hzcGxpY2UuYyBiL3hlbi9j b21tb24veHNwbGljZS5jCmluZGV4IDE2ODhjNmMuLmZjZWM1NjQgMTAwNjQ0Ci0tLSBhL3hlbi9j b21tb24veHNwbGljZS5jCisrKyBiL3hlbi9jb21tb24veHNwbGljZS5jCkBAIC0zLDYgKzMsNyBA QAogICoKICAqLwogCisjaW5jbHVkZSA8eGVuL2NwdS5oPgogI2luY2x1ZGUgPHhlbi9lcnIuaD4K ICNpbmNsdWRlIDx4ZW4vZ3Vlc3RfYWNjZXNzLmg+CiAjaW5jbHVkZSA8eGVuL2tleWhhbmRsZXIu aD4KQEAgLTExLDE4ICsxMiwzMCBAQAogI2luY2x1ZGUgPHhlbi9tbS5oPgogI2luY2x1ZGUgPHhl bi9zY2hlZC5oPgogI2luY2x1ZGUgPHhlbi9zbXAuaD4KKyNpbmNsdWRlIDx4ZW4vc29mdGlycS5o PgogI2luY2x1ZGUgPHhlbi9zcGlubG9jay5oPgogI2luY2x1ZGUgPHhlbi92bWFwLmg+CisjaW5j bHVkZSA8eGVuL3dhaXQuaD4KICNpbmNsdWRlIDx4ZW4veHNwbGljZV9lbGYuaD4KICNpbmNsdWRl IDx4ZW4veHNwbGljZS5oPgogCiAjaW5jbHVkZSA8YXNtL2V2ZW50Lmg+Ci0jaW5jbHVkZSA8cHVi bGljL3N5c2N0bC5oPgogCi0vKiBQcm90ZWN0cyBhZ2FpbnN0IHBheWxvYWRfbGlzdCBvcGVyYXRp b25zLiAqLworLyoKKyAqIFByb3RlY3RzIGFnYWluc3QgcGF5bG9hZF9saXN0IG9wZXJhdGlvbnMg YW5kIGFsc28gYWxsb3dzIG9ubHkgb25lCisgKiBjYWxsZXIgaW4gc2NoZWR1bGVfd29yay4KKyAq Lwogc3RhdGljIERFRklORV9TUElOTE9DSyhwYXlsb2FkX2xvY2spOwogc3RhdGljIExJU1RfSEVB RChwYXlsb2FkX2xpc3QpOwogCisvKgorICogUGF0Y2hlcyB3aGljaCBoYXZlIGJlZW4gYXBwbGll ZC4gTmVlZCBSQ1UgaW4gY2FzZSB3ZSBjcmFzaCAoYW5kIHRoZW4KKyAqIHRyYXBzIGNvZGUgd291 bGQgaXRlcmF0ZSB2aWEgYXBwbGllZF9saXN0KSB3aGVuIGFkZGluZyBlbnRyaWVzIG9uIHRoZSBs aXN0LgorICoKKyAqIE5vdGU6IFRoZXJlIGFyZSBubyAncmN1X2FwcGxpZWRfbG9jaycgYXMgd2Ug ZG9uJ3QgaXRlcmF0ZSB5ZXQgdGhlIGxpc3QuCisgKi8KK3N0YXRpYyBMSVNUX0hFQUQoYXBwbGll ZF9saXN0KTsKKwogc3RhdGljIHVuc2lnbmVkIGludCBwYXlsb2FkX2NudDsKIHN0YXRpYyB1bnNp Z25lZCBpbnQgcGF5bG9hZF92ZXJzaW9uID0gMTsKIApAQCAtMzcsOSArNTAsMzUgQEAgc3RydWN0 IHBheWxvYWQgewogICAgIGNvbnN0IHZvaWQgKnJvX2FkZHI7ICAgICAgICAgICAgICAgICAvKiBW aXJ0dWFsIGFkZHJlc3Mgb2YgLnJvZGF0YS4gKi8KICAgICBzaXplX3Qgcm9fc2l6ZTsgICAgICAg ICAgICAgICAgICAgICAgLyogLi4gYW5kIGl0cyBzaXplIChpZiBhbnkpLiAqLwogICAgIHVuc2ln bmVkIGludCBwYWdlczsgICAgICAgICAgICAgICAgICAvKiBUb3RhbCBwYWdlcyBmb3IgW3RleHQs cncscm9dX2FkZHIgKi8KKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIGFwcGxpZWRfbGlzdDsgICAgICAg LyogTGlua2VkIHRvICdhcHBsaWVkX2xpc3QnLiAqLworICAgIHN0cnVjdCB4c3BsaWNlX3BhdGNo X2Z1bmMgKmZ1bmNzOyAgICAvKiBUaGUgYXJyYXkgb2YgZnVuY3Rpb25zIHRvIHBhdGNoLiAqLwor ICAgIHVuc2lnbmVkIGludCBuZnVuY3M7ICAgICAgICAgICAgICAgICAvKiBOciBvZiBmdW5jdGlv bnMgdG8gcGF0Y2guICovCiAgICAgY2hhciBuYW1lW1hFTl9YU1BMSUNFX05BTUVfU0laRV07ICAg IC8qIE5hbWUgb2YgaXQuICovCiB9OwogCisvKiBEZWZpbmVzIGFuIG91dHN0YW5kaW5nIHBhdGNo aW5nIGFjdGlvbi4gKi8KK3N0cnVjdCB4c3BsaWNlX3dvcmsKK3sKKyAgICBhdG9taWNfdCBzZW1h cGhvcmU7ICAgICAgICAgIC8qIFVzZWQgdG8gcmVuZGV6dm91cyBDUFVzIGluCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19mb3JfeHNwbGljZV93b3JrLiAqLworICAg IHVpbnQzMl90IHRpbWVvdXQ7ICAgICAgICAgICAgLyogVGltZW91dCB0byBkbyB0aGUgb3BlcmF0 aW9uLiAqLworICAgIHN0cnVjdCBwYXlsb2FkICpkYXRhOyAgICAgICAgLyogVGhlIHBheWxvYWQg b24gd2hpY2ggdG8gYWN0LiAqLworICAgIHZvbGF0aWxlIGJvb2xfdCBkb193b3JrOyAgICAgLyog U2lnbmFscyB3b3JrIHRvIGRvLiAqLworICAgIHZvbGF0aWxlIGJvb2xfdCByZWFkeTsgICAgICAg LyogU2lnbmFscyBhbGwgQ1BVcyBzeW5jaHJvbml6ZWQuICovCisgICAgdW5zaWduZWQgaW50IGNt ZDsgICAgICAgICAgICAvKiBBY3Rpb24gcmVxdWVzdDogWFNQTElDRV9BQ1RJT05fKiAqLworfTsK KworLyogVGhlcmUgY2FuIGJlIG9ubHkgb25lIG91dHN0YW5kaW5nIHBhdGNoaW5nIGFjdGlvbi4g Ki8KK3N0YXRpYyBzdHJ1Y3QgeHNwbGljZV93b3JrIHhzcGxpY2Vfd29yazsKKworLyoKKyAqIElu ZGljYXRlIHdoZXRoZXIgdGhlIENQVSBuZWVkcyB0byBjb25zdWx0IHhzcGxpY2Vfd29yayBzdHJ1 Y3R1cmUuCisgKiBXZSB3YW50IGFuIHBlci1jcHUgZGF0YSBzdHJ1Y3R1cmUgb3RoZXJ3aXNlIHRo ZSBjaGVja19mb3JfeHNwbGljZV93b3JrCisgKiB3b3VsZCBoYW1tZXIgYSBnbG9iYWwgeHNwbGlj ZV93b3JrIHN0cnVjdHVyZSBvbiBldmVyeSBndWVzdCBWTUVYSVQuCisgKiBIYXZpbmcgYW4gcGVy LWNwdSBsZXNzZW5zIHRoZSBsb2FkLgorICovCitzdGF0aWMgREVGSU5FX1BFUl9DUFUoYm9vbF90 LCB3b3JrX3RvX2RvKTsKKwogc3RhdGljIGludCBnZXRfbmFtZShjb25zdCB4ZW5feHNwbGljZV9u YW1lX3QgKm5hbWUsIGNoYXIgKm4pCiB7CiAgICAgaWYgKCAhbmFtZS0+c2l6ZSB8fCBuYW1lLT5z aXplID4gWEVOX1hTUExJQ0VfTkFNRV9TSVpFICkKQEAgLTI2MCw2ICsyOTksODkgQEAgc3RhdGlj IGludCBzZWN1cmVfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqcGF5bG9hZCwgc3RydWN0IHhzcGxp Y2VfZWxmICplbGYpCiAgICAgcmV0dXJuIHJjOwogfQogCitzdGF0aWMgaW50IGNoZWNrX3NwZWNp YWxfc2VjdGlvbnMoY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCit7CisgICAgdW5zaWdu ZWQgaW50IGk7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IG5hbWVzW10gPSB7IEVMRl9Y U1BMSUNFX0ZVTkMgfTsKKyAgICBERUNMQVJFX0JJVE1BUChmb3VuZCwgQVJSQVlfU0laRShuYW1l cykpID0geyAwIH07CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUobmFtZXMpOyBp KysgKQorICAgIHsKKyAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqc2VjOwor CisgICAgICAgIHNlYyA9IHhzcGxpY2VfZWxmX3NlY19ieV9uYW1lKGVsZiwgbmFtZXNbaV0pOwor ICAgICAgICBpZiAoICFzZWMgKQorICAgICAgICB7CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxP R19FUlIsIFhTUExJQ0UgIiVzOiAlcyBpcyBtaXNzaW5nIVxuIiwKKyAgICAgICAgICAgICAgICAg ICAgZWxmLT5uYW1lLCBuYW1lc1tpXSk7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAg ICAgICAgfQorCisgICAgICAgIGlmICggIXNlYy0+c2VjLT5zaF9zaXplICkKKyAgICAgICAgewor ICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogJXMgaXMgZW1wdHkh XG4iLAorICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIG5hbWVzW2ldKTsKKyAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCB0ZXN0X2FuZF9z ZXRfYml0KGksIGZvdW5kKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9H X0VSUiwgWFNQTElDRSAiJXM6ICVzIHdhcyBzZWVuIG1vcmUgdGhhbiBvbmNlIVxuIiwKKyAgICAg ICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBuYW1lc1tpXSk7CisgICAgICAgICAgICByZXR1cm4g LUVJTlZBTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMg aW50IHByZXBhcmVfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqcGF5bG9hZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQoreworICAgIGNvbnN0IHN0 cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnNlYzsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBzdHJ1 Y3QgeHNwbGljZV9wYXRjaF9mdW5jICpmOworCisgICAgc2VjID0geHNwbGljZV9lbGZfc2VjX2J5 X25hbWUoZWxmLCBFTEZfWFNQTElDRV9GVU5DKTsKKyAgICBBU1NFUlQoc2VjKTsKKyAgICBpZiAo IHNlYy0+c2VjLT5zaF9zaXplICUgc2l6ZW9mKCpwYXlsb2FkLT5mdW5jcykgKQorICAgIHsKKyAg ICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogV3Jvbmcgc2l6ZSBvZiAiRUxG X1hTUExJQ0VfRlVOQyIhXG4iLAorICAgICAgICAgICAgICAgIGVsZi0+bmFtZSk7CisgICAgICAg IHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIHBheWxvYWQtPmZ1bmNzID0gc2VjLT5sb2Fk X2FkZHI7CisgICAgcGF5bG9hZC0+bmZ1bmNzID0gc2VjLT5zZWMtPnNoX3NpemUgLyBzaXplb2Yo KnBheWxvYWQtPmZ1bmNzKTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgcGF5bG9hZC0+bmZ1bmNz OyBpKysgKQorICAgIHsKKyAgICAgICAgaW50IHJjOworCisgICAgICAgIGYgPSAmKHBheWxvYWQt PmZ1bmNzW2ldKTsKKworICAgICAgICBpZiAoIGYtPnZlcnNpb24gIT0gWFNQTElDRV9QQVlMT0FE X1ZFUlNJT04gKQorICAgICAgICB7CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhT UExJQ0UgIiVzOiBXcm9uZyB2ZXJzaW9uICgldSkuIEV4cGVjdGVkICVkIVxuIiwKKyAgICAgICAg ICAgICAgICAgICAgZWxmLT5uYW1lLCBmLT52ZXJzaW9uLCBYU1BMSUNFX1BBWUxPQURfVkVSU0lP Tik7CisgICAgICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7CisgICAgICAgIH0KKworICAgICAg ICBpZiAoICFmLT5uZXdfYWRkciB8fCAhZi0+bmV3X3NpemUgKQorICAgICAgICB7CisgICAgICAg ICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBBZGRyZXNzIG9yIHNpemUgZmll bGRzIGFyZSB6ZXJvIVxuIiwKKyAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lKTsKKyAgICAg ICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisKKyAgICAgICAgcmMgPSBhcmNoX3hz cGxpY2VfdmVyaWZ5X2Z1bmMoZik7CisgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAgcmV0 dXJuIHJjOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgdm9pZCBmcmVlX3Bh eWxvYWQoc3RydWN0IHBheWxvYWQgKmRhdGEpCiB7CiAgICAgQVNTRVJUKHNwaW5faXNfbG9ja2Vk KCZwYXlsb2FkX2xvY2spKTsKQEAgLTI5MSw2ICs0MTMsMTQgQEAgc3RhdGljIGludCBsb2FkX3Bh eWxvYWRfZGF0YShzdHJ1Y3QgcGF5bG9hZCAqcGF5bG9hZCwgdm9pZCAqcmF3LCBzaXplX3QgbGVu KQogICAgIGlmICggcmMgKQogICAgICAgICBnb3RvIG91dDsKIAorICAgIHJjID0gY2hlY2tfc3Bl Y2lhbF9zZWN0aW9ucygmZWxmKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290byBvdXQ7CisK KyAgICByYyA9IHByZXBhcmVfcGF5bG9hZChwYXlsb2FkLCAmZWxmKTsKKyAgICBpZiAoIHJjICkK KyAgICAgICAgZ290byBvdXQ7CisKICAgICByYyA9IHNlY3VyZV9wYXlsb2FkKHBheWxvYWQsICZl bGYpOwogCiAgb3V0OgpAQCAtMzM4LDYgKzQ2OCw3IEBAIHN0YXRpYyBpbnQgeHNwbGljZV91cGxv YWQoeGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZF90ICp1cGxvYWQpCiAKICAgICAgICAgZGF0YS0+ c3RhdGUgPSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQ7CiAgICAgICAgIElOSVRfTElTVF9IRUFEKCZk YXRhLT5saXN0KTsKKyAgICAgICAgSU5JVF9MSVNUX0hFQUQoJmRhdGEtPmFwcGxpZWRfbGlzdCk7 CiAKICAgICAgICAgbGlzdF9hZGRfdGFpbCgmZGF0YS0+bGlzdCwgJnBheWxvYWRfbGlzdCk7CiAg ICAgICAgIHBheWxvYWRfY250Kys7CkBAIC00NDksNiArNTgwLDMxMyBAQCBzdGF0aWMgaW50IHhz cGxpY2VfbGlzdCh4ZW5fc3lzY3RsX3hzcGxpY2VfbGlzdF90ICpsaXN0KQogICAgIHJldHVybiBy YyA/IDogaWR4OwogfQogCisvKgorICogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgZ2V0IHRoZSBD UFVzIGludG8gYW4gYXBwcm9wcmlhdGUgc3RhdGUgYW5kCisgKiBhcHBseSAob3IgcmV2ZXJ0KSBl YWNoIG9mIHRoZSBwYXlsb2FkJ3MgZnVuY3Rpb25zLiBUaGlzIGlzIG5lZWRlZAorICogZm9yIFhF Tl9TWVNDVExfWFNQTElDRV9BQ1RJT04gb3BlcmF0aW9uIChzZWUgeHNwbGljZV9hY3Rpb24pLgor ICovCisKK3N0YXRpYyBpbnQgYXBwbHlfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqZGF0YSkKK3sK KyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIHByaW50ayhYRU5MT0dfSU5GTyBYU1BMSUNFICIl czogQXBwbHlpbmcgJXUgZnVuY3Rpb25zXG4iLAorICAgICAgICAgICAgZGF0YS0+bmFtZSwgZGF0 YS0+bmZ1bmNzKTsKKworICAgIGFyY2hfeHNwbGljZV9wYXRjaGluZ19lbnRlcigpOworCisgICAg Zm9yICggaSA9IDA7IGkgPCBkYXRhLT5uZnVuY3M7IGkrKyApCisgICAgICAgIGFyY2hfeHNwbGlj ZV9hcHBseV9qbXAoJmRhdGEtPmZ1bmNzW2ldKTsKKworICAgIGFyY2hfeHNwbGljZV9wYXRjaGlu Z19sZWF2ZSgpOworCisgICAgLyoKKyAgICAgKiBXZSBuZWVkIFJDVSB2YXJpYW50ICh3aGljaCBo YXMgYmFycmllcnMpIGluIGNhc2Ugd2UgY3Jhc2ggaGVyZS4KKyAgICAgKiBUaGUgYXBwbGllZF9s aXN0IGlzIGl0ZXJhdGVkIGJ5IHRoZSB0cmFwIGNvZGUuCisgICAgICovCisgICAgbGlzdF9hZGRf dGFpbF9yY3UoJmRhdGEtPmFwcGxpZWRfbGlzdCwgJmFwcGxpZWRfbGlzdCk7CisKKyAgICByZXR1 cm4gMDsKK30KKworc3RhdGljIGludCByZXZlcnRfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqZGF0 YSkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIHByaW50ayhYRU5MT0dfSU5GTyBYU1BM SUNFICIlczogUmV2ZXJ0aW5nXG4iLCBkYXRhLT5uYW1lKTsKKworICAgIGFyY2hfeHNwbGljZV9w YXRjaGluZ19lbnRlcigpOworCisgICAgZm9yICggaSA9IDA7IGkgPCBkYXRhLT5uZnVuY3M7IGkr KyApCisgICAgICAgIGFyY2hfeHNwbGljZV9yZXZlcnRfam1wKCZkYXRhLT5mdW5jc1tpXSk7CisK KyAgICBhcmNoX3hzcGxpY2VfcGF0Y2hpbmdfbGVhdmUoKTsKKworICAgIC8qCisgICAgICogV2Ug bmVlZCBSQ1UgdmFyaWFudCAod2hpY2ggaGFzIGJhcnJpZXJzKSBpbiBjYXNlIHdlIGNyYXNoIGhl cmUuCisgICAgICogVGhlIGFwcGxpZWRfbGlzdCBpcyBpdGVyYXRlZCBieSB0aGUgdHJhcCBjb2Rl LgorICAgICAqLworICAgIGxpc3RfZGVsX3JjdSgmZGF0YS0+YXBwbGllZF9saXN0KTsKKworICAg IHJldHVybiAwOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBpcyBleGVjdXRlZCBoYXZpbmcg YWxsIG90aGVyIENQVXMgd2l0aCBubyBkZWVwIHN0YWNrICh3ZSBtYXkKKyAqIGhhdmUgY3B1X2lk bGUgb24gaXQpIGFuZCBJUlFzIGRpc2FibGVkLgorICovCitzdGF0aWMgdm9pZCB4c3BsaWNlX2Rv X2FjdGlvbih2b2lkKQoreworICAgIGludCByYzsKKyAgICBzdHJ1Y3QgcGF5bG9hZCAqZGF0YSwg Km90aGVyLCAqdG1wOworCisgICAgZGF0YSA9IHhzcGxpY2Vfd29yay5kYXRhOworICAgIC8qCisg ICAgICogVGhpcyBmdW5jdGlvbiBhbmQgdGhlIHRyYW5zaXRpb24gZnJvbSBhc20gdG8gQyBjb2Rl IHNob3VsZCBiZSB0aGUgb25seQorICAgICAqIG9uZSBvbiBhbnkgc3RhY2suIE5vIG5lZWQgdG8g bG9jayB0aGUgcGF5bG9hZCBsaXN0IG9yIGFwcGxpZWQgbGlzdC4KKyAgICAgKi8KKyAgICBzd2l0 Y2ggKCB4c3BsaWNlX3dvcmsuY21kICkKKyAgICB7CisgICAgY2FzZSBYU1BMSUNFX0FDVElPTl9B UFBMWToKKyAgICAgICAgcmMgPSBhcHBseV9wYXlsb2FkKGRhdGEpOworICAgICAgICBpZiAoIHJj ID09IDAgKQorICAgICAgICAgICAgZGF0YS0+c3RhdGUgPSBYU1BMSUNFX1NUQVRFX0FQUExJRUQ7 CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYU1BMSUNFX0FDVElPTl9SRVZFUlQ6CisgICAg ICAgIHJjID0gcmV2ZXJ0X3BheWxvYWQoZGF0YSk7CisgICAgICAgIGlmICggcmMgPT0gMCApCisg ICAgICAgICAgICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRDsKKyAgICAgICAg YnJlYWs7CisKKyAgICBjYXNlIFhTUExJQ0VfQUNUSU9OX1JFUExBQ0U6CisgICAgICAgIHJjID0g MDsKKyAgICAgICAgLyoKKwkgKiBOLkI6IFVzZSAnYXBwbGllZF9saXN0JyBtZW1iZXIsIG5vdCAn bGlzdCcuIFdlIGFsc28gYWJ1c2UgdGhlCisJICogdGhlICdub3JtYWwnIGxpc3QgaXRlcmF0b3Ig YXMgdGhlIGxpc3QgaXMgYW4gUkNVIG9uZS4KKwkgKi8KKyAgICAgICAgbGlzdF9mb3JfZWFjaF9l bnRyeV9zYWZlX3JldmVyc2UgKCBvdGhlciwgdG1wLCAmYXBwbGllZF9saXN0LCBhcHBsaWVkX2xp c3QgKQorICAgICAgICB7CisgICAgICAgICAgICBvdGhlci0+cmMgPSByZXZlcnRfcGF5bG9hZChv dGhlcik7CisgICAgICAgICAgICBpZiAoIG90aGVyLT5yYyA9PSAwICkKKyAgICAgICAgICAgICAg ICBvdGhlci0+c3RhdGUgPSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQ7CisgICAgICAgICAgICBlbHNl CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmMgPSAtRUlOVkFMOworICAgICAgICAg ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCBy YyA9PSAwICkKKyAgICAgICAgeworICAgICAgICAgICAgcmMgPSBhcHBseV9wYXlsb2FkKGRhdGEp OworICAgICAgICAgICAgaWYgKCByYyA9PSAwICkKKyAgICAgICAgICAgICAgICBkYXRhLT5zdGF0 ZSA9IFhTUExJQ0VfU1RBVEVfQVBQTElFRDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKwor ICAgIGRlZmF1bHQ6CisgICAgICAgIHJjID0gLUVJTlZBTDsgLyogTWFrZSBHQ0M1IGhhcHB5LiAq LworICAgICAgICBBU1NFUlRfVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor CisgICAgLyogV2UgbXVzdCBzZXQgcmMgYXMgeHNwbGljZV9hY3Rpb24gc2V0cyBpdCB0byAtRUFH QUlOIHdoZW4ga2lja2luZyBvZi4gKi8KKyAgICBkYXRhLT5yYyA9IHJjOworfQorCitzdGF0aWMg aW50IHNjaGVkdWxlX3dvcmsoc3RydWN0IHBheWxvYWQgKmRhdGEsIHVpbnQzMl90IGNtZCwgdWlu dDMyX3QgdGltZW91dCkKK3sKKyAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnBheWxvYWRfbG9j aykpOworCisgICAgLyogRmFpbCBpZiBhbiBvcGVyYXRpb24gaXMgYWxyZWFkeSBzY2hlZHVsZWQu ICovCisgICAgaWYgKCB4c3BsaWNlX3dvcmsuZG9fd29yayApCisgICAgICAgIHJldHVybiAtRUJV U1k7CisKKyAgICBpZiAoICFnZXRfY3B1X21hcHMoKSApCisgICAgeworICAgICAgICBwcmludGso WEVOTE9HX0VSUiBYU1BMSUNFICIlczogdW5hYmxlIHRvIGdldCBjcHVfbWFwcyBsb2NrIVxuIiwK KyAgICAgICAgICAgICAgIGRhdGEtPm5hbWUpOworICAgICAgICByZXR1cm4gLUVCVVNZOworICAg IH0KKworICAgIHhzcGxpY2Vfd29yay5jbWQgPSBjbWQ7CisgICAgeHNwbGljZV93b3JrLmRhdGEg PSBkYXRhOworICAgIHhzcGxpY2Vfd29yay50aW1lb3V0ID0gdGltZW91dCA/OiBNSUxMSVNFQ1Mo MzApOworCisgICAgZHByaW50ayhYRU5MT0dfREVCVUcsIFhTUExJQ0UgIiVzOiB0aW1lb3V0IGlz ICUiUFJJX3N0aW1lIm1zXG4iLAorICAgICAgICAgICAgZGF0YS0+bmFtZSwgeHNwbGljZV93b3Jr LnRpbWVvdXQgLyBNSUxMSVNFQ1MoMSkpOworCisgICAgYXRvbWljX3NldCgmeHNwbGljZV93b3Jr LnNlbWFwaG9yZSwgLTEpOworCisgICAgeHNwbGljZV93b3JrLnJlYWR5ID0gMDsKKworICAgIHNt cF93bWIoKTsKKworICAgIHhzcGxpY2Vfd29yay5kb193b3JrID0gMTsKKyAgICB0aGlzX2NwdSh3 b3JrX3RvX2RvKSA9IDE7CisKKyAgICBwdXRfY3B1X21hcHMoKTsKKworICAgIHJldHVybiAwOwor fQorCitzdGF0aWMgdm9pZCByZXNjaGVkdWxlX2ZuKHZvaWQgKnVudXNlZCkKK3sKKyAgICB0aGlz X2NwdSh3b3JrX3RvX2RvKSA9IDE7CisgICAgcmFpc2Vfc29mdGlycShTQ0hFRFVMRV9TT0ZUSVJR KTsKK30KKworc3RhdGljIGludCB4c3BsaWNlX3NwaW4oYXRvbWljX3QgKmNvdW50ZXIsIHNfdGlt ZV90IHRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY3B1 cywgY29uc3QgY2hhciAqcykKK3sKKyAgICBpbnQgcmMgPSAwOworCisgICAgd2hpbGUgKCBhdG9t aWNfcmVhZChjb3VudGVyKSAhPSBjcHVzICYmIE5PVygpIDwgdGltZW91dCApCisgICAgICAgIGNw dV9yZWxheCgpOworCisgICAgLyogTG9nICYgYWJvcnQuICovCisgICAgaWYgKCBhdG9taWNfcmVh ZChjb3VudGVyKSAhPSBjcHVzICkKKyAgICB7CisgICAgICAgIHByaW50ayhYRU5MT0dfRVJSIFhT UExJQ0UgIiVzOiBUaW1lZCBvdXQgb24gc2VtYXBob3JlIGluICVzIHF1aWVzY2UgcGhhc2UgJXUv JXVcbiIsCisgICAgICAgICAgICAgICB4c3BsaWNlX3dvcmsuZGF0YS0+bmFtZSwgcywgYXRvbWlj X3JlYWQoY291bnRlciksIGNwdXMpOworICAgICAgICByYyA9IC1FQlVTWTsKKyAgICAgICAgeHNw bGljZV93b3JrLmRhdGEtPnJjID0gcmM7CisgICAgICAgIHNtcF93bWIoKTsKKyAgICAgICAgeHNw bGljZV93b3JrLmRvX3dvcmsgPSAwOworICAgIH0KKworICAgIHJldHVybiByYzsKK30KKworLyoK KyAqIFRoZSBtYWluIGZ1bmN0aW9uIHdoaWNoIG1hbmFnZXMgdGhlIHdvcmsgb2YgcXVpZXNjaW5n IHRoZSBzeXN0ZW0gYW5kCisgKiBwYXRjaGluZyBjb2RlLgorICovCit2b2lkIGNoZWNrX2Zvcl94 c3BsaWNlX3dvcmsodm9pZCkKK3sKKyNkZWZpbmUgQUNUSU9OKHgpIFtYU1BMSUNFX0FDVElPTl8j I3hdID0gI3gKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgbmFtZXNbXSA9IHsKKyAgICAg ICAgICAgIEFDVElPTihBUFBMWSksCisgICAgICAgICAgICBBQ1RJT04oUkVWRVJUKSwKKyAgICAg ICAgICAgIEFDVElPTihSRVBMQUNFKSwKKyAgICB9OworI3VuZGVmIEFDVElPTgorICAgIHVuc2ln bmVkIGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CisgICAgc190aW1lX3QgdGltZW91dDsK KyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworCisgICAgLyogRmFzdCBwYXRoOiBubyB3b3JrIHRv IGRvLiAqLworICAgIGlmICggIXBlcl9jcHUod29ya190b19kbywgY3B1ICkgKQorICAgICAgICBy ZXR1cm47CisKKyAgICBzbXBfcm1iKCk7CisgICAgLyogSW4gY2FzZSB3ZSBhYm9ydGVkLCBvdGhl ciBDUFVzIGNhbiBza2lwIHJpZ2h0IGF3YXkuICovCisgICAgaWYgKCAheHNwbGljZV93b3JrLmRv X3dvcmsgKQorICAgIHsKKyAgICAgICAgcGVyX2NwdSh3b3JrX3RvX2RvLCBjcHUpID0gMDsKKyAg ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChsb2NhbF9pcnFfaXNfZW5hYmxlZCgp KTsKKworICAgIC8qIFNldCBhdCAtMSwgc28gd2lsbCBnbyB1cCB0byBudW1fb25saW5lX2NwdXMg LSAxLiAqLworICAgIGlmICggYXRvbWljX2luY19hbmRfdGVzdCgmeHNwbGljZV93b3JrLnNlbWFw aG9yZSkgKQorICAgIHsKKyAgICAgICAgc3RydWN0IHBheWxvYWQgKnA7CisgICAgICAgIHVuc2ln bmVkIGludCBjcHVzOworCisgICAgICAgIHAgPSB4c3BsaWNlX3dvcmsuZGF0YTsKKyAgICAgICAg aWYgKCAhZ2V0X2NwdV9tYXBzKCkgKQorICAgICAgICB7CisgICAgICAgICAgICBwcmludGsoWEVO TE9HX0VSUiBYU1BMSUNFICIlczogQ1BVJXUgLSB1bmFibGUgdG8gZ2V0IGNwdV9tYXBzIGxvY2sh XG4iLAorICAgICAgICAgICAgICAgICAgIHAtPm5hbWUsIGNwdSk7CisgICAgICAgICAgICBwZXJf Y3B1KHdvcmtfdG9fZG8sIGNwdSkgPSAwOworICAgICAgICAgICAgeHNwbGljZV93b3JrLmRhdGEt PnJjID0gLUVCVVNZOworICAgICAgICAgICAgc21wX3dtYigpOworICAgICAgICAgICAgeHNwbGlj ZV93b3JrLmRvX3dvcmsgPSAwOworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIERvIE5P VCBkZWNyZW1lbnQgeHNwbGljZV93b3JrLnNlbWFwaG9yZSBkb3duIC0gYXMgdGhhdCBtYXkgY2F1 c2UKKyAgICAgICAgICAgICAqIHRoZSBvdGhlciBDUFUgKHdoaWNoIG1heSBiZSBhdCB0aGlzIHBv aW50IHJlYWR5IHRvIGluY3JlbWVudCBpdCkKKyAgICAgICAgICAgICAqIHRvIGFzc3VtZSB0aGUg cm9sZSBvZiBtYXN0ZXIgYW5kIHRoZW4gbmVlZGxlc3NseSB0aW1lIG91dAorICAgICAgICAgICAg ICogb3V0IChhcyBkb193b3JrIGlzIHplcm8pLgorICAgICAgICAgICAgICovCisgICAgICAgICAg ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLyogIk1hc2siIE5NSXMuICovCisgICAgICAg IGFyY2hfeHNwbGljZV9tYXNrKCk7CisKKyAgICAgICAgYmFycmllcigpOyAvKiBNVVNUIGRvIGl0 IGFmdGVyIGdldF9jcHVfbWFwcy4gKi8KKyAgICAgICAgY3B1cyA9IG51bV9vbmxpbmVfY3B1cygp IC0gMTsKKworICAgICAgICBpZiAoIGNwdXMgKQorICAgICAgICB7CisgICAgICAgICAgICBkcHJp bnRrKFhFTkxPR19ERUJVRywgWFNQTElDRSAiJXM6IENQVSV1IC0gSVBJaW5nIHRoZSBvdGhlciAl dSBDUFVzXG4iLAorICAgICAgICAgICAgICAgICAgICBwLT5uYW1lLCBjcHUsIGNwdXMpOworICAg ICAgICAgICAgc21wX2NhbGxfZnVuY3Rpb24ocmVzY2hlZHVsZV9mbiwgTlVMTCwgMCk7CisgICAg ICAgIH0KKworICAgICAgICB0aW1lb3V0ID0geHNwbGljZV93b3JrLnRpbWVvdXQgKyBOT1coKTsK KyAgICAgICAgaWYgKCB4c3BsaWNlX3NwaW4oJnhzcGxpY2Vfd29yay5zZW1hcGhvcmUsIHRpbWVv dXQsIGNwdXMsICJDUFUiKSApCisgICAgICAgICAgICBnb3RvIGFib3J0OworCisgICAgICAgIC8q IEFsbCBDUFVzIGFyZSB3YWl0aW5nLCBub3cgc2lnbmFsIHRvIGRpc2FibGUgSVJRcy4gKi8KKyAg ICAgICAgYXRvbWljX3NldCgmeHNwbGljZV93b3JrLnNlbWFwaG9yZSwgMCk7CisgICAgICAgIC8q CisgICAgICAgICAqIE1VU1QgaGF2ZSBhIGJhcnJpZXIgYWZ0ZXIgc2VtYXBob3JlIHNvIHRoYXQg dGhlIG90aGVyIENQVXMgZG9uJ3QKKyAgICAgICAgICogbGVhayBvdXQgb2YgdGhlICdXYWl0IGZv ciBhbGwgQ1BVcyB0byByZW5kZXp2b3VzJyBsb29wIGFuZCBpbmNyZW1lbnQKKyAgICAgICAgICog J3NlbWFwaG9yZScgYmVmb3JlIHdlIHNldCBpdCB0byB6ZXJvLgorICAgICAgICAgKi8KKyAgICAg ICAgc21wX3dtYigpOworICAgICAgICB4c3BsaWNlX3dvcmsucmVhZHkgPSAxOworCisgICAgICAg IGlmICggIXhzcGxpY2Vfc3BpbigmeHNwbGljZV93b3JrLnNlbWFwaG9yZSwgdGltZW91dCwgY3B1 cywgIklSUSIpICkKKyAgICAgICAgeworICAgICAgICAgICAgbG9jYWxfaXJxX3NhdmUoZmxhZ3Mp OworICAgICAgICAgICAgLyogRG8gdGhlIHBhdGNoaW5nLiAqLworICAgICAgICAgICAgeHNwbGlj ZV9kb19hY3Rpb24oKTsKKyAgICAgICAgICAgIC8qIFNlcmlhbGl6ZSBhbmQgZmx1c2ggb3V0IHRo ZSBDUFUgdmlhIENQVUlEIGluc3RydWN0aW9uIChvbiB4ODYpLiAqLworICAgICAgICAgICAgYXJj aF94c3BsaWNlX3Bvc3RfYWN0aW9uKCk7CisgICAgICAgICAgICBsb2NhbF9pcnFfcmVzdG9yZShm bGFncyk7CisgICAgICAgIH0KKyAgICAgICAgYXJjaF94c3BsaWNlX3VubWFzaygpOworCisgYWJv cnQ6CisgICAgICAgIHBlcl9jcHUod29ya190b19kbywgY3B1KSA9IDA7CisgICAgICAgIHhzcGxp Y2Vfd29yay5kb193b3JrID0gMDsKKworICAgICAgICAvKiBwdXRfY3B1X21hcHMgaGFzIGFuIGJh cnJpZXIoKS4gKi8KKyAgICAgICAgcHV0X2NwdV9tYXBzKCk7CisKKyAgICAgICAgcHJpbnRrKFhF TkxPR19JTkZPIFhTUExJQ0UgIiVzIGZpbmlzaGVkICVzIHdpdGggcmM9JWRcbiIsCisgICAgICAg ICAgICAgICBwLT5uYW1lLCBuYW1lc1t4c3BsaWNlX3dvcmsuY21kXSwgcC0+cmMpOworICAgIH0K KyAgICBlbHNlCisgICAgeworICAgICAgICAvKiBXYWl0IGZvciBhbGwgQ1BVcyB0byByZW5kZXp2 b3VzLiAqLworICAgICAgICB3aGlsZSAoIHhzcGxpY2Vfd29yay5kb193b3JrICYmICF4c3BsaWNl X3dvcmsucmVhZHkgKQorICAgICAgICAgICAgY3B1X3JlbGF4KCk7CisKKyAgICAgICAgLyogRGlz YWJsZSBJUlFzIGFuZCBzaWduYWwuICovCisgICAgICAgIGxvY2FsX2lycV9zYXZlKGZsYWdzKTsK KyAgICAgICAgLyoKKyAgICAgICAgICogV2UgcmUtdXNlIHRoZSBzZW1wYWhvcmUsIHNvIE1VU1Qg aGF2ZSBpdCByZXNldCBieSBtYXN0ZXIgYmVmb3JlCisgICAgICAgICAqIHdlIGV4aXQgdGhlIGxv b3AgYWJvdmUuCisgICAgICAgICAqLworICAgICAgICBhdG9taWNfaW5jKCZ4c3BsaWNlX3dvcmsu c2VtYXBob3JlKTsKKworICAgICAgICAvKiBXYWl0IGZvciBwYXRjaGluZyB0byBjb21wbGV0ZS4g Ki8KKyAgICAgICAgd2hpbGUgKCB4c3BsaWNlX3dvcmsuZG9fd29yayApCisgICAgICAgICAgICBj cHVfcmVsYXgoKTsKKworICAgICAgICAvKiBUbyBmbHVzaCBvdXQgcGlwZWxpbmUuICovCisgICAg ICAgIGFyY2hfeHNwbGljZV9wb3N0X2FjdGlvbigpOworICAgICAgICBsb2NhbF9pcnFfcmVzdG9y ZShmbGFncyk7CisKKyAgICAgICAgcGVyX2NwdSh3b3JrX3RvX2RvLCBjcHUpID0gMDsKKyAgICB9 Cit9CisKIHN0YXRpYyBpbnQgeHNwbGljZV9hY3Rpb24oeGVuX3N5c2N0bF94c3BsaWNlX2FjdGlv bl90ICphY3Rpb24pCiB7CiAgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7CkBAIC00ODgsMjcgKzky NiwyNCBAQCBzdGF0aWMgaW50IHhzcGxpY2VfYWN0aW9uKHhlbl9zeXNjdGxfeHNwbGljZV9hY3Rp b25fdCAqYWN0aW9uKQogICAgIGNhc2UgWFNQTElDRV9BQ1RJT05fUkVWRVJUOgogICAgICAgICBp ZiAoIGRhdGEtPnN0YXRlID09IFhTUExJQ0VfU1RBVEVfQVBQTElFRCApCiAgICAgICAgIHsKLSAg ICAgICAgICAgIC8qIE5vIGltcGxlbWVudGF0aW9uIHlldC4gKi8KLSAgICAgICAgICAgIGRhdGEt PnN0YXRlID0gWFNQTElDRV9TVEFURV9DSEVDS0VEOwotICAgICAgICAgICAgZGF0YS0+cmMgPSAw OworICAgICAgICAgICAgZGF0YS0+cmMgPSAtRUFHQUlOOworICAgICAgICAgICAgcmMgPSBzY2hl ZHVsZV93b3JrKGRhdGEsIGFjdGlvbi0+Y21kLCBhY3Rpb24tPnRpbWVvdXQpOwogICAgICAgICB9 CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBYU1BMSUNFX0FDVElPTl9BUFBMWToKICAgICAg ICAgaWYgKCBkYXRhLT5zdGF0ZSA9PSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQgKQogICAgICAgICB7 Ci0gICAgICAgICAgICAvKiBObyBpbXBsZW1lbnRhdGlvbiB5ZXQuICovCi0gICAgICAgICAgICBk YXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQVBQTElFRDsKLSAgICAgICAgICAgIGRhdGEtPnJj ID0gMDsKKyAgICAgICAgICAgIGRhdGEtPnJjID0gLUVBR0FJTjsKKyAgICAgICAgICAgIHJjID0g c2NoZWR1bGVfd29yayhkYXRhLCBhY3Rpb24tPmNtZCwgYWN0aW9uLT50aW1lb3V0KTsKICAgICAg ICAgfQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgWFNQTElDRV9BQ1RJT05fUkVQTEFDRToK ICAgICAgICAgaWYgKCBkYXRhLT5zdGF0ZSA9PSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQgKQogICAg ICAgICB7Ci0gICAgICAgICAgICAvKiBObyBpbXBsZW1lbnRhdGlvbiB5ZXQuICovCi0gICAgICAg ICAgICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRDsKLSAgICAgICAgICAgIGRh dGEtPnJjID0gMDsKKyAgICAgICAgICAgIGRhdGEtPnJjID0gLUVBR0FJTjsKKyAgICAgICAgICAg IHJjID0gc2NoZWR1bGVfd29yayhkYXRhLCBhY3Rpb24tPmNtZCwgYWN0aW9uLT50aW1lb3V0KTsK ICAgICAgICAgfQogICAgICAgICBicmVhazsKIApAQCAtNTczLDYgKzEwMDgsNyBAQCBzdGF0aWMg Y29uc3QgY2hhciAqc3RhdGUyc3RyKHVuc2lnbmVkIGludCBzdGF0ZSkKIHN0YXRpYyB2b2lkIHhz cGxpY2VfcHJpbnRhbGwodW5zaWduZWQgY2hhciBrZXkpCiB7CiAgICAgc3RydWN0IHBheWxvYWQg KmRhdGE7CisgICAgdW5zaWduZWQgaW50IGk7CiAKICAgICBwcmludGsoIiclYycgcHJlc3NlZCAt IER1bXBpbmcgYWxsIHhzcGxpY2UgcGF0Y2hlc1xuIiwga2V5KTsKIApAQCAtNTgzLDEwICsxMDE5 LDMwIEBAIHN0YXRpYyB2b2lkIHhzcGxpY2VfcHJpbnRhbGwodW5zaWduZWQgY2hhciBrZXkpCiAg ICAgfQogCiAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIGRhdGEsICZwYXlsb2FkX2xpc3QsIGxp c3QgKQorICAgIHsKICAgICAgICAgcHJpbnRrKCIgbmFtZT0lcyBzdGF0ZT0lcyglZCkgJXAgKC5k YXRhPSVwLCAucm9kYXRhPSVwKSB1c2luZyAldSBwYWdlcy5cbiIsCiAgICAgICAgICAgICAgICBk YXRhLT5uYW1lLCBzdGF0ZTJzdHIoZGF0YS0+c3RhdGUpLCBkYXRhLT5zdGF0ZSwgZGF0YS0+dGV4 dF9hZGRyLAogICAgICAgICAgICAgICAgZGF0YS0+cndfYWRkciwgZGF0YS0+cm9fYWRkciwgZGF0 YS0+cGFnZXMpOwogCisgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgZGF0YS0+bmZ1bmNzOyBpKysg KQorICAgICAgICB7CisgICAgICAgICAgICBzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jICpmID0g JihkYXRhLT5mdW5jc1tpXSk7CisgICAgICAgICAgICBwcmludGsoIiAgICAlcyBwYXRjaCAlcCgl dSkgd2l0aCAlcCAoJXUpXG4iLAorICAgICAgICAgICAgICAgICAgIGYtPm5hbWUsIGYtPm9sZF9h ZGRyLCBmLT5vbGRfc2l6ZSwgZi0+bmV3X2FkZHIsIGYtPm5ld19zaXplKTsKKworICAgICAgICAg ICAgaWYgKCBpICYmICEoaSAlIDY0KSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg c3Bpbl91bmxvY2soJnBheWxvYWRfbG9jayk7CisgICAgICAgICAgICAgICAgcHJvY2Vzc19wZW5k aW5nX3NvZnRpcnFzKCk7CisgICAgICAgICAgICAgICAgaWYgKCBzcGluX3RyeWxvY2soJnBheWxv YWRfbG9jaykgKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRr KCJDb3VsZG4ndCByZWFjcXVpcmUgbG9jay4gVHJ5IGFnYWluLlxuIik7CisgICAgICAgICAgICAg ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg IH0KKyAgICB9CisKICAgICBzcGluX3VubG9jaygmcGF5bG9hZF9sb2NrKTsKIH0KIApkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9jdXJyZW50LmggYi94ZW4vaW5jbHVkZS9hc20teDg2 L2N1cnJlbnQuaAppbmRleCA0MDgzMjYxLi43M2E3MjA5IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVk ZS9hc20teDg2L2N1cnJlbnQuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2N1cnJlbnQuaApA QCAtODYsMTAgKzg2LDE4IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGNwdV9pbmZvICpnZXRfY3B1 X2luZm8odm9pZCkKIHVuc2lnbmVkIGxvbmcgZ2V0X3N0YWNrX3RyYWNlX2JvdHRvbSh1bnNpZ25l ZCBsb25nIHNwKTsKIHVuc2lnbmVkIGxvbmcgZ2V0X3N0YWNrX2R1bXBfYm90dG9tICh1bnNpZ25l ZCBsb25nIHNwKTsKIAorI2lmZGVmIENPTkZJR19YU1BMSUNFCisjIGRlZmluZSBDSEVDS19GT1Jf WFNQTElDRV9XT1JLICJjYWxsIGNoZWNrX2Zvcl94c3BsaWNlX3dvcms7IgorI2Vsc2UKKyMgZGVm aW5lIENIRUNLX0ZPUl9YU1BMSUNFX1dPUksgIiIKKyNlbmRpZgorCiAjZGVmaW5lIHJlc2V0X3N0 YWNrX2FuZF9qdW1wKF9fZm4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CiAgICAgKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCiAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICggICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAibW92ICUw LCUlIl9fT1Aic3A7IGptcCAlYzEiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgICAgICAgICAibW92ICUwLCUlIl9fT1Aic3A7IiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisgICAgICAgICAgICBDSEVDS19GT1JfWFNQTElDRV9XT1JLICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgImptcCAlYzEi ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg ICAgICAgICA6IDogInIiIChndWVzdF9jcHVfdXNlcl9yZWdzKCkpLCAiaSIgKF9fZm4pIDogIm1l bW9yeSIgKTsgICBcCiAgICAgICAgIHVucmVhY2hhYmxlKCk7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSkKZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL3B1YmxpYy9zeXNjdGwuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaAppbmRl eCAzZmExZmU3Li5iMmIzMTJiIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3Rs LmgKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL3N5c2N0bC5oCkBAIC04NjksNiArODY5LDI2IEBA IERFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9zeXNjdGxfZmVhdHVyZXNldF90KTsKICAqICAg ICBJZiB6ZXJvIGV4aXQgd2l0aCBzdWNjZXNzLgogICovCiAKKyNkZWZpbmUgWFNQTElDRV9QQVlM T0FEX1ZFUlNJT04gMQorLyoKKyAqIC54c3BsaWNlLmZ1bmNzIHN0cnVjdHVyZSBsYXlvdXQgZGVm aW5lZCBpbiB0aGUgYFBheWxvYWQgZm9ybWF0YAorICogc2VjdGlvbiBpbiB0aGUgeFNwbGljZSBk ZXNpZ24gZG9jdW1lbnQuCisgKgorICogV2UgZ3VhcmQgdGhpcyB3aXRoIF9fWEVOX18gYXMgdG9v bHN0YWNrcyBTSE9VTEQgbm90IHVzZSBpdC4KKyAqLworI2lmZGVmIF9fWEVOX18KK3N0cnVjdCB4 c3BsaWNlX3BhdGNoX2Z1bmMgeworICAgIGNvbnN0IGNoYXIgKm5hbWU7ICAgICAgIC8qIE5hbWUg b2YgZnVuY3Rpb24gdG8gYmUgcGF0Y2hlZC4gKi8KKyAgICB2b2lkICpuZXdfYWRkcjsKKyAgICB2 b2lkICpvbGRfYWRkcjsKKyAgICB1aW50MzJfdCBuZXdfc2l6ZTsKKyAgICB1aW50MzJfdCBvbGRf c2l6ZTsKKyAgICB1aW50OF90IHZlcnNpb247ICAgICAgICAvKiBNVVNUIGJlIFhTUExJQ0VfUEFZ TE9BRF9WRVJTSU9OLiAqLworICAgIHVpbnQ4X3Qgb3BhcXVlWzMxXTsKK307Cit0eXBlZGVmIHN0 cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgeHNwbGljZV9wYXRjaF9mdW5jX3Q7CisjZW5kaWYKKwog LyoKICAqIFN0cnVjdHVyZSBkZXNjcmliaW5nIGFuIEVMRiBwYXlsb2FkLiBVbmlxdWVseSBpZGVu dGlmaWVzIHRoZQogICogcGF5bG9hZC4gU2hvdWxkIGJlIGh1bWFuIHJlYWRhYmxlLgpkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaCBiL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNl LmgKaW5kZXggODU3YzI2NC4uYzk3MjNlNCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3hz cGxpY2UuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oCkBAIC0xMSwxMiArMTEsMTYg QEAgc3RydWN0IHhzcGxpY2VfZWxmX3NlYzsKIHN0cnVjdCB4c3BsaWNlX2VsZl9zeW07CiBzdHJ1 Y3QgeGVuX3N5c2N0bF94c3BsaWNlX29wOwogCisjaW5jbHVkZSA8eGVuL2VsZnN0cnVjdHMuaD4K ICNpZmRlZiBDT05GSUdfWFNQTElDRQogCiAvKiBDb252ZW5pZW5jZSBkZWZpbmUgZm9yIHByaW50 ay4gKi8KICNkZWZpbmUgWFNQTElDRSAgICAgICAgICAgICAieHNwbGljZTogIgorLyogRUxGIHBh eWxvYWQgc3BlY2lhbCBzZWN0aW9uIG5hbWVzLiAqLworI2RlZmluZSBFTEZfWFNQTElDRV9GVU5D ICAgICIueHNwbGljZS5mdW5jcyIKIAogaW50IHhzcGxpY2Vfb3Aoc3RydWN0IHhlbl9zeXNjdGxf eHNwbGljZV9vcCAqKTsKK3ZvaWQgY2hlY2tfZm9yX3hzcGxpY2Vfd29yayh2b2lkKTsKIAogLyog QXJjaCBob29rcy4gKi8KIGludCBhcmNoX3hzcGxpY2VfdmVyaWZ5X2VsZihjb25zdCBzdHJ1Y3Qg eHNwbGljZV9lbGYgKmVsZik7CkBAIC0zOSw2ICs0MywyMiBAQCBlbnVtIHZhX3R5cGUgewogaW50 IGFyY2hfeHNwbGljZV9zZWN1cmUoY29uc3Qgdm9pZCAqdmEsIHVuc2lnbmVkIGludCBwYWdlcywg ZW51bSB2YV90eXBlIHR5cGVzKTsKIAogdm9pZCBhcmNoX3hzcGxpY2VfaW5pdCh2b2lkKTsKKwor I2luY2x1ZGUgPHB1YmxpYy9zeXNjdGwuaD4gLyogRm9yIHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1 bmMuICovCitpbnQgYXJjaF94c3BsaWNlX3ZlcmlmeV9mdW5jKGNvbnN0IHN0cnVjdCB4c3BsaWNl X3BhdGNoX2Z1bmMgKmZ1bmMpOworLyoKKyAqIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGFy b3VuZCB0aGUgY3JpdGljYWwgcmVnaW9uIHBhdGNoaW5nIGxpdmUgY29kZSwKKyAqIGZvciBhbiBh cmNoaXRlY3R1cmUgdG8gdGFrZSBtYWtlIGFwcHJvcHJhdGllIGdsb2JhbCBzdGF0ZSBhZGp1c3Rt ZW50cy4KKyAqLwordm9pZCBhcmNoX3hzcGxpY2VfcGF0Y2hpbmdfZW50ZXIodm9pZCk7Cit2b2lk IGFyY2hfeHNwbGljZV9wYXRjaGluZ19sZWF2ZSh2b2lkKTsKKwordm9pZCBhcmNoX3hzcGxpY2Vf YXBwbHlfam1wKHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgKmZ1bmMpOwordm9pZCBhcmNoX3hz cGxpY2VfcmV2ZXJ0X2ptcChjb25zdCBzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jICpmdW5jKTsK K3ZvaWQgYXJjaF94c3BsaWNlX3Bvc3RfYWN0aW9uKHZvaWQpOworCit2b2lkIGFyY2hfeHNwbGlj ZV9tYXNrKHZvaWQpOwordm9pZCBhcmNoX3hzcGxpY2VfdW5tYXNrKHZvaWQpOwogI2Vsc2UKIAog I2luY2x1ZGUgPHhlbi9lcnJuby5oPiAvKiBGb3IgLUVOT1NZUyAqLwpAQCAtNDcsNiArNjcsNyBA QCBzdGF0aWMgaW5saW5lIGludCB4c3BsaWNlX29wKHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vf b3AgKm9wKQogICAgIHJldHVybiAtRU5PU1lTOwogfQogCitzdGF0aWMgaW5saW5lIHZvaWQgY2hl Y2tfZm9yX3hzcGxpY2Vfd29yayh2b2lkKSB7IH07CiAjZW5kaWYgLyogQ09ORklHX1hTUExJQ0Ug Ki8KIAogI2VuZGlmIC8qIF9fWEVOX1hTUExJQ0VfSF9fICovCi0tIAoyLjUuMAoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRl dmVsCg==