From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v8 10/25] xsplice: Implement support for applying/reverting/replacing patches. Date: Wed, 13 Apr 2016 17:09:41 -0400 Message-ID: <1460581796-30071-11-git-send-email-konrad.wilk@oracle.com> References: <1460581796-30071-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aqS3R-0006R2-GY for xen-devel@lists.xenproject.org; Wed, 13 Apr 2016 21:10:29 +0000 In-Reply-To: <1460581796-30071-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 IE9uY2UgYWxsIENQVXMKaGF2ZSByZW5kZXp2b3VzZWQsIGFsbCBDUFVzIGRpc2FibGUgSVJRcyBh bmQgTk1JcyBhcmUgaWdub3JlZC4KVGhlIHN5c3RlbSBpcyB0aGVuIHF1aXNjaWVudCBhbmQgdGhl IG1hc3RlciBwZXJmb3JtcyB0aGUgYWN0aW9uLgpBZnRlciB0aGlzLCBhbGwgQ1BVcyBlbmFibGUg SVJRcyBhbmQgTk1JcyBhcmUgcmUtZW5hYmxlZC4KCk5vdGUgdGhhdCBpdCBpcyB1bnNhZmUgdG8g cGF0Y2ggZG9fbm1pIGFuZCB0aGUgeFNwbGljZSBpbnRlcm5hbCBmdW5jdGlvbnMuClBhdGNoaW5n IGZ1bmN0aW9ucyBvbiBOTUkvTUNFIHBhdGggaXMgbGlhYmxlIHRvIGVuZCBpbiBkaXNhc3Rlci4K VGhpcyBpcyBub3QgYWRkcmVzc2VkIGluIHRoaXMgcGF0Y2ggYW5kIGlzIG1lbnRpb25lZCBpbiB0 aGUKZGVzaWduIGRvYyBhcyBhIGZ1cnRoZXIgVE9ETy4KClRoZSBhY3Rpb24gdG8gcGVyZm9ybSBp cyBvbmUgb2Y6Ci0gQVBQTFk6IEZvciBlYWNoIGZ1bmN0aW9uIGluIHRoZSBtb2R1bGUsIHN0b3Jl IHRoZSBmaXJzdCA1IGJ5dGVzIG9mIHRoZQogIG9sZCBmdW5jdGlvbiBhbmQgcmVwbGFjZSBpdCB3 aXRoIGEganVtcCB0byB0aGUgbmV3IGZ1bmN0aW9uLgotIFJFVkVSVDogQ29weSB0aGUgcHJldmlv dXNseSBzdG9yZWQgYnl0ZXMgaW50byB0aGUgZmlyc3QgNSBieXRlcyBvZiB0aGUKICBvbGQgZnVu Y3Rpb24uCi0gUkVQTEFDRTogUmV2ZXJ0IGVhY2ggYXBwbGllZCBtb2R1bGUgYW5kIHRoZW4gYXBw bHkgdGhlIG5ldyBtb2R1bGUuCgpUbyBwcmV2ZW50IGEgZGVhZGxvY2sgd2l0aCBhbnkgb3RoZXIg YmFycmllciBpbiB0aGUgc3lzdGVtLCB0aGUgbWFzdGVyCndpbGwgd2FpdCBmb3IgdXAgdG8gMzBt cyBiZWZvcmUgdGltaW5nIG91dC4KTWVhc3VyZW1lbnRzIGZvdW5kIHRoYXQgdGhlIHBhdGNoIGFw cGxpY2F0aW9uIHRvIHRha2UgYWJvdXQgMTAwIM68cyBvbiBhCjcyIENQVSBzeXN0ZW0sIHdoZXRo ZXIgaWRsZSBvciBmdWxseSBsb2FkZWQuCgpXZSBhbHNvIGFkZCBhbiBCVUlMRF9PTiB0byBtYWtl IHN1cmUgdGhhdCB0aGUgc2l6ZSBvZiB0aGUgc3RydWN0dXJlCm9mIHRoZSBwYXlsb2FkIGlzIG5v dCBpbmFkdmVydGx5IGNoYW5nZWQgYW5kIHRoYXQgdGhlIG9mZnNldHMgYXJlCmNvcnJlY3Qgb24g Ym90aCAzMiBhbmQgNjQtYml0IGh5cGVydmlzb3IgKEFSTTMyIGFuZCBBUk02NCkuClRvIG1ha2Ug dGhpcyB3b3JrLCB3ZSBtYWtlIHRoZSBwdWJsaWMgaGVhZGVyIHVzZSBhcmNoaXRlY3R1cmUKbmV1 dHJhbCBtZW1iZXJzICh4ZW5fdWxvbmdfdCkgYnV0IGZvciBwZXItYXJjaGl0ZWN0dXJlIGhhdmUg dG8KZmlkZGxlIHdpdGggcGFkZGluZy4KClNpZ25lZC1vZmYtYnk6IFJvc3MgTGFnZXJ3YWxsIDxy b3NzLmxhZ2Vyd2FsbEBjaXRyaXguY29tPgpTaWduZWQtb2ZmLWJ5OiBLb25yYWQgUnplc3p1dGVr IFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXcgQ29vcGVy IDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgoKLS0KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8 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 IEphbiBkb2VzIG5vdCB3YW50CiAgICBCSVRTX1BFUl9MT05HKS4KLS0tCiBkb2NzL21pc2MveHNw bGljZS5tYXJrZG93biAgICB8ICAgOCArLQogeGVuL2FyY2gvYXJtL3hzcGxpY2UuYyAgICAgICAg fCAgMzMgKysrCiB4ZW4vYXJjaC94ODYvZG9tYWluLmMgICAgICAgICB8ICAgMiArCiB4ZW4vYXJj aC94ODYveHNwbGljZS5jICAgICAgICB8ICA4OCArKysrKysrLQogeGVuL2NvbW1vbi94c3BsaWNl LmMgICAgICAgICAgfCA0NzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystCiB4ZW4vaW5jbHVkZS9hc20teDg2L2N1cnJlbnQuaCB8ICAxMCArLQogeGVuL2luY2x1ZGUv cHVibGljL3N5c2N0bC5oICAgfCAgMjcgKysrCiB4ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oICAg ICB8ICA0NyArKysrKwogOCBmaWxlcyBjaGFuZ2VkLCA2NzAgaW5zZXJ0aW9ucygrKSwgMTggZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jcy9taXNjL3hzcGxpY2UubWFya2Rvd24gYi9kb2Nz L21pc2MveHNwbGljZS5tYXJrZG93bgppbmRleCBkNGU3ZDc1Li43YTE5YjYwIDEwMDY0NAotLS0g YS9kb2NzL21pc2MveHNwbGljZS5tYXJrZG93bgorKysgYi9kb2NzL21pc2MveHNwbGljZS5tYXJr ZG93bgpAQCAtMjg5LDggKzI4OSwxMyBAQCBkZXNjcmliaW5nIHRoZSBmdW5jdGlvbnMgdG8gYmUg cGF0Y2hlZDoKIDxwcmU+CiBzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jIHsgIAogICAgIGNvbnN0 IGNoYXIgKm5hbWU7ICAKKyNpZiBCSVRTX1BFUl9MT05HID09IDMyICAKKyAgICB1aW50MzJfdCBu ZXdfYWRkcjsgIAorICAgIHVpbnQzMl90IG9sZF9hZGRyOyAgCisjZWxzZSAgCiAgICAgdWludDY0 X3QgbmV3X2FkZHI7ICAKICAgICB1aW50NjRfdCBvbGRfYWRkcjsgIAorI2VuZGlmCiAgICAgdWlu dDMyX3QgbmV3X3NpemU7ICAKICAgICB1aW50MzJfdCBvbGRfc2l6ZTsgIAogICAgIHVpbnQ4X3Qg dmVyc2lvbjsgIApAQCAtMjk4LDcgKzMwMyw4IEBAIHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMg ewogfTsgIAogPC9wcmU+CiAKLVRoZSBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaXMgNjQgYnl0ZXMu CitUaGUgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGlzIDY0IGJ5dGVzIG9yIDUyIGJ5dGVzIGlmIGNv bXBpbGVkIHVuZGVyIDMyLWJpdAoraHlwZXJ2aXNvcnMuCiAKICogYG5hbWVgIGlzIHRoZSBzeW1i b2wgbmFtZSBvZiB0aGUgb2xkIGZ1bmN0aW9uLiBPbmx5IHVzZWQgaWYgYG9sZF9hZGRyYCBpcwog ICAgemVybywgb3RoZXJ3aXNlIHdpbGwgYmUgdXNlZCBkdXJpbmcgZHluYW1pYyBsaW5raW5nICh3 aGVuIGh5cGVydmlzb3IgbG9hZHMKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS94c3BsaWNlLmMg Yi94ZW4vYXJjaC9hcm0veHNwbGljZS5jCmluZGV4IDQ0NjUyNDQuLjU0OTEzMTcgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL2FybS94c3BsaWNlLmMKKysrIGIveGVuL2FyY2gvYXJtL3hzcGxpY2UuYwpA QCAtNiw2ICs2LDM5IEBACiAjaW5jbHVkZSA8eGVuL3hzcGxpY2VfZWxmLmg+CiAjaW5jbHVkZSA8 eGVuL3hzcGxpY2UuaD4KIAordm9pZCBhcmNoX3hzcGxpY2VfcGF0Y2hpbmdfZW50ZXIodm9pZCkK K3sKK30KKwordm9pZCBhcmNoX3hzcGxpY2VfcGF0Y2hpbmdfbGVhdmUodm9pZCkKK3sKK30KKwor aW50IGFyY2hfeHNwbGljZV92ZXJpZnlfZnVuYyhjb25zdCBzdHJ1Y3QgeHNwbGljZV9wYXRjaF9m dW5jX2ludGVybmFsICpmdW5jKQoreworICAgIHJldHVybiAtRU5PU1lTOworfQorCit2b2lkIGFy Y2hfeHNwbGljZV9hcHBseV9qbXAoc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuY19pbnRlcm5hbCAq ZnVuYykKK3sKK30KKwordm9pZCBhcmNoX3hzcGxpY2VfcmV2ZXJ0X2ptcChjb25zdCBzdHJ1Y3Qg eHNwbGljZV9wYXRjaF9mdW5jX2ludGVybmFsICpmdW5jKQoreworfQorCit2b2lkIGFyY2hfeHNw bGljZV9wb3N0X2FjdGlvbih2b2lkKQoreworfQorCit2b2lkIGFyY2hfeHNwbGljZV9tYXNrKHZv aWQpCit7Cit9CisKK3ZvaWQgYXJjaF94c3BsaWNlX3VubWFzayh2b2lkKQoreworfQorCiBpbnQg YXJjaF94c3BsaWNlX3ZlcmlmeV9lbGYoY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCiB7 CiAgICAgcmV0dXJuIC1FTk9TWVM7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZG9tYWluLmMg Yi94ZW4vYXJjaC94ODYvZG9tYWluLmMKaW5kZXggZTkzZmYyMC4uMmQ3OTMyZiAxMDA2NDQKLS0t IGEveGVuL2FyY2gveDg2L2RvbWFpbi5jCisrKyBiL3hlbi9hcmNoL3g4Ni9kb21haW4uYwpAQCAt MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPHhlbi9jcHUuaD4KICNpbmNsdWRlIDx4ZW4vd2FpdC5o PgogI2luY2x1ZGUgPHhlbi9ndWVzdF9hY2Nlc3MuaD4KKyNpbmNsdWRlIDx4ZW4veHNwbGljZS5o PgogI2luY2x1ZGUgPHB1YmxpYy9zeXNjdGwuaD4KICNpbmNsdWRlIDxwdWJsaWMvaHZtL2h2bV92 Y3B1Lmg+CiAjaW5jbHVkZSA8YXNtL3JlZ3MuaD4KQEAgLTEyMCw2ICsxMjEsNyBAQCBzdGF0aWMg dm9pZCBpZGxlX2xvb3Aodm9pZCkKICAgICAgICAgKCpwbV9pZGxlKSgpOwogICAgICAgICBkb190 YXNrbGV0KCk7CiAgICAgICAgIGRvX3NvZnRpcnEoKTsKKyAgICAgICAgY2hlY2tfZm9yX3hzcGxp Y2Vfd29yaygpOyAvKiBNdXN0IGJlIGxhc3QuICovCiAgICAgfQogfQogCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYveHNwbGljZS5jIGIveGVuL2FyY2gveDg2L3hzcGxpY2UuYwppbmRleCAzMDAw ZWNiLi5hMTgwYWY4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYveHNwbGljZS5jCisrKyBiL3hl bi9hcmNoL3g4Ni94c3BsaWNlLmMKQEAgLTEwLDYgKzEwLDgyIEBACiAjaW5jbHVkZSA8eGVuL3hz cGxpY2VfZWxmLmg+CiAjaW5jbHVkZSA8eGVuL3hzcGxpY2UuaD4KIAorI2luY2x1ZGUgPGFzbS9u bWkuaD4KKworI2RlZmluZSBQQVRDSF9JTlNOX1NJWkUgNQorCit2b2lkIGFyY2hfeHNwbGljZV9w YXRjaGluZ19lbnRlcih2b2lkKQoreworICAgIC8qIERpc2FibGUgV1AgdG8gYWxsb3cgY2hhbmdl cyB0byByZWFkLW9ubHkgcGFnZXMuICovCisgICAgd3JpdGVfY3IwKHJlYWRfY3IwKCkgJiB+WDg2 X0NSMF9XUCk7Cit9CisKK3ZvaWQgYXJjaF94c3BsaWNlX3BhdGNoaW5nX2xlYXZlKHZvaWQpCit7 CisgICAgLyogUmVpbnN0YXRlIFdQLiAqLworICAgIHdyaXRlX2NyMChyZWFkX2NyMCgpIHwgWDg2 X0NSMF9XUCk7Cit9CisKK2ludCBhcmNoX3hzcGxpY2VfdmVyaWZ5X2Z1bmMoY29uc3Qgc3RydWN0 IHhzcGxpY2VfcGF0Y2hfZnVuY19pbnRlcm5hbCAqZnVuYykKK3sKKyAgICAvKiBObyBOT1AgcGF0 Y2hpbmcgeWV0LiAqLworICAgIGlmICggIWZ1bmMtPm5ld19zaXplICkKKyAgICAgICAgcmV0dXJu IC1FT1BOT1RTVVBQOworCisgICAgaWYgKCBmdW5jLT5vbGRfc2l6ZSA8IFBBVENIX0lOU05fU0la RSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQg YXJjaF94c3BsaWNlX2FwcGx5X2ptcChzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jX2ludGVybmFs ICpmdW5jKQoreworICAgIGludDMyX3QgdmFsOworICAgIHVpbnQ4X3QgKm9sZF9wdHI7CisKKyAg ICBCVUlMRF9CVUdfT04oUEFUQ0hfSU5TTl9TSVpFID4gc2l6ZW9mKGZ1bmMtPnUudW5kbykpOwor ICAgIEJVSUxEX0JVR19PTihQQVRDSF9JTlNOX1NJWkUgIT0gKDEgKyBzaXplb2YgdmFsKSk7CisK KyAgICBvbGRfcHRyID0gZnVuYy0+b2xkX2FkZHI7CisgICAgbWVtY3B5KGZ1bmMtPnUudW5kbywg b2xkX3B0ciwgUEFUQ0hfSU5TTl9TSVpFKTsKKworICAgICpvbGRfcHRyKysgPSAweGU5OyAvKiBS ZWxhdGl2ZSBqdW1wICovCisgICAgdmFsID0gZnVuYy0+bmV3X2FkZHIgLSBmdW5jLT5vbGRfYWRk ciAtIFBBVENIX0lOU05fU0laRTsKKyAgICBtZW1jcHkob2xkX3B0ciwgJnZhbCwgc2l6ZW9mIHZh bCk7Cit9CisKK3ZvaWQgYXJjaF94c3BsaWNlX3JldmVydF9qbXAoY29uc3Qgc3RydWN0IHhzcGxp Y2VfcGF0Y2hfZnVuY19pbnRlcm5hbCAqZnVuYykKK3sKKyAgICBtZW1jcHkoZnVuYy0+b2xkX2Fk ZHIsIGZ1bmMtPnUudW5kbywgUEFUQ0hfSU5TTl9TSVpFKTsKK30KKworLyogU2VyaWFsaXNlIHRo ZSBDUFUgcGlwZWxpbmUuICovCit2b2lkIGFyY2hfeHNwbGljZV9wb3N0X2FjdGlvbih2b2lkKQor eworICAgIGNwdWlkX2VheCgwKTsKK30KKworc3RhdGljIG5taV9jYWxsYmFja190ICpzYXZlZF9u bWlfY2FsbGJhY2s7CisvKgorICogTm90ZSB0aGF0IGJlY2F1c2Ugb2YgdGhpcyBOT1AgY29kZSB0 aGUgZG9fbm1pIGlzIG5vdCBzYWZlbHkgcGF0Y2hhYmxlLgorICogQWxzbyBpZiB3ZSBkbyByZWNl aXZlICdyZWFsJyBOTUlzIHdlIGhhdmUgbG9zdCB0aGVtLiBEaXR0byBmb3IgTUNFLgorICovCitz dGF0aWMgaW50IG1hc2tfbm1pX2NhbGxiYWNrKGNvbnN0IHN0cnVjdCBjcHVfdXNlcl9yZWdzICpy ZWdzLCBpbnQgY3B1KQoreworICAgIC8qIFRPRE86IEhhbmRsZSBtaXNzaW5nIE5NSS9NQ0UuKi8K KyAgICByZXR1cm4gMTsKK30KKwordm9pZCBhcmNoX3hzcGxpY2VfbWFzayh2b2lkKQoreworICAg IHNhdmVkX25taV9jYWxsYmFjayA9IHNldF9ubWlfY2FsbGJhY2sobWFza19ubWlfY2FsbGJhY2sp OworfQorCit2b2lkIGFyY2hfeHNwbGljZV91bm1hc2sodm9pZCkKK3sKKyAgICBzZXRfbm1pX2Nh bGxiYWNrKHNhdmVkX25taV9jYWxsYmFjayk7Cit9CisKIGludCBhcmNoX3hzcGxpY2VfdmVyaWZ5 X2VsZihjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZikKIHsKIApAQCAtMTQ4LDEyICsyMjQs MTIgQEAgaW50IGFyY2hfeHNwbGljZV9zZWN1cmUodm9pZCAqdmEsIHVuc2lnbmVkIGludCBwYWdl cywgZW51bSB2YV90eXBlIHR5cGUpCiAgICAgQVNTRVJUKHZhKTsKICAgICBBU1NFUlQocGFnZXMp OwogCi0gICAgaWYgKCB0eXBlID09IFhTUExJQ0VfVkFfUlggKSAvKiBQQUdFX0hZUEVSVklTT1Jf UlggKi8KLSAgICAgICAgZmxhZyA9IF9QQUdFX1BSRVNFTlQ7Ci0gICAgZWxzZSBpZiAoIHR5cGUg PT0gWFNQTElDRV9WQV9SVyApIC8qIFBBR0VfSFlQRVJWSVNPUl9SVyAqLwotICAgICAgICBmbGFn ID0gX1BBR0VfUlcgfCBfUEFHRV9OWCB8IF9QQUdFX1BSRVNFTlQ7Ci0gICAgZWxzZSAvKiBQQUdF X0hZUEVSVklTT1JfUk8gKi8KLSAgICAgICAgZmxhZyA9IF9QQUdFX05YIHwgX1BBR0VfUFJFU0VO VDsKKyAgICBpZiAoIHR5cGUgPT0gWFNQTElDRV9WQV9SWCApCisgICAgICAgIGZsYWcgPSBQQUdF X0hZUEVSVklTT1JfUlg7CisgICAgZWxzZSBpZiAoIHR5cGUgPT0gWFNQTElDRV9WQV9SVyApCisg ICAgICAgIGZsYWcgPSBQQUdFX0hZUEVSVklTT1JfUlc7CisgICAgZWxzZQorICAgICAgICBmbGFn ID0gUEFHRV9IWVBFUlZJU09SX1JPOwogCiAgICAgLyogVGhlIG9uZXMgd2UgYXJlIGFsbG93ZWQg dG8gbW9kaWZ5IGFyZTogX1BBR0VfTlh8X1BBR0VfUld8X1BBR0VfUFJFU0VOVCAqLwogICAgIG1v ZGlmeV94ZW5fbWFwcGluZ3Moc3RhcnQsIHN0YXJ0ICsgcGFnZXMgKiBQQUdFX1NJWkUsIGZsYWcp OwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi94c3BsaWNlLmMgYi94ZW4vY29tbW9uL3hzcGxpY2Uu YwppbmRleCA4MDliMDY3Li45ZTY2OTdlIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3hzcGxpY2Uu YworKysgYi94ZW4vY29tbW9uL3hzcGxpY2UuYwpAQCAtMyw2ICszLDcgQEAKICAqCiAgKi8KIAor I2luY2x1ZGUgPHhlbi9jcHUuaD4KICNpbmNsdWRlIDx4ZW4vZXJyLmg+CiAjaW5jbHVkZSA8eGVu L2d1ZXN0X2FjY2Vzcy5oPgogI2luY2x1ZGUgPHhlbi9rZXloYW5kbGVyLmg+CkBAIC0xMSwxOCAr MTIsMjggQEAKICNpbmNsdWRlIDx4ZW4vbW0uaD4KICNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KICNp bmNsdWRlIDx4ZW4vc21wLmg+CisjaW5jbHVkZSA8eGVuL3NvZnRpcnEuaD4KICNpbmNsdWRlIDx4 ZW4vc3BpbmxvY2suaD4KICNpbmNsdWRlIDx4ZW4vdm1hcC5oPgorI2luY2x1ZGUgPHhlbi93YWl0 Lmg+CiAjaW5jbHVkZSA8eGVuL3hzcGxpY2VfZWxmLmg+CiAjaW5jbHVkZSA8eGVuL3hzcGxpY2Uu aD4KIAogI2luY2x1ZGUgPGFzbS9ldmVudC5oPgogI2luY2x1ZGUgPHB1YmxpYy9zeXNjdGwuaD4K IAotLyogUHJvdGVjdHMgYWdhaW5zdCBwYXlsb2FkX2xpc3Qgb3BlcmF0aW9ucy4gKi8KKy8qCisg KiBQcm90ZWN0cyBhZ2FpbnN0IHBheWxvYWRfbGlzdCBvcGVyYXRpb25zIGFuZCBhbHNvIGFsbG93 cyBvbmx5IG9uZQorICogY2FsbGVyIGluIHNjaGVkdWxlX3dvcmsuCisgKi8KIHN0YXRpYyBERUZJ TkVfU1BJTkxPQ0socGF5bG9hZF9sb2NrKTsKIHN0YXRpYyBMSVNUX0hFQUQocGF5bG9hZF9saXN0 KTsKIAorLyoKKyAqIFBhdGNoZXMgd2hpY2ggaGF2ZSBiZWVuIGFwcGxpZWQuCisgKi8KK3N0YXRp YyBMSVNUX0hFQUQoYXBwbGllZF9saXN0KTsKKwogc3RhdGljIHVuc2lnbmVkIGludCBwYXlsb2Fk X2NudDsKIHN0YXRpYyB1bnNpZ25lZCBpbnQgcGF5bG9hZF92ZXJzaW9uID0gMTsKIApAQCAtMzcs OSArNDgsMzUgQEAgc3RydWN0IHBheWxvYWQgewogICAgIHZvaWQgKnJvX2FkZHI7ICAgICAgICAg ICAgICAgICAgICAgICAvKiBWaXJ0dWFsIGFkZHJlc3Mgb2YgLnJvZGF0YS4gKi8KICAgICBzaXpl X3Qgcm9fc2l6ZTsgICAgICAgICAgICAgICAgICAgICAgLyogLi4gYW5kIGl0cyBzaXplIChpZiBh bnkpLiAqLwogICAgIHNpemVfdCBwYWdlczsgICAgICAgICAgICAgICAgICAgICAgICAvKiBUb3Rh bCBwYWdlcyBmb3IgW3RleHQscncscm9dX2FkZHIgKi8KKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIGFw cGxpZWRfbGlzdDsgICAgICAgLyogTGlua2VkIHRvICdhcHBsaWVkX2xpc3QnLiAqLworICAgIHN0 cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmNfaW50ZXJuYWwgKmZ1bmNzOyAgICAvKiBUaGUgYXJyYXkg b2YgZnVuY3Rpb25zIHRvIHBhdGNoLiAqLworICAgIHVuc2lnbmVkIGludCBuZnVuY3M7ICAgICAg ICAgICAgICAgICAvKiBOciBvZiBmdW5jdGlvbnMgdG8gcGF0Y2guICovCiAgICAgY2hhciBuYW1l W1hFTl9YU1BMSUNFX05BTUVfU0laRV07ICAgIC8qIE5hbWUgb2YgaXQuICovCiB9OwogCisvKiBE ZWZpbmVzIGFuIG91dHN0YW5kaW5nIHBhdGNoaW5nIGFjdGlvbi4gKi8KK3N0cnVjdCB4c3BsaWNl X3dvcmsKK3sKKyAgICBhdG9taWNfdCBzZW1hcGhvcmU7ICAgICAgICAgIC8qIFVzZWQgZm9yIHJl bmRlenZvdXMuICovCisgICAgYXRvbWljX3QgaXJxX3NlbWFwaG9yZTsgICAgICAvKiBVc2VkIHRv IHNpZ25hbCBhbGwgSVJRcyBkaXNhYmxlZC4gKi8KKyAgICB1aW50MzJfdCB0aW1lb3V0OyAgICAg ICAgICAgIC8qIFRpbWVvdXQgdG8gZG8gdGhlIG9wZXJhdGlvbi4gKi8KKyAgICBzdHJ1Y3QgcGF5 bG9hZCAqZGF0YTsgICAgICAgIC8qIFRoZSBwYXlsb2FkIG9uIHdoaWNoIHRvIGFjdC4gKi8KKyAg ICB2b2xhdGlsZSBib29sX3QgZG9fd29yazsgICAgIC8qIFNpZ25hbHMgd29yayB0byBkby4gKi8K KyAgICB2b2xhdGlsZSBib29sX3QgcmVhZHk7ICAgICAgIC8qIFNpZ25hbHMgYWxsIENQVXMgc3lu Y2hyb25pemVkLiAqLworICAgIHVuc2lnbmVkIGludCBjbWQ7ICAgICAgICAgICAgLyogQWN0aW9u IHJlcXVlc3Q6IFhTUExJQ0VfQUNUSU9OXyogKi8KK307CisKKy8qIFRoZXJlIGNhbiBiZSBvbmx5 IG9uZSBvdXRzdGFuZGluZyBwYXRjaGluZyBhY3Rpb24uICovCitzdGF0aWMgc3RydWN0IHhzcGxp Y2Vfd29yayB4c3BsaWNlX3dvcms7CisKKy8qCisgKiBJbmRpY2F0ZSB3aGV0aGVyIHRoZSBDUFUg bmVlZHMgdG8gY29uc3VsdCB4c3BsaWNlX3dvcmsgc3RydWN0dXJlLgorICogV2Ugd2FudCBhbiBw ZXItY3B1IGRhdGEgc3RydWN0dXJlIG90aGVyd2lzZSB0aGUgY2hlY2tfZm9yX3hzcGxpY2Vfd29y aworICogd291bGQgaGFtbWVyIGEgZ2xvYmFsIHhzcGxpY2Vfd29yayBzdHJ1Y3R1cmUgb24gZXZl cnkgZ3Vlc3QgVk1FWElULgorICogSGF2aW5nIGFuIHBlci1jcHUgbGVzc2VucyB0aGUgbG9hZC4K KyAqLworc3RhdGljIERFRklORV9QRVJfQ1BVKGJvb2xfdCwgd29ya190b19kbyk7CisKIHN0YXRp YyBpbnQgdmVyaWZ5X25hbWUoY29uc3QgeGVuX3hzcGxpY2VfbmFtZV90ICpuYW1lLCBjaGFyICpu KQogewogICAgIGlmICggIW5hbWUtPnNpemUgfHwgbmFtZS0+c2l6ZSA+IFhFTl9YU1BMSUNFX05B TUVfU0laRSApCkBAIC0yNTUsNiArMjkyLDk4IEBAIHN0YXRpYyBpbnQgc2VjdXJlX3BheWxvYWQo c3RydWN0IHBheWxvYWQgKnBheWxvYWQsIHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQogICAgIHJl dHVybiByYzsKIH0KIAorc3RhdGljIGludCBjaGVja19zcGVjaWFsX3NlY3Rpb25zKGNvbnN0IHN0 cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQoreworICAgIHVuc2lnbmVkIGludCBpOworICAgIHN0YXRp YyBjb25zdCBjaGFyICpjb25zdCBuYW1lc1tdID0geyAiLnhzcGxpY2UuZnVuY3MiIH07CisgICAg dW5zaWduZWQgaW50IGNvdW50W0FSUkFZX1NJWkUobmFtZXMpXSA9IHsgMCB9OworCisgICAgZm9y ICggaSA9IDA7IGkgPCBBUlJBWV9TSVpFKG5hbWVzKTsgaSsrICkKKyAgICB7CisgICAgICAgIGNv bnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnNlYzsKKworICAgICAgICBzZWMgPSB4c3BsaWNl X2VsZl9zZWNfYnlfbmFtZShlbGYsIG5hbWVzW2ldKTsKKyAgICAgICAgaWYgKCAhc2VjICkKKyAg ICAgICAgeworICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogJXMg aXMgbWlzc2luZyFcbiIsCisgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgbmFtZXNbaV0p OworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKworICAgICAgICBpZiAo ICFzZWMtPnNlYy0+c2hfc2l6ZSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGRwcmludGsoWEVO TE9HX0VSUiwgWFNQTElDRSAiJXM6ICVzIGlzIGVtcHR5IVxuIiwKKyAgICAgICAgICAgICAgICAg ICAgZWxmLT5uYW1lLCBuYW1lc1tpXSk7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAg ICAgICAgfQorICAgICAgICBjb3VudFtpXSsrOworICAgIH0KKworICAgIGZvciAoIGkgPSAwOyBp IDwgQVJSQVlfU0laRShuYW1lcyk7IGkrKyApCisgICAgeworICAgICAgICBpZiAoIGNvdW50W2ld ID4gMSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElD RSAiJXM6ICVzIHdhcyBzZWVuIG1vcmUgdGhhbiBvbmNlIVxuIiwKKyAgICAgICAgICAgICAgICAg ICAgZWxmLT5uYW1lLCBuYW1lc1tpXSk7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAg ICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IHByZXBhcmVf cGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqcGF5bG9hZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQoreworICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNl X2VsZl9zZWMgKnNlYzsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBzdHJ1Y3QgeHNwbGljZV9w YXRjaF9mdW5jX2ludGVybmFsICpmOworCisgICAgc2VjID0geHNwbGljZV9lbGZfc2VjX2J5X25h bWUoZWxmLCAiLnhzcGxpY2UuZnVuY3MiKTsKKyAgICBBU1NFUlQoc2VjKTsKKyAgICBpZiAoIHNl Yy0+c2VjLT5zaF9zaXplICUgc2l6ZW9mKCpwYXlsb2FkLT5mdW5jcykgKQorICAgIHsKKyAgICAg ICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogV3Jvbmcgc2l6ZSBvZiAueHNwbGlj ZS5mdW5jcyFcbiIsCisgICAgICAgICAgICAgICAgZWxmLT5uYW1lKTsKKyAgICAgICAgcmV0dXJu IC1FSU5WQUw7CisgICAgfQorCisgICAgcGF5bG9hZC0+ZnVuY3MgPSBzZWMtPmxvYWRfYWRkcjsK KyAgICBwYXlsb2FkLT5uZnVuY3MgPSBzZWMtPnNlYy0+c2hfc2l6ZSAvIHNpemVvZigqcGF5bG9h ZC0+ZnVuY3MpOworCisgICAgZm9yICggaSA9IDA7IGkgPCBwYXlsb2FkLT5uZnVuY3M7IGkrKyAp CisgICAgeworICAgICAgICBpbnQgcmM7CisgICAgICAgIHVuc2lnbmVkIGludCBqOworCisgICAg ICAgIGYgPSAmKHBheWxvYWQtPmZ1bmNzW2ldKTsKKworICAgICAgICBpZiAoIGYtPnZlcnNpb24g IT0gWFNQTElDRV9QQVlMT0FEX1ZFUlNJT04gKQorICAgICAgICB7CisgICAgICAgICAgICBkcHJp bnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBXcm9uZyB2ZXJzaW9uICgldSkuIEV4cGVjdGVk ICVkIVxuIiwKKyAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBmLT52ZXJzaW9uLCBYU1BM SUNFX1BBWUxPQURfVkVSU0lPTik7CisgICAgICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7Cisg ICAgICAgIH0KKworICAgICAgICBpZiAoICFmLT5uZXdfYWRkciB8fCAhZi0+bmV3X3NpemUgKQor ICAgICAgICB7CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBB ZGRyZXNzIG9yIHNpemUgZmllbGRzIGFyZSB6ZXJvIVxuIiwKKyAgICAgICAgICAgICAgICAgICAg ZWxmLT5uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisKKyAg ICAgICAgcmMgPSBhcmNoX3hzcGxpY2VfdmVyaWZ5X2Z1bmMoZik7CisgICAgICAgIGlmICggcmMg KQorICAgICAgICAgICAgcmV0dXJuIHJjOworCisgICAgICAgIGZvciAoIGogPSAwOyBqIDwgQVJS QVlfU0laRShmLT51LnBhZCk7IGorKyApCisgICAgICAgICAgICBpZiAoIGYtPnUucGFkW2pdICkK KyAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsK K30KKwogc3RhdGljIHZvaWQgZnJlZV9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpkYXRhKQogewog ICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmcGF5bG9hZF9sb2NrKSk7CkBAIC0yODYsNiArNDE1 LDE0IEBAIHN0YXRpYyBpbnQgbG9hZF9wYXlsb2FkX2RhdGEoc3RydWN0IHBheWxvYWQgKnBheWxv YWQsIHZvaWQgKnJhdywgc2l6ZV90IGxlbikKICAgICBpZiAoIHJjICkKICAgICAgICAgZ290byBv dXQ7CiAKKyAgICByYyA9IGNoZWNrX3NwZWNpYWxfc2VjdGlvbnMoJmVsZik7CisgICAgaWYgKCBy YyApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgcmMgPSBwcmVwYXJlX3BheWxvYWQocGF5bG9h ZCwgJmVsZik7CisgICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0OworCiAgICAgcmMgPSBz ZWN1cmVfcGF5bG9hZChwYXlsb2FkLCAmZWxmKTsKIAogIG91dDoKQEAgLTM0Niw2ICs0ODMsNyBA QCBzdGF0aWMgaW50IHhzcGxpY2VfdXBsb2FkKHhlbl9zeXNjdGxfeHNwbGljZV91cGxvYWRfdCAq dXBsb2FkKQogCiAgICAgZGF0YS0+c3RhdGUgPSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQ7CiAgICAg SU5JVF9MSVNUX0hFQUQoJmRhdGEtPmxpc3QpOworICAgIElOSVRfTElTVF9IRUFEKCZkYXRhLT5h cHBsaWVkX2xpc3QpOwogCiAgICAgbGlzdF9hZGRfdGFpbCgmZGF0YS0+bGlzdCwgJnBheWxvYWRf bGlzdCk7CiAgICAgcGF5bG9hZF9jbnQrKzsKQEAgLTQ1Niw2ICs1OTQsMjk1IEBAIHN0YXRpYyBp bnQgeHNwbGljZV9saXN0KHhlbl9zeXNjdGxfeHNwbGljZV9saXN0X3QgKmxpc3QpCiAgICAgcmV0 dXJuIHJjID8gOiBpZHg7CiB9CiAKKy8qCisgKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBnZXQg dGhlIENQVXMgaW50byBhbiBhcHByb3ByaWF0ZSBzdGF0ZSBhbmQKKyAqIGFwcGx5IChvciByZXZl cnQpIGVhY2ggb2YgdGhlIHBheWxvYWQncyBmdW5jdGlvbnMuIFRoaXMgaXMgbmVlZGVkCisgKiBm b3IgWEVOX1NZU0NUTF9YU1BMSUNFX0FDVElPTiBvcGVyYXRpb24gKHNlZSB4c3BsaWNlX2FjdGlv bikuCisgKi8KKworc3RhdGljIGludCBhcHBseV9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpkYXRh KQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgcHJpbnRrKFhFTkxPR19JTkZPIFhTUExJ Q0UgIiVzOiBBcHBseWluZyAldSBmdW5jdGlvbnMuXG4iLAorICAgICAgICAgICAgZGF0YS0+bmFt ZSwgZGF0YS0+bmZ1bmNzKTsKKworICAgIGFyY2hfeHNwbGljZV9wYXRjaGluZ19lbnRlcigpOwor CisgICAgZm9yICggaSA9IDA7IGkgPCBkYXRhLT5uZnVuY3M7IGkrKyApCisgICAgICAgIGFyY2hf eHNwbGljZV9hcHBseV9qbXAoJmRhdGEtPmZ1bmNzW2ldKTsKKworICAgIGFyY2hfeHNwbGljZV9w YXRjaGluZ19sZWF2ZSgpOworCisgICAgbGlzdF9hZGRfdGFpbCgmZGF0YS0+YXBwbGllZF9saXN0 LCAmYXBwbGllZF9saXN0KTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IHJldmVy dF9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpkYXRhKQoreworICAgIHVuc2lnbmVkIGludCBpOwor CisgICAgcHJpbnRrKFhFTkxPR19JTkZPIFhTUExJQ0UgIiVzOiBSZXZlcnRpbmcuXG4iLCBkYXRh LT5uYW1lKTsKKworICAgIGFyY2hfeHNwbGljZV9wYXRjaGluZ19lbnRlcigpOworCisgICAgZm9y ICggaSA9IDA7IGkgPCBkYXRhLT5uZnVuY3M7IGkrKyApCisgICAgICAgIGFyY2hfeHNwbGljZV9y ZXZlcnRfam1wKCZkYXRhLT5mdW5jc1tpXSk7CisKKyAgICBhcmNoX3hzcGxpY2VfcGF0Y2hpbmdf bGVhdmUoKTsKKworICAgIGxpc3RfZGVsX2luaXQoJmRhdGEtPmFwcGxpZWRfbGlzdCk7CisKKyAg ICByZXR1cm4gMDsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgaGF2aW5n IGFsbCBvdGhlciBDUFVzIHdpdGggbm8gc3RhY2sgKHdlIG1heQorICogaGF2ZSBjcHVfaWRsZSBv biBpdCkgYW5kIElSUXMgZGlzYWJsZWQuIFdlIGd1YXJkIGFnYWluc3QgTk1JIGJ5IHRlbXBvcmFy aWx5CisgKiBpbnN0YWxsaW5nIG91ciBOT1AgTk1JIGhhbmRsZXIuCisgKi8KK3N0YXRpYyB2b2lk IHhzcGxpY2VfZG9fYWN0aW9uKHZvaWQpCit7CisgICAgaW50IHJjOworICAgIHN0cnVjdCBwYXls b2FkICpkYXRhLCAqb3RoZXIsICp0bXA7CisKKyAgICBkYXRhID0geHNwbGljZV93b3JrLmRhdGE7 CisgICAgLyoKKyAgICAgKiBOb3cgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdGhlIG9ubHkgb25l IG9uIGFueSBzdGFjay4KKyAgICAgKiBObyBuZWVkIHRvIGxvY2sgdGhlIHBheWxvYWQgbGlzdCBv ciBhcHBsaWVkIGxpc3QuCisgICAgICovCisgICAgc3dpdGNoICggeHNwbGljZV93b3JrLmNtZCAp CisgICAgeworICAgIGNhc2UgWFNQTElDRV9BQ1RJT05fQVBQTFk6CisgICAgICAgIHJjID0gYXBw bHlfcGF5bG9hZChkYXRhKTsKKyAgICAgICAgaWYgKCByYyA9PSAwICkKKyAgICAgICAgICAgIGRh dGEtPnN0YXRlID0gWFNQTElDRV9TVEFURV9BUFBMSUVEOworICAgICAgICBicmVhazsKKworICAg IGNhc2UgWFNQTElDRV9BQ1RJT05fUkVWRVJUOgorICAgICAgICByYyA9IHJldmVydF9wYXlsb2Fk KGRhdGEpOworICAgICAgICBpZiAoIHJjID09IDAgKQorICAgICAgICAgICAgZGF0YS0+c3RhdGUg PSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQ7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYU1BM SUNFX0FDVElPTl9SRVBMQUNFOgorICAgICAgICByYyA9IDA7CisgICAgICAgIC8qIE4uQjogVXNl ICdhcHBsaWVkX2xpc3QnIG1lbWJlciwgbm90ICdsaXN0Jy4gKi8KKyAgICAgICAgbGlzdF9mb3Jf ZWFjaF9lbnRyeV9zYWZlX3JldmVyc2UgKCBvdGhlciwgdG1wLCAmYXBwbGllZF9saXN0LCBhcHBs aWVkX2xpc3QgKQorICAgICAgICB7CisgICAgICAgICAgICBvdGhlci0+cmMgPSByZXZlcnRfcGF5 bG9hZChvdGhlcik7CisgICAgICAgICAgICBpZiAoIG90aGVyLT5yYyA9PSAwICkKKyAgICAgICAg ICAgICAgICBvdGhlci0+c3RhdGUgPSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQ7CisgICAgICAgICAg ICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmMgPSAtRUlOVkFMOworICAg ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg aWYgKCByYyA9PSAwICkKKyAgICAgICAgeworICAgICAgICAgICAgcmMgPSBhcHBseV9wYXlsb2Fk KGRhdGEpOworICAgICAgICAgICAgaWYgKCByYyA9PSAwICkKKyAgICAgICAgICAgICAgICBkYXRh LT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQVBQTElFRDsKKyAgICAgICAgfQorICAgICAgICBicmVh azsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9VTlJFQUNIQUJMRSgpOworICAgICAg ICBicmVhazsKKyAgICB9CisKKyAgICAvKiBXZSBtdXN0IHNldCByYyBhcyB4c3BsaWNlX2FjdGlv biBzZXRzIGl0IHRvIC1FQUdBSU4gd2hlbiBraWNraW5nIG9mLiAqLworICAgIGRhdGEtPnJjID0g cmM7Cit9CisKK3N0YXRpYyBpbnQgc2NoZWR1bGVfd29yayhzdHJ1Y3QgcGF5bG9hZCAqZGF0YSwg dWludDMyX3QgY21kLCB1aW50MzJfdCB0aW1lb3V0KQoreworICAgIEFTU0VSVChzcGluX2lzX2xv Y2tlZCgmcGF5bG9hZF9sb2NrKSk7CisKKyAgICAvKiBGYWlsIGlmIGFuIG9wZXJhdGlvbiBpcyBh bHJlYWR5IHNjaGVkdWxlZC4gKi8KKyAgICBpZiAoIHhzcGxpY2Vfd29yay5kb193b3JrICkKKyAg ICAgICAgcmV0dXJuIC1FQlVTWTsKKworICAgIGlmICggIWdldF9jcHVfbWFwcygpICkKKyAgICB7 CisgICAgICAgIHByaW50ayhYRU5MT0dfRVJSIFhTUExJQ0UgIiVzOiB1bmFibGUgdG8gZ2V0IGNw dV9tYXBzIGxvY2shXG4iLAorICAgICAgICAgICAgICAgZGF0YS0+bmFtZSk7CisgICAgICAgIHJl dHVybiAtRUJVU1k7CisgICAgfQorCisgICAgeHNwbGljZV93b3JrLmNtZCA9IGNtZDsKKyAgICB4 c3BsaWNlX3dvcmsuZGF0YSA9IGRhdGE7CisgICAgeHNwbGljZV93b3JrLnRpbWVvdXQgPSB0aW1l b3V0ID86IE1JTExJU0VDUygzMCk7CisKKyAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgWFNQTElD RSAiJXM6IHRpbWVvdXQgaXMgJSJQUklfc3RpbWUibXNcbiIsCisgICAgICAgICAgICBkYXRhLT5u YW1lLCB4c3BsaWNlX3dvcmsudGltZW91dCAvIE1JTExJU0VDUygxKSk7CisKKyAgICBhdG9taWNf c2V0KCZ4c3BsaWNlX3dvcmsuc2VtYXBob3JlLCAtMSk7CisgICAgYXRvbWljX3NldCgmeHNwbGlj ZV93b3JrLmlycV9zZW1hcGhvcmUsIC0xKTsKKworICAgIHhzcGxpY2Vfd29yay5yZWFkeSA9IDA7 CisKKyAgICBzbXBfd21iKCk7CisKKyAgICB4c3BsaWNlX3dvcmsuZG9fd29yayA9IDE7CisgICAg dGhpc19jcHUod29ya190b19kbykgPSAxOworCisgICAgcHV0X2NwdV9tYXBzKCk7CisKKyAgICBy ZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgcmVzY2hlZHVsZV9mbih2b2lkICp1bnVzZWQpCit7 CisgICAgdGhpc19jcHUod29ya190b19kbykgPSAxOworICAgIHJhaXNlX3NvZnRpcnEoU0NIRURV TEVfU09GVElSUSk7Cit9CisKK3N0YXRpYyBpbnQgeHNwbGljZV9zcGluKGF0b21pY190ICpjb3Vu dGVyLCBzX3RpbWVfdCB0aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IGNwdXMsIGNvbnN0IGNoYXIgKnMpCit7CisgICAgaW50IHJjID0gMDsKKworICAgIHdo aWxlICggYXRvbWljX3JlYWQoY291bnRlcikgIT0gY3B1cyAmJiBOT1coKSA8IHRpbWVvdXQgKQor ICAgICAgICBjcHVfcmVsYXgoKTsKKworICAgIC8qIExvZyAmIGFib3J0LiAqLworICAgIGlmICgg YXRvbWljX3JlYWQoY291bnRlcikgIT0gY3B1cyApCisgICAgeworICAgICAgICBwcmludGsoWEVO TE9HX0VSUiBYU1BMSUNFICIlczogVGltZWQgb3V0IG9uICVzIHNlbWFwaG9yZSAldS8ldVxuIiwK KyAgICAgICAgICAgICAgIHhzcGxpY2Vfd29yay5kYXRhLT5uYW1lLCBzLCBhdG9taWNfcmVhZChj b3VudGVyKSwgY3B1cyk7CisgICAgICAgIHJjID0gLUVCVVNZOworICAgICAgICB4c3BsaWNlX3dv cmsuZGF0YS0+cmMgPSByYzsKKyAgICAgICAgeHNwbGljZV93b3JrLmRvX3dvcmsgPSAwOworICAg ICAgICBzbXBfd21iKCk7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfQorCisvKgorICogVGhl IG1haW4gZnVuY3Rpb24gd2hpY2ggbWFuYWdlcyB0aGUgd29yayBvZiBxdWllc2NpbmcgdGhlIHN5 c3RlbSBhbmQKKyAqIHBhdGNoaW5nIGNvZGUuCisgKi8KK3ZvaWQgY2hlY2tfZm9yX3hzcGxpY2Vf d29yayh2b2lkKQoreworI2RlZmluZSBBQ1RJT04oeCkgW1hTUExJQ0VfQUNUSU9OXyMjeF0gPSAj eAorICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBuYW1lc1tdID0geworICAgICAgICAgICAg QUNUSU9OKEFQUExZKSwKKyAgICAgICAgICAgIEFDVElPTihSRVZFUlQpLAorICAgICAgICAgICAg QUNUSU9OKFJFUExBQ0UpLAorICAgIH07CisjdW5kZWYgQUNUSU9OCisgICAgdW5zaWduZWQgaW50 IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKKyAgICBzX3RpbWVfdCB0aW1lb3V0OworICAgIHVu c2lnbmVkIGxvbmcgZmxhZ3M7CisKKyAgICAvKiBGYXN0IHBhdGg6IG5vIHdvcmsgdG8gZG8uICov CisgICAgaWYgKCAhcGVyX2NwdSh3b3JrX3RvX2RvLCBjcHUgKSApCisgICAgICAgIHJldHVybjsK KworICAgIHNtcF9ybWIoKTsKKyAgICAvKiBJbiBjYXNlIHdlIGFib3J0ZWQsIG90aGVyIENQVXMg Y2FuIHNraXAgcmlnaHQgYXdheS4gKi8KKyAgICBpZiAoICF4c3BsaWNlX3dvcmsuZG9fd29yayAp CisgICAgeworICAgICAgICBwZXJfY3B1KHdvcmtfdG9fZG8sIGNwdSkgPSAwOworICAgICAgICBy ZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKGxvY2FsX2lycV9pc19lbmFibGVkKCkpOworCisg ICAgLyogU2V0IGF0IC0xLCBzbyB3aWxsIGdvIHVwIHRvIG51bV9vbmxpbmVfY3B1cyAtIDEuICov CisgICAgaWYgKCBhdG9taWNfaW5jX2FuZF90ZXN0KCZ4c3BsaWNlX3dvcmsuc2VtYXBob3JlKSAp CisgICAgeworICAgICAgICBzdHJ1Y3QgcGF5bG9hZCAqcDsKKyAgICAgICAgdW5zaWduZWQgaW50 IGNwdXM7CisKKyAgICAgICAgcCA9IHhzcGxpY2Vfd29yay5kYXRhOworICAgICAgICBpZiAoICFn ZXRfY3B1X21hcHMoKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHByaW50ayhYRU5MT0dfRVJS IFhTUExJQ0UgIiVzOiBDUFUldSAtIHVuYWJsZSB0byBnZXQgY3B1X21hcHMgbG9jayFcbiIsCisg ICAgICAgICAgICAgICAgICAgcC0+bmFtZSwgY3B1KTsKKyAgICAgICAgICAgIHBlcl9jcHUod29y a190b19kbywgY3B1KSA9IDA7CisgICAgICAgICAgICB4c3BsaWNlX3dvcmsuZGF0YS0+cmMgPSAt RUJVU1k7CisgICAgICAgICAgICB4c3BsaWNlX3dvcmsuZG9fd29yayA9IDA7CisgICAgICAgICAg ICAvKgorICAgICAgICAgICAgICogRG8gTk9UIGRlY3JlbWVudCBzZW1hcGhvcmUgZG93biAtIGFz IHRoYXQgbWF5IGNhdXNlIHRoZSBvdGhlcgorICAgICAgICAgICAgICogQ1BVICh3aGljaCBtYXkg YmUgYXQgdGhpcyByZWFkeSB0byBpbmNyZW1lbnQgaXQpCisgICAgICAgICAgICAgKiB0byBhc3N1 bWUgdGhlIHJvbGUgb2YgbWFzdGVyIGFuZCB0aGVuIG5lZWRsZXNzbHkgdGltZSBvdXQKKyAgICAg ICAgICAgICAqIG91dCAoYXMgZG9fd29yayBpcyB6ZXJvKS4KKyAgICAgICAgICAgICAqLworICAg ICAgICAgICAgc21wX3dtYigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg ICAgIC8qICJNYXNrIiBOTUlzLiAqLworICAgICAgICBhcmNoX3hzcGxpY2VfbWFzaygpOworCisg ICAgICAgIGJhcnJpZXIoKTsgLyogTVVTVCBkbyBpdCBhZnRlciBnZXRfY3B1X21hcHMuICovCisg ICAgICAgIGNwdXMgPSBudW1fb25saW5lX2NwdXMoKSAtIDE7CisKKyAgICAgICAgaWYgKCBjcHVz ICkKKyAgICAgICAgeworICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfREVCVUcsIFhTUExJQ0Ug IiVzOiBDUFUldSAtIElQSWluZyB0aGUgb3RoZXIgJXUgQ1BVc1xuIiwKKyAgICAgICAgICAgICAg ICAgICAgcC0+bmFtZSwgY3B1LCBjcHVzKTsKKyAgICAgICAgICAgIHNtcF9jYWxsX2Z1bmN0aW9u KHJlc2NoZWR1bGVfZm4sIE5VTEwsIDApOworICAgICAgICB9CisKKyAgICAgICAgdGltZW91dCA9 IHhzcGxpY2Vfd29yay50aW1lb3V0ICsgTk9XKCk7CisgICAgICAgIGlmICggeHNwbGljZV9zcGlu KCZ4c3BsaWNlX3dvcmsuc2VtYXBob3JlLCB0aW1lb3V0LCBjcHVzLCAiQ1BVIikgKQorICAgICAg ICAgICAgZ290byBhYm9ydDsKKworICAgICAgICAvKiBBbGwgQ1BVcyBhcmUgd2FpdGluZywgbm93 IHNpZ25hbCB0byBkaXNhYmxlIElSUXMuICovCisgICAgICAgIHhzcGxpY2Vfd29yay5yZWFkeSA9 IDE7CisgICAgICAgIHNtcF93bWIoKTsKKworICAgICAgICBhdG9taWNfaW5jKCZ4c3BsaWNlX3dv cmsuaXJxX3NlbWFwaG9yZSk7CisgICAgICAgIGlmICggIXhzcGxpY2Vfc3BpbigmeHNwbGljZV93 b3JrLmlycV9zZW1hcGhvcmUsIHRpbWVvdXQsIGNwdXMsICJJUlEiKSApCisgICAgICAgIHsKKyAg ICAgICAgICAgIGxvY2FsX2lycV9zYXZlKGZsYWdzKTsKKyAgICAgICAgICAgIC8qIERvIHRoZSBw YXRjaGluZy4gKi8KKyAgICAgICAgICAgIHhzcGxpY2VfZG9fYWN0aW9uKCk7CisgICAgICAgICAg ICAvKiBGbHVzaCB0aGUgQ1BVIGktY2FjaGUgdmlhIENQVUlEIGluc3RydWN0aW9uIChvbiB4ODYp LiAqLworICAgICAgICAgICAgYXJjaF94c3BsaWNlX3Bvc3RfYWN0aW9uKCk7CisgICAgICAgICAg ICBsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CisgICAgICAgIH0KKyAgICAgICAgYXJjaF94c3Bs aWNlX3VubWFzaygpOworCisgYWJvcnQ6CisgICAgICAgIHBlcl9jcHUod29ya190b19kbywgY3B1 KSA9IDA7CisgICAgICAgIHhzcGxpY2Vfd29yay5kb193b3JrID0gMDsKKworICAgICAgICBzbXBf d21iKCk7IC8qIE1VU1QgY29tcGxldGUgd3JpdGVzIGJlZm9yZSBwdXRfY3B1X21hcHMoKS4gKi8K KworICAgICAgICBwdXRfY3B1X21hcHMoKTsKKworICAgICAgICBwcmludGsoWEVOTE9HX0lORk8g WFNQTElDRSAiJXMgZmluaXNoZWQgJXMgd2l0aCByYz0lZFxuIiwKKyAgICAgICAgICAgICAgIHAt Pm5hbWUsIG5hbWVzW3hzcGxpY2Vfd29yay5jbWRdLCBwLT5yYyk7CisgICAgfQorICAgIGVsc2UK KyAgICB7CisgICAgICAgIC8qIFdhaXQgZm9yIGFsbCBDUFVzIHRvIHJlbmRlenZvdXMuICovCisg ICAgICAgIHdoaWxlICggeHNwbGljZV93b3JrLmRvX3dvcmsgJiYgIXhzcGxpY2Vfd29yay5yZWFk eSApCisgICAgICAgICAgICBjcHVfcmVsYXgoKTsKKworICAgICAgICAvKiBEaXNhYmxlIElSUXMg YW5kIHNpZ25hbC4gKi8KKyAgICAgICAgbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOworICAgICAgICBh dG9taWNfaW5jKCZ4c3BsaWNlX3dvcmsuaXJxX3NlbWFwaG9yZSk7CisKKyAgICAgICAgLyogV2Fp dCBmb3IgcGF0Y2hpbmcgdG8gY29tcGxldGUuICovCisgICAgICAgIHdoaWxlICggeHNwbGljZV93 b3JrLmRvX3dvcmsgKQorICAgICAgICAgICAgY3B1X3JlbGF4KCk7CisKKyAgICAgICAgLyogVG8g Zmx1c2ggb3V0IHBpcGVsaW5lLiAqLworICAgICAgICBhcmNoX3hzcGxpY2VfcG9zdF9hY3Rpb24o KTsKKyAgICAgICAgbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOworCisgICAgICAgIHBlcl9jcHUo d29ya190b19kbywgY3B1KSA9IDA7CisgICAgfQorfQorCiBzdGF0aWMgaW50IHhzcGxpY2VfYWN0 aW9uKHhlbl9zeXNjdGxfeHNwbGljZV9hY3Rpb25fdCAqYWN0aW9uKQogewogICAgIHN0cnVjdCBw YXlsb2FkICpkYXRhOwpAQCAtNTAyLDI3ICs5MjksMjQgQEAgc3RhdGljIGludCB4c3BsaWNlX2Fj dGlvbih4ZW5fc3lzY3RsX3hzcGxpY2VfYWN0aW9uX3QgKmFjdGlvbikKICAgICBjYXNlIFhTUExJ Q0VfQUNUSU9OX1JFVkVSVDoKICAgICAgICAgaWYgKCBkYXRhLT5zdGF0ZSA9PSBYU1BMSUNFX1NU QVRFX0FQUExJRUQgKQogICAgICAgICB7Ci0gICAgICAgICAgICAvKiBObyBpbXBsZW1lbnRhdGlv biB5ZXQuICovCi0gICAgICAgICAgICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tF RDsKLSAgICAgICAgICAgIGRhdGEtPnJjID0gMDsKKyAgICAgICAgICAgIGRhdGEtPnJjID0gLUVB R0FJTjsKKyAgICAgICAgICAgIHJjID0gc2NoZWR1bGVfd29yayhkYXRhLCBhY3Rpb24tPmNtZCwg YWN0aW9uLT50aW1lb3V0KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAogICAgIGNhc2Ug WFNQTElDRV9BQ1RJT05fQVBQTFk6CiAgICAgICAgIGlmICggZGF0YS0+c3RhdGUgPT0gWFNQTElD RV9TVEFURV9DSEVDS0VEICkKICAgICAgICAgewotICAgICAgICAgICAgLyogTm8gaW1wbGVtZW50 YXRpb24geWV0LiAqLwotICAgICAgICAgICAgZGF0YS0+c3RhdGUgPSBYU1BMSUNFX1NUQVRFX0FQ UExJRUQ7Ci0gICAgICAgICAgICBkYXRhLT5yYyA9IDA7CisgICAgICAgICAgICBkYXRhLT5yYyA9 IC1FQUdBSU47CisgICAgICAgICAgICByYyA9IHNjaGVkdWxlX3dvcmsoZGF0YSwgYWN0aW9uLT5j bWQsIGFjdGlvbi0+dGltZW91dCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKICAgICBj YXNlIFhTUExJQ0VfQUNUSU9OX1JFUExBQ0U6CiAgICAgICAgIGlmICggZGF0YS0+c3RhdGUgPT0g WFNQTElDRV9TVEFURV9DSEVDS0VEICkKICAgICAgICAgewotICAgICAgICAgICAgLyogTm8gaW1w bGVtZW50YXRpb24geWV0LiAqLwotICAgICAgICAgICAgZGF0YS0+c3RhdGUgPSBYU1BMSUNFX1NU QVRFX0NIRUNLRUQ7Ci0gICAgICAgICAgICBkYXRhLT5yYyA9IDA7CisgICAgICAgICAgICBkYXRh LT5yYyA9IC1FQUdBSU47CisgICAgICAgICAgICByYyA9IHNjaGVkdWxlX3dvcmsoZGF0YSwgYWN0 aW9uLT5jbWQsIGFjdGlvbi0+dGltZW91dCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAK QEAgLTU4Nyw2ICsxMDExLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnN0YXRlMnN0cih1aW50MzJf dCBzdGF0ZSkKIHN0YXRpYyB2b2lkIHhzcGxpY2VfcHJpbnRhbGwodW5zaWduZWQgY2hhciBrZXkp CiB7CiAgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7CisgICAgdW5zaWduZWQgaW50IGk7CiAKICAg ICBwcmludGsoIicldScgcHJlc3NlZCAtIER1bXBpbmcgYWxsIHhzcGxpY2UgcGF0Y2hlc1xuIiwg a2V5KTsKIApAQCAtNTk3LDE1ICsxMDIyLDQzIEBAIHN0YXRpYyB2b2lkIHhzcGxpY2VfcHJpbnRh bGwodW5zaWduZWQgY2hhciBrZXkpCiAgICAgfQogCiAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAo IGRhdGEsICZwYXlsb2FkX2xpc3QsIGxpc3QgKQorICAgIHsKICAgICAgICAgcHJpbnRrKCIgbmFt ZT0lcyBzdGF0ZT0lcyglZCkgJXAgKC5kYXRhPSVwLCAucm9kYXRhPSVwKSB1c2luZyAlenUgcGFn ZXMuXG4iLAogICAgICAgICAgICAgICAgZGF0YS0+bmFtZSwgc3RhdGUyc3RyKGRhdGEtPnN0YXRl KSwgZGF0YS0+c3RhdGUsIGRhdGEtPnRleHRfYWRkciwKICAgICAgICAgICAgICAgIGRhdGEtPnJ3 X2FkZHIsIGRhdGEtPnJvX2FkZHIsIGRhdGEtPnBhZ2VzKTsKIAorICAgICAgICBmb3IgKCBpID0g MDsgaSA8IGRhdGEtPm5mdW5jczsgaSsrICkKKyAgICAgICAgeworICAgICAgICAgICAgc3RydWN0 IHhzcGxpY2VfcGF0Y2hfZnVuY19pbnRlcm5hbCAqZiA9ICYoZGF0YS0+ZnVuY3NbaV0pOworICAg ICAgICAgICAgcHJpbnRrKCIgICAgJXMgcGF0Y2ggJXAoJXUpIHdpdGggJXAgKCV1KVxuIiwKKyAg ICAgICAgICAgICAgICAgICBmLT5uYW1lLCBmLT5vbGRfYWRkciwgZi0+b2xkX3NpemUsIGYtPm5l d19hZGRyLCBmLT5uZXdfc2l6ZSk7CisKKyAgICAgICAgICAgIGlmICggaSAmJiAhKGkgJSA2NCkg KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZwYXlsb2FkX2xv Y2spOworICAgICAgICAgICAgICAgIHByb2Nlc3NfcGVuZGluZ19zb2Z0aXJxcygpOworICAgICAg ICAgICAgICAgIHNwaW5fbG9jaygmcGF5bG9hZF9sb2NrKTsKKyAgICAgICAgICAgIH0KKyAgICAg ICAgfQorICAgIH0KKwogICAgIHNwaW5fdW5sb2NrKCZwYXlsb2FkX2xvY2spOwogfQogCiBzdGF0 aWMgaW50IF9faW5pdCB4c3BsaWNlX2luaXQodm9pZCkKIHsKKyAgICBCVUlMRF9CVUdfT04oIHNp emVvZihzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jKSAhPQorICAgICAgICAgICAgICAgICAgc2l6 ZW9mKHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmNfaW50ZXJuYWwpICk7CisgICAgQlVJTERfQlVH X09OKCBzaXplb2Yoc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuY19pbnRlcm5hbCkgIT0KKyAgICAg ICAgICAgICAgICAgIFhTUExJQ0VfUEFUQ0hfRlVOQ19JTlRFUk5BTF9TSVpFICk7CisKKyNpZiBC SVRTX1BFUl9MT05HID09IDY0CisgICAgQlVJTERfQlVHX09OKCBvZmZzZXRvZihzdHJ1Y3QgeHNw bGljZV9wYXRjaF9mdW5jLCBuZXdfYWRkcikgIT0gOCApOworICAgIEJVSUxEX0JVR19PTiggb2Zm c2V0b2Yoc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuYywgbmV3X3NpemUpICE9IDI0ICk7CisjZWxz ZQorICAgIEJVSUxEX0JVR19PTiggb2Zmc2V0b2Yoc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuYywg bmV3X2FkZHIpICE9IDQgKTsKKyAgICBCVUlMRF9CVUdfT04oIG9mZnNldG9mKHN0cnVjdCB4c3Bs aWNlX3BhdGNoX2Z1bmMsIG5ld19zaXplKSAhPSAxMiApOworI2VuZGlmCiAgICAgcmVnaXN0ZXJf a2V5aGFuZGxlcigneCcsIHhzcGxpY2VfcHJpbnRhbGwsICJwcmludCB4c3BsaWNpbmcgaW5mbyIs IDEpOwogCiAgICAgYXJjaF94c3BsaWNlX2luaXQoKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L2FzbS14ODYvY3VycmVudC5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9jdXJyZW50LmgKaW5kZXgg NDA4MzI2MS4uMDI3YWEwYyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9jdXJyZW50 LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9jdXJyZW50LmgKQEAgLTg2LDEwICs4NiwxOCBA QCBzdGF0aWMgaW5saW5lIHN0cnVjdCBjcHVfaW5mbyAqZ2V0X2NwdV9pbmZvKHZvaWQpCiB1bnNp Z25lZCBsb25nIGdldF9zdGFja190cmFjZV9ib3R0b20odW5zaWduZWQgbG9uZyBzcCk7CiB1bnNp Z25lZCBsb25nIGdldF9zdGFja19kdW1wX2JvdHRvbSAodW5zaWduZWQgbG9uZyBzcCk7CiAKKyNp ZmRlZiBDT05GSUdfWFNQTElDRQorIyBkZWZpbmUgX19DSEVDS19GT1JfWFNQTElDRV9XT1JLICJj YWxsIGNoZWNrX2Zvcl94c3BsaWNlX3dvcms7IgorI2Vsc2UKKyMgZGVmaW5lIF9fQ0hFQ0tfRk9S X1hTUExJQ0VfV09SSyAiIgorI2VuZGlmCisKICNkZWZpbmUgcmVzZXRfc3RhY2tfYW5kX2p1bXAo X19mbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAoeyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICJtb3YgJTAsJSUiX19PUCJzcDsg am1wICVjMSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICJt b3YgJTAsJSUiX19PUCJzcDsiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICAgICAgICAgIF9fQ0hFQ0tfRk9SX1hTUExJQ0VfV09SSyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAiam1wICVjMSIgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIDogOiAi ciIgKGd1ZXN0X2NwdV91c2VyX3JlZ3MoKSksICJpIiAoX19mbikgOiAibWVtb3J5IiApOyAgIFwK ICAgICAgICAgdW5yZWFjaGFibGUoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKICAgICB9KQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGlj L3N5c2N0bC5oIGIveGVuL2luY2x1ZGUvcHVibGljL3N5c2N0bC5oCmluZGV4IDA5MGZkMjEuLjNk NDdiNDcgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaAorKysgYi94ZW4v aW5jbHVkZS9wdWJsaWMvc3lzY3RsLmgKQEAgLTgzMyw2ICs4MzMsMzMgQEAgREVGSU5FX1hFTl9H VUVTVF9IQU5ETEUoeGVuX3N5c2N0bF9mZWF0dXJlc2V0X3QpOwogICogICAgIElmIHplcm8gZXhp dCB3aXRoIHN1Y2Nlc3MuCiAgKi8KIAorI2RlZmluZSBYU1BMSUNFX1BBWUxPQURfVkVSU0lPTiAx CisvKgorICogLnhzcGxpY2UuZnVuY3Mgc3RydWN0dXJlIGxheW91dCBkZWZpbmVkIGluIHRoZSBg UGF5bG9hZCBmb3JtYXRgCisgKiBzZWN0aW9uIGluIHRoZSB4U3BsaWNlIGRlc2lnbiBkb2N1bWVu dC4KKyAqCisgKiBUaGUgc2l6ZSBzaG91bGQgYmUgZXhhY3RseSA2NCBieXRlcyAoNjQpIG9yIDUy IGJ5dGVzICgzMikuCisgKgorICogV2UgZ3VhcmQgdGhpcyB3aXRoIF9fWEVOX18gYXMgdG9vbHN0 YWNrcyBkbyBub3QgbmVlZCB0byB1c2UgaXQuCisgKi8KKyNpZmRlZiBfX1hFTl9fCitzdHJ1Y3Qg eHNwbGljZV9wYXRjaF9mdW5jIHsKKyAgICBjb25zdCBjaGFyICpuYW1lOyAgICAgICAvKiBOYW1l IG9mIGZ1bmN0aW9uIHRvIGJlIHBhdGNoZWQuICovCisjaWYgQ09ORklHX0FSTV8zMgorICAgIHVp bnQzMl90IG5ld19hZGRyOworICAgIHVpbnQzMl90IG9sZF9hZGRyOworI2Vsc2UKKyAgICB1aW50 NjRfdCBuZXdfYWRkcjsKKyAgICB1aW50NjRfdCBvbGRfYWRkcjsgICAgICAvKiBDYW4gYmUgemVy byBhbmQgbmFtZSB3aWxsIGJlIGxvb2tlZCB1cC4gKi8KKyNlbmRpZgorICAgIHVpbnQzMl90IG5l d19zaXplOworICAgIHVpbnQzMl90IG9sZF9zaXplOworICAgIHVpbnQ4X3QgdmVyc2lvbjsgICAg ICAgIC8qIE1VU1QgYmUgWFNQTElDRV9QQVlMT0FEX1ZFUlNJT04uICovCisgICAgdWludDhfdCBw YWRbMzFdOyAgICAgICAgLyogTVVTVCBiZSB6ZXJvIGZpbGxlZC4gKi8KK307Cit0eXBlZGVmIHN0 cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgeHNwbGljZV9wYXRjaF9mdW5jX3Q7CisjZW5kaWYKKwog LyoKICAqIFN0cnVjdHVyZSBkZXNjcmliaW5nIGFuIEVMRiBwYXlsb2FkLiBVbmlxdWVseSBpZGVu dGlmaWVzIHRoZQogICogcGF5bG9hZC4gU2hvdWxkIGJlIGh1bWFuIHJlYWRhYmxlLgpkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaCBiL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNl LmgKaW5kZXggODNlNGYzMS4uNTM2YTllOCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3hz cGxpY2UuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oCkBAIC0xMSwxMiArMTEsNDMg QEAgc3RydWN0IHhzcGxpY2VfZWxmX3NlYzsKIHN0cnVjdCB4c3BsaWNlX2VsZl9zeW07CiBzdHJ1 Y3QgeGVuX3N5c2N0bF94c3BsaWNlX29wOwogCisjaW5jbHVkZSA8eGVuL2VsZnN0cnVjdHMuaD4K ICNpZmRlZiBDT05GSUdfWFNQTElDRQogCisvKgorICogVGhlIHN0cnVjdHVyZSB3aGljaCBkZWZp bmVzIHRoZSBwYXRjaGluZy4gVGhpcyBpcyB3aGF0IHRoZSBoeXBlcnZpc29yCisgKiBleHBlY3Rz IGluIHRoZSAnLnhzcGxpY2UuZnVuYycgc2VjdGlvbiBvZiB0aGUgRUxGIGZpbGUuCisgKgorICog VGhpcyBNVVNUIGJlIGluIHN5bmMgd2l0aCB3aGF0IHRoZSB0b29scyBnZW5lcmF0ZS4gV2UgZXhw b3NlCisgKiBmb3IgdGhlIHRvb2xzIHRoZSAnc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuYycgd2hp Y2ggZG9lcyBub3QgaGF2ZQorICogcGxhdGZvcm0gc3BlY2lmaWMgZW50cmllcy4KKyAqLworI2lm IEJJVFNfUEVSX0xPTkcgPT0gNjQKKyNkZWZpbmUgWFNQTElDRV9QQVRDSF9GVU5DX0lOVEVSTkFM X1NJWkUgICAgNjQKKyNlbHNlCisjZGVmaW5lIFhTUExJQ0VfUEFUQ0hfRlVOQ19JTlRFUk5BTF9T SVpFICAgIDUyCisjZW5kaWYKKworc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuY19pbnRlcm5hbCB7 CisgICAgY29uc3QgY2hhciAqbmFtZTsKKyAgICB2b2lkICpuZXdfYWRkcjsKKyAgICB2b2lkICpv bGRfYWRkcjsKKyAgICB1aW50MzJfdCBuZXdfc2l6ZTsKKyAgICB1aW50MzJfdCBvbGRfc2l6ZTsK KyAgICB1aW50OF90IHZlcnNpb247CisgICAgdW5pb24geworI2lmbmRlZiBDT05GSUdfQVJNCisg ICAgICAgIHVpbnQ4X3QgdW5kb1s4XTsKKyNlbmRpZgorICAgICAgICB1aW50OF90IHBhZFszMV07 CisgICAgfSB1OworfTsKKwogLyogQ29udmVuaWVuY2UgZGVmaW5lIGZvciBwcmludGsuICovCiAj ZGVmaW5lIFhTUExJQ0UgInhzcGxpY2U6ICIKIAogaW50IHhzcGxpY2Vfb3Aoc3RydWN0IHhlbl9z eXNjdGxfeHNwbGljZV9vcCAqKTsKK3ZvaWQgY2hlY2tfZm9yX3hzcGxpY2Vfd29yayh2b2lkKTsK IAogLyogQXJjaCBob29rcy4gKi8KIGludCBhcmNoX3hzcGxpY2VfdmVyaWZ5X2VsZihjb25zdCBz dHJ1Y3QgeHNwbGljZV9lbGYgKmVsZik7CkBAIC00NCw2ICs3NSwyMSBAQCBpbnQgYXJjaF94c3Bs aWNlX3NlY3VyZSh2b2lkICp2YSwgdW5zaWduZWQgaW50IHBhZ2VzLCBlbnVtIHZhX3R5cGUgdHlw ZXMpOwogdm9pZCBhcmNoX3hzcGxpY2VfZnJlZV9wYXlsb2FkKHZvaWQgKnZhKTsKIAogdm9pZCBh cmNoX3hzcGxpY2VfaW5pdCh2b2lkKTsKKworaW50IGFyY2hfeHNwbGljZV92ZXJpZnlfZnVuYyhj b25zdCBzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jX2ludGVybmFsICpmdW5jKTsKKy8qCisgKiBU aGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBhcm91bmQgdGhlIGNyaXRpY2FsIHJlZ2lvbiBwYXRj aGluZyBsaXZlIGNvZGUsCisgKiBmb3IgYW4gYXJjaGl0ZWN0dXJlIHRvIHRha2UgbWFrZSBhcHBy b3ByYXRpZSBnbG9iYWwgc3RhdGUgYWRqdXN0bWVudHMuCisgKi8KK3ZvaWQgYXJjaF94c3BsaWNl X3BhdGNoaW5nX2VudGVyKHZvaWQpOwordm9pZCBhcmNoX3hzcGxpY2VfcGF0Y2hpbmdfbGVhdmUo dm9pZCk7CisKK3ZvaWQgYXJjaF94c3BsaWNlX2FwcGx5X2ptcChzdHJ1Y3QgeHNwbGljZV9wYXRj aF9mdW5jX2ludGVybmFsICpmdW5jKTsKK3ZvaWQgYXJjaF94c3BsaWNlX3JldmVydF9qbXAoY29u c3Qgc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuY19pbnRlcm5hbCAqZnVuYyk7Cit2b2lkIGFyY2hf eHNwbGljZV9wb3N0X2FjdGlvbih2b2lkKTsKKwordm9pZCBhcmNoX3hzcGxpY2VfbWFzayh2b2lk KTsKK3ZvaWQgYXJjaF94c3BsaWNlX3VubWFzayh2b2lkKTsKICNlbHNlCiAKICNpbmNsdWRlIDx4 ZW4vZXJybm8uaD4gLyogRm9yIC1FTk9TWVMgKi8KQEAgLTUyLDYgKzk4LDcgQEAgc3RhdGljIGlu bGluZSBpbnQgeHNwbGljZV9vcChzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX29wICpvcCkKICAg ICByZXR1cm4gLUVOT1NZUzsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkIGNoZWNrX2Zvcl94c3Bs aWNlX3dvcmsodm9pZCkgeyB9OwogI2VuZGlmIC8qIENPTkZJR19YU1BMSUNFICovCiAKICNlbmRp ZiAvKiBfX1hFTl9YU1BMSUNFX0hfXyAqLwotLSAKMi41LjAKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=