From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v7 10/24] xsplice: Implement support for applying/reverting/replacing patches. Date: Sun, 10 Apr 2016 17:14:42 -0400 Message-ID: <1460322896-1115-11-git-send-email-konrad.wilk@oracle.com> References: <1460322896-1115-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1apMhX-0008BJ-C4 for xen-devel@lists.xenproject.org; Sun, 10 Apr 2016 21:15:23 +0000 In-Reply-To: <1460322896-1115-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, konrad@kernel.org, sasha.levin@oracle.com, andrew.cooper3@citrix.com, ross.lagerwall@citrix.com, mpohlack@amazon.de Cc: Kevin Tian , Keir Fraser , Suravee Suthikulpanit , Konrad Rzeszutek Wilk , Jun Nakajima , Julien Grall , Stefano Stabellini , Jan Beulich , Boris Ostrovsky List-Id: xen-devel@lists.xenproject.org RnJvbTogUm9zcyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5jb20+CgpJbXBsZW1l bnQgc3VwcG9ydCBmb3IgdGhlIGFwcGx5LCByZXZlcnQgYW5kIHJlcGxhY2UgYWN0aW9ucy4KClRv IHBlcmZvcm0gYW5kIGFjdGlvbiBvbiBhIHBheWxvYWQsIHRoZSBoeXBlcmNhbGwgc2V0cyB1cCBh IGRhdGEKc3RydWN0dXJlIHRvIHNjaGVkdWxlIHRoZSB3b3JrLiAgQSBob29rIGlzIGFkZGVkIGlu IHRoZSByZXNldF9zdGFja19hbmRfanVtcAp0byBjaGVjayBmb3Igd29yayBhbmQgZXhlY3V0ZSBp dCBpZiBuZWVkZWQgKHNwZWNpZmljYWxseSB3ZSBjaGVjayBhbgpwZXItY3B1IGZsYWcgdG8gbWFr ZSB0aGlzIGFzIHF1aWNrIGFzIHBvc3NpYmxlKS4KCkluIHRoaXMgd2F5LCBwYXRjaGVzIGNhbiBi ZSBhcHBsaWVkIHdpdGggYWxsIENQVXMgaWRsZSBhbmQgd2l0aG91dApzdGFja3MuICBUaGUgZmly c3QgQ1BVIHRvIHJ1biBjaGVja19mb3JfeHNwbGljZV93b3JrKCkgYmVjb21lcyB0aGUKbWFzdGVy IGFuZCB0cmlnZ2VycyBhIHJlc2NoZWR1bGUgc29mdGlycSB0byB0cmlnZ2VyIGFsbCB0aGUgb3Ro ZXIgQ1BVcwp0byBlbnRlciBjaGVja19mb3JfeHNwbGljZV93b3JrKCkgd2l0aCBubyBzdGFjay4g IE9uY2UgYWxsIENQVXMKaGF2ZSByZW5kZXp2b3VzZWQsIGFsbCBDUFVzIGRpc2FibGUgSVJRcyBh bmQgTk1JcyBhcmUgaWdub3JlZC4KVGhlIHN5c3RlbSBpcyB0aGVuIHF1aXNjaWVudCBhbmQgdGhl IG1hc3RlciBwZXJmb3JtcyB0aGUgYWN0aW9uLgpBZnRlciB0aGlzLCBhbGwgQ1BVcyBlbmFibGUg SVJRcyBhbmQgTk1JcyBhcmUgcmUtZW5hYmxlZC4KCk5vdGUgdGhhdCBpdCBpcyB1bnNhZmUgdG8g cGF0Y2ggZG9fbm1pIGFuZCB0aGUgeFNwbGljZSBpbnRlcm5hbCBmdW5jdGlvbnMuClBhdGNoaW5n IGZ1bmN0aW9ucyBvbiBOTUkvTUNFIHBhdGggaXMgbGlhYmxlIHRvIGVuZCBpbiBkaXNhc3Rlci4K VGhpcyBpcyBub3QgYWRkcmVzc2VkIGluIHRoaXMgcGF0Y2ggYW5kIGlzIG1lbnRpb25lZCBpbiB0 aGUKZGVzaWduIGRvYyBhcyBhIGZ1cnRoZXIgVE9ETy4KClRoZSBhY3Rpb24gdG8gcGVyZm9ybSBp cyBvbmUgb2Y6Ci0gQVBQTFk6IEZvciBlYWNoIGZ1bmN0aW9uIGluIHRoZSBtb2R1bGUsIHN0b3Jl IHRoZSBmaXJzdCA1IGJ5dGVzIG9mIHRoZQogIG9sZCBmdW5jdGlvbiBhbmQgcmVwbGFjZSBpdCB3 aXRoIGEganVtcCB0byB0aGUgbmV3IGZ1bmN0aW9uLgotIFJFVkVSVDogQ29weSB0aGUgcHJldmlv dXNseSBzdG9yZWQgYnl0ZXMgaW50byB0aGUgZmlyc3QgNSBieXRlcyBvZiB0aGUKICBvbGQgZnVu Y3Rpb24uCi0gUkVQTEFDRTogUmV2ZXJ0IGVhY2ggYXBwbGllZCBtb2R1bGUgYW5kIHRoZW4gYXBw bHkgdGhlIG5ldyBtb2R1bGUuCgpUbyBwcmV2ZW50IGEgZGVhZGxvY2sgd2l0aCBhbnkgb3RoZXIg YmFycmllciBpbiB0aGUgc3lzdGVtLCB0aGUgbWFzdGVyCndpbGwgd2FpdCBmb3IgdXAgdG8gMzBt cyBiZWZvcmUgdGltaW5nIG91dC4KTWVhc3VyZW1lbnRzIGZvdW5kIHRoYXQgdGhlIHBhdGNoIGFw cGxpY2F0aW9uIHRvIHRha2UgYWJvdXQgMTAwIM68cyBvbiBhCjcyIENQVSBzeXN0ZW0sIHdoZXRo ZXIgaWRsZSBvciBmdWxseSBsb2FkZWQuCgpXZSBhbHNvIGFkZCBhbiBCVUlMRF9PTiB0byBtYWtl IHN1cmUgdGhhdCB0aGUgc2l6ZSBvZiB0aGUgc3RydWN0dXJlCm9mIHRoZSBwYXlsb2FkIGlzIG5v dCBpbmFkdmVydGx5IGNoYW5nZWQgYW5kIHRoYXQgdGhlIG9mZnNldHMgYXJlCmNvcnJlY3Qgb24g Ym90aCAzMiBhbmQgNjQtYml0IGh5cGVydmlzb3IgKEFSTTMyIGFuZCBBUk02NCkuClRvIG1ha2Ug dGhpcyB3b3JrLCB3ZSBtYWtlIHRoZSBwdWJsaWMgaGVhZGVyIHVzZSBhcmNoaXRlY3R1cmUKbmV1 dHJhbCBtZW1iZXJzICh4ZW5fdWxvbmdfdCkgYnV0IGZvciBwZXItYXJjaGl0ZWN0dXJlIGhhdmUg dG8KZmlkZGxlIHdpdGggcGFkZGluZy4KClNpZ25lZC1vZmYtYnk6IFJvc3MgTGFnZXJ3YWxsIDxy b3NzLmxhZ2Vyd2FsbEBjaXRyaXguY29tPgpTaWduZWQtb2ZmLWJ5OiBLb25yYWQgUnplc3p1dGVr IFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CkFja2VkLWJ5OiBKdWxpZW4gR3JhbGwgPGp1 bGllbi5ncmFsbEBhcm0uY29tPiBbQVJNIGJpdHNdCi0tCkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkg PHN0ZWZhbm8uc3RhYmVsbGluaUBjaXRyaXguY29tPgpDYzogSnVsaWVuIEdyYWxsIDxqdWxpZW4u Z3JhbGxAYXJtLmNvbT4KQ2M6IEtlaXIgRnJhc2VyIDxrZWlyQHhlbi5vcmc+CkNjOiBKYW4gQmV1 bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVy M0BjaXRyaXguY29tPgpDYzogQm9yaXMgT3N0cm92c2t5IDxib3Jpcy5vc3Ryb3Zza3lAb3JhY2xl LmNvbT4KQ2M6IFN1cmF2ZWUgU3V0aGlrdWxwYW5pdCA8c3VyYXZlZS5zdXRoaWt1bHBhbml0QGFt ZC5jb20+CkNjOiBKdW4gTmFrYWppbWEgPGp1bi5uYWthamltYUBpbnRlbC5jb20+CkNjOiBLZXZp biBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KCnYyOiAtIFBsdWNrIHRoZSAnc3RydWN0IHhz cGxpY2VfcGF0Y2hfZnVuYycgaW4gdGhpcyBwYXRjaC4KICAgIC0gTW9kaWZ5IGNvZGUgcGVyIHJl dmlldyBjb21tZW50cy4KICAgIC0gQWRkIG1vcmUgZGF0YSBpbiB0aGUga2V5Ym9hcmQgaGFuZGxl ci4KICAgIC0gUmVkbyB0aGUgcGF0Y2hpbmcgY29kZSwgc3BsaXQgaXQgaW4gZnVuY3Rpb25zLgp2 MzogLSBBZGQgcmV0dXJuXyBtYWNybyBmb3IgZGVidWcgYnVpbGRzLgogICAgLSBNb3ZlIHMvcGF5 bG9hZF9saXN0X2xvY2svcGF5bG9hZF9saXN0LyB0byBlYXJsaWVyIHBhdGNoCiAgICAtIFJlbW92 ZSBjb25zdCBhbmQgdXNlIEVMRiB0eXBlcyBmb3IgeHNwbGljZV9wYXRjaF9mdW5jCiAgICAgLSBB ZGQgY2hlY2sgcm91dGluZSB0byBkbyBzaW1wbGUgc2FuaXR5IGNoZWNrcyBmb3IgdmFyaW91cwog ICAgICBzZWN0aW9ucy4KICAgIC0gcy8lcC9QUkl4NjQvIGFzIEFSTSBidWlsZHMgY29tcGxhaW4u CiAgICAtIE1vdmUgY29kZSBhcm91bmQuIEFkZCBtb3JlIGRwcmludGsuIEFkZCBYU1BMSUNFIGlu IGZyb250IG9mIGFsbAogICAgICBwcmludGtzL2RwcmludGsuCiAgICAgIFB1dCB0aGUgTk1JcyBi YWNrIGlmIHdlIGZhaWwgcGF0Y2hpbmcuCiAgICAgIEFkZCBwZXItY3B1IHRvIGxlc3NlbiBjb250 ZW50aW9uIGZvciBnbG9iYWwgc3RydWN0dXJlLgogICAgICBFeHRyYWN0IGZyb20geHNwbGljZV9k b19zaW5nbGUgcGF0Y2hpbmcgY29kZSBpbnRvIHhzcGxpY2VfZG9fYWN0aW9uCiAgICAgIFNxdWFz aCB4c3BsaWNlX2RvX3NpbmdsZSBhbmQgY2hlY2tfZm9yX3hzcGxpY2Vfd29yayB0b2dldGhlciB0 bwogICAgICBoYXZlIGFsbCByZW5kZXp2b3VzIGluIG9uZSBwbGFjZS4KICAgICAgTWFkZSBYU1BM SUNFX0FDVElPTl9SRVBMQUNFIHdvcmsgYWdhaW4gKHdyb25nIGxpc3QgaXRlcmF0b3IpCiAgICAg IHMvZmluZF9zcGVjaWFsX3NlY3Rpb25zL3ByZXBhcmVfcGF5bG9hZC8KICAgICAgVXNlIGxpc3Rf ZGVsX2luaXQgYW5kIElOSVRfTElTVF9IRUFEIGZvciBhcHBsaWVkX2xpc3QKdjQ6CiAgIC0gQWRk IGNvbW1lbnQsIGFkanVzdCBzcGFjaW5nIGZvciAiVGltZWQgb3V0IG9uIENQVSBzZW1hcGhvcmUi CiAgIC0gQWRkZWQgQ1IwLldQIG1hbmlwdWxhdGlvbnMgd2hlbiBhbHRlcmluZyB0aGUgLnRleHQg b2YgaHlwZXJ2aXNvci4KICAgLSBBZGRlZCBmaXggZnJvbSBBbmRyZXcgZm9yIENSMC5XUCBtYW5p cHVsYXRpb24uCnY1OiAtIE1hZGUgeHNwbGljZV9wYXRjaF9mdW5jIHVzZSB1aW50WFhfdCBpbnN0 ZWFkIG9mIEVMRl8gdHlwZXMgdG8gZWFzeQogICAgICBtYWtpbmcgaXQgd29yayB1bmRlciBBUk0g KDMyYml0KS4gQWRkIG1vcmUgQlVJTEQtQlVHLU9OIGNoZWNrcy4KICAgIC0gQWRkIG1vcmUgQlVJ TERfT04gY2hlY2tzLiBTcHJpbmtsZSBuZXdsaW5lcy4KdjY6IFJlYmFzZSBvbiAiYXJtL3g4Njog QWx0ZXIgbm1pX2NhbGxiYWNrX3QgdHlwZWRlZiIKICAgLSBEcm9wIHRoZSByZWN1cnNpdmUgc3Bp bmxvY2sgdXNhZ2UuCiAgIC0gTW92ZSBOTUkgY2FsbGJhY2tzIGluIGFyY2ggc3BlY2lmaWMuCiAg IC0gRm9sZCB0aGUgJ2NoZWNrX2Zvcl94c3BsaWNlX3dvcmsnIGluIHJlc2V0X3N0YWNrX2FuZF9q dW1wCiAgIC0gQWRkIGFyY2ggc3BlY2lmaWMgY2hlY2sgZm9yIC54c3BsaWNlLmZ1bmNzLgogICAt IFNlcGVyYXRlIGV4dGVybmFsIGFuZCBpbnRlcm5hbCBzdHJ1Y3R1cmUgb2YgLnhzcGxpY2UuZnVu Y3MuCiAgIC0gQ2hhbmdlZCBwZXIgSmFuJ3MgcmV2aWV3CiAgIC0gTW9kaWZpZWQgdGhlIC54c3Bs aWNlLmZ1bmNzIGNoZWNrcwp2NzoKICAgLSBNb2RpZmllZCBvbGRfcHRyIHRvIHZvaWQqIGluc3Rl YWQgb2YgdWludDhfdCoKICAgLSBNb2RpZmllZCB0aGUgeHNwbGljZV9wYXRjaF9mdW5jX2ludGVy bmFsIGZvciBBUk0zMiB0byBoYXZlIHBhZGRpbmcuCiAgIC0gVXNlZCAjaWYgQklUU19QRVJfTE9O RyA9PSA2NCBmb3IgdGhlIHhzcGxpY2VfcGF0Y2hfZnVuY19pbnRlcm5hbCBhbG9uZwogICAgIHdp dGggaWZuZGVmIENPTkZJR19BUk0gZm9yIHRoZSB1bmRvICh3aGljaCBtYXkgYmUgZGlmZmVyZW50 IHNpemUgb24gQVJNNjQpCi0tLQotLS0KIHhlbi9hcmNoL2FybS94c3BsaWNlLmMgICAgICAgIHwg IDMzICsrKwogeGVuL2FyY2gveDg2L2RvbWFpbi5jICAgICAgICAgfCAgIDIgKwogeGVuL2FyY2gv eDg2L3hzcGxpY2UuYyAgICAgICAgfCAgNzYgKysrKysrKwogeGVuL2NvbW1vbi94c3BsaWNlLmMg ICAgICAgICAgfCA0NjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst CiB4ZW4vaW5jbHVkZS9hc20teDg2L2N1cnJlbnQuaCB8ICAxMCArLQogeGVuL2luY2x1ZGUvcHVi bGljL3N5c2N0bC5oICAgfCAgMTggKysKIHhlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmggICAgIHwg IDU4ICsrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCA2NDggaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3hzcGxpY2UuYyBiL3hlbi9hcmNoL2Fy bS94c3BsaWNlLmMKaW5kZXggNDQ2NTI0NC4uNTQ5MTMxNyAxMDA2NDQKLS0tIGEveGVuL2FyY2gv YXJtL3hzcGxpY2UuYworKysgYi94ZW4vYXJjaC9hcm0veHNwbGljZS5jCkBAIC02LDYgKzYsMzkg QEAKICNpbmNsdWRlIDx4ZW4veHNwbGljZV9lbGYuaD4KICNpbmNsdWRlIDx4ZW4veHNwbGljZS5o PgogCit2b2lkIGFyY2hfeHNwbGljZV9wYXRjaGluZ19lbnRlcih2b2lkKQoreworfQorCit2b2lk IGFyY2hfeHNwbGljZV9wYXRjaGluZ19sZWF2ZSh2b2lkKQoreworfQorCitpbnQgYXJjaF94c3Bs aWNlX3ZlcmlmeV9mdW5jKGNvbnN0IHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmNfaW50ZXJuYWwg KmZ1bmMpCit7CisgICAgcmV0dXJuIC1FTk9TWVM7Cit9CisKK3ZvaWQgYXJjaF94c3BsaWNlX2Fw cGx5X2ptcChzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jX2ludGVybmFsICpmdW5jKQoreworfQor Cit2b2lkIGFyY2hfeHNwbGljZV9yZXZlcnRfam1wKGNvbnN0IHN0cnVjdCB4c3BsaWNlX3BhdGNo X2Z1bmNfaW50ZXJuYWwgKmZ1bmMpCit7Cit9CisKK3ZvaWQgYXJjaF94c3BsaWNlX3Bvc3RfYWN0 aW9uKHZvaWQpCit7Cit9CisKK3ZvaWQgYXJjaF94c3BsaWNlX21hc2sodm9pZCkKK3sKK30KKwor dm9pZCBhcmNoX3hzcGxpY2VfdW5tYXNrKHZvaWQpCit7Cit9CisKIGludCBhcmNoX3hzcGxpY2Vf dmVyaWZ5X2VsZihjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZikKIHsKICAgICByZXR1cm4g LUVOT1NZUzsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21haW4uYyBiL3hlbi9hcmNoL3g4 Ni9kb21haW4uYwppbmRleCBlOTNmZjIwLi4yZDc5MzJmIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94 ODYvZG9tYWluLmMKKysrIGIveGVuL2FyY2gveDg2L2RvbWFpbi5jCkBAIC0zNiw2ICszNiw3IEBA CiAjaW5jbHVkZSA8eGVuL2NwdS5oPgogI2luY2x1ZGUgPHhlbi93YWl0Lmg+CiAjaW5jbHVkZSA8 eGVuL2d1ZXN0X2FjY2Vzcy5oPgorI2luY2x1ZGUgPHhlbi94c3BsaWNlLmg+CiAjaW5jbHVkZSA8 cHVibGljL3N5c2N0bC5oPgogI2luY2x1ZGUgPHB1YmxpYy9odm0vaHZtX3ZjcHUuaD4KICNpbmNs dWRlIDxhc20vcmVncy5oPgpAQCAtMTIwLDYgKzEyMSw3IEBAIHN0YXRpYyB2b2lkIGlkbGVfbG9v cCh2b2lkKQogICAgICAgICAoKnBtX2lkbGUpKCk7CiAgICAgICAgIGRvX3Rhc2tsZXQoKTsKICAg ICAgICAgZG9fc29mdGlycSgpOworICAgICAgICBjaGVja19mb3JfeHNwbGljZV93b3JrKCk7IC8q IE11c3QgYmUgbGFzdC4gKi8KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94 c3BsaWNlLmMgYi94ZW4vYXJjaC94ODYveHNwbGljZS5jCmluZGV4IDhlZTZjNWMuLmUwYWZhZDQg MTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni94c3BsaWNlLmMKKysrIGIveGVuL2FyY2gveDg2L3hz cGxpY2UuYwpAQCAtMTAsNiArMTAsODIgQEAKICNpbmNsdWRlIDx4ZW4veHNwbGljZV9lbGYuaD4K ICNpbmNsdWRlIDx4ZW4veHNwbGljZS5oPgogCisjaW5jbHVkZSA8YXNtL25taS5oPgorCisjZGVm aW5lIFBBVENIX0lOU05fU0laRSA1CisKK3ZvaWQgYXJjaF94c3BsaWNlX3BhdGNoaW5nX2VudGVy KHZvaWQpCit7CisgICAgLyogRGlzYWJsZSBXUCB0byBhbGxvdyBjaGFuZ2VzIHRvIHJlYWQtb25s eSBwYWdlcy4gKi8KKyAgICB3cml0ZV9jcjAocmVhZF9jcjAoKSAmIH5YODZfQ1IwX1dQKTsKK30K Kwordm9pZCBhcmNoX3hzcGxpY2VfcGF0Y2hpbmdfbGVhdmUodm9pZCkKK3sKKyAgICAvKiBSZWlu c3RhdGUgV1AuICovCisgICAgd3JpdGVfY3IwKHJlYWRfY3IwKCkgfCBYODZfQ1IwX1dQKTsKK30K KworaW50IGFyY2hfeHNwbGljZV92ZXJpZnlfZnVuYyhjb25zdCBzdHJ1Y3QgeHNwbGljZV9wYXRj aF9mdW5jX2ludGVybmFsICpmdW5jKQoreworICAgIC8qIE5vIE5PUCBwYXRjaGluZyB5ZXQuICov CisgICAgaWYgKCAhZnVuYy0+bmV3X3NpemUgKQorICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7 CisKKyAgICBpZiAoIGZ1bmMtPm9sZF9zaXplIDwgUEFUQ0hfSU5TTl9TSVpFICkKKyAgICAgICAg cmV0dXJuIC1FSU5WQUw7CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBhcmNoX3hzcGxpY2Vf YXBwbHlfam1wKHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmNfaW50ZXJuYWwgKmZ1bmMpCit7Cisg ICAgaW50MzJfdCB2YWw7CisgICAgdWludDhfdCAqb2xkX3B0cjsKKworICAgIEJVSUxEX0JVR19P TihQQVRDSF9JTlNOX1NJWkUgPiBzaXplb2YoZnVuYy0+dS51bmRvKSk7CisgICAgQlVJTERfQlVH X09OKFBBVENIX0lOU05fU0laRSAhPSAoMSArIHNpemVvZiB2YWwpKTsKKworICAgIG9sZF9wdHIg PSBmdW5jLT5vbGRfYWRkcjsKKyAgICBtZW1jcHkoZnVuYy0+dS51bmRvLCBvbGRfcHRyLCBQQVRD SF9JTlNOX1NJWkUpOworCisgICAgKm9sZF9wdHIrKyA9IDB4ZTk7IC8qIFJlbGF0aXZlIGp1bXAg Ki8KKyAgICB2YWwgPSBmdW5jLT5uZXdfYWRkciAtIGZ1bmMtPm9sZF9hZGRyIC0gUEFUQ0hfSU5T Tl9TSVpFOworICAgIG1lbWNweShvbGRfcHRyLCAmdmFsLCBzaXplb2YgdmFsKTsKK30KKwordm9p ZCBhcmNoX3hzcGxpY2VfcmV2ZXJ0X2ptcChjb25zdCBzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5j X2ludGVybmFsICpmdW5jKQoreworICAgIG1lbWNweShmdW5jLT5vbGRfYWRkciwgZnVuYy0+dS51 bmRvLCBQQVRDSF9JTlNOX1NJWkUpOworfQorCisvKiBTZXJpYWxpc2UgdGhlIENQVSBwaXBlbGlu ZS4gKi8KK3ZvaWQgYXJjaF94c3BsaWNlX3Bvc3RfYWN0aW9uKHZvaWQpCit7CisgICAgY3B1aWRf ZWF4KDApOworfQorCitzdGF0aWMgbm1pX2NhbGxiYWNrX3QgKnNhdmVkX25taV9jYWxsYmFjazsK Ky8qCisgKiBOb3RlIHRoYXQgYmVjYXVzZSBvZiB0aGlzIE5PUCBjb2RlIHRoZSBkb19ubWkgaXMg bm90IHNhZmVseSBwYXRjaGFibGUuCisgKiBBbHNvIGlmIHdlIGRvIHJlY2VpdmUgJ3JlYWwnIE5N SXMgd2UgaGF2ZSBsb3N0IHRoZW0uIERpdHRvIGZvciBNQ0UuCisgKi8KK3N0YXRpYyBpbnQgbWFz a19ubWlfY2FsbGJhY2soY29uc3Qgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsIGludCBjcHUp Cit7CisgICAgLyogVE9ETzogSGFuZGxlIG1pc3NpbmcgTk1JL01DRS4qLworICAgIHJldHVybiAx OworfQorCit2b2lkIGFyY2hfeHNwbGljZV9tYXNrKHZvaWQpCit7CisgICAgc2F2ZWRfbm1pX2Nh bGxiYWNrID0gc2V0X25taV9jYWxsYmFjayhtYXNrX25taV9jYWxsYmFjayk7Cit9CisKK3ZvaWQg YXJjaF94c3BsaWNlX3VubWFzayh2b2lkKQoreworICAgIHNldF9ubWlfY2FsbGJhY2soc2F2ZWRf bm1pX2NhbGxiYWNrKTsKK30KKwogaW50IGFyY2hfeHNwbGljZV92ZXJpZnlfZWxmKGNvbnN0IHN0 cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQogewogCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3hzcGxp Y2UuYyBiL3hlbi9jb21tb24veHNwbGljZS5jCmluZGV4IGNiZWUyNjQuLjlhNTNjZjQgMTAwNjQ0 Ci0tLSBhL3hlbi9jb21tb24veHNwbGljZS5jCisrKyBiL3hlbi9jb21tb24veHNwbGljZS5jCkBA IC0zLDYgKzMsNyBAQAogICoKICAqLwogCisjaW5jbHVkZSA8eGVuL2NwdS5oPgogI2luY2x1ZGUg PHhlbi9lcnIuaD4KICNpbmNsdWRlIDx4ZW4vZ3Vlc3RfYWNjZXNzLmg+CiAjaW5jbHVkZSA8eGVu L2tleWhhbmRsZXIuaD4KQEAgLTExLDE3ICsxMiwyOCBAQAogI2luY2x1ZGUgPHhlbi9tbS5oPgog I2luY2x1ZGUgPHhlbi9zY2hlZC5oPgogI2luY2x1ZGUgPHhlbi9zbXAuaD4KKyNpbmNsdWRlIDx4 ZW4vc29mdGlycS5oPgogI2luY2x1ZGUgPHhlbi9zcGlubG9jay5oPgogI2luY2x1ZGUgPHhlbi92 bWFwLmg+CisjaW5jbHVkZSA8eGVuL3dhaXQuaD4KICNpbmNsdWRlIDx4ZW4veHNwbGljZV9lbGYu aD4KICNpbmNsdWRlIDx4ZW4veHNwbGljZS5oPgogCiAjaW5jbHVkZSA8YXNtL2V2ZW50Lmg+CiAj aW5jbHVkZSA8cHVibGljL3N5c2N0bC5oPgogCisvKgorICogUHJvdGVjdHMgYWdhaW5zdCBwYXls b2FkX2xpc3Qgb3BlcmF0aW9ucyBhbmQgYWxzbyBhbGxvd3Mgb25seSBvbmUKKyAqIGNhbGxlciBp biBzY2hlZHVsZV93b3JrLgorICovCiBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHBheWxvYWRfbG9j ayk7CiBzdGF0aWMgTElTVF9IRUFEKHBheWxvYWRfbGlzdCk7CiAKKy8qCisgKiBQYXRjaGVzIHdo aWNoIGhhdmUgYmVlbiBhcHBsaWVkLgorICovCitzdGF0aWMgTElTVF9IRUFEKGFwcGxpZWRfbGlz dCk7CisKIHN0YXRpYyB1bnNpZ25lZCBpbnQgcGF5bG9hZF9jbnQ7CiBzdGF0aWMgdW5zaWduZWQg aW50IHBheWxvYWRfdmVyc2lvbiA9IDE7CiAKQEAgLTM2LDkgKzQ4LDM1IEBAIHN0cnVjdCBwYXls b2FkIHsKICAgICB2b2lkICpyb19hZGRyOyAgICAgICAgICAgICAgICAgICAgICAgLyogVmlydHVh bCBhZGRyZXNzIG9mIC5yb2RhdGEuICovCiAgICAgc2l6ZV90IHJvX3NpemU7ICAgICAgICAgICAg ICAgICAgICAgIC8qIC4uIGFuZCBpdHMgc2l6ZSAoaWYgYW55KS4gKi8KICAgICBzaXplX3QgcGFn ZXM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogVG90YWwgcGFnZXMgZm9yIFt0ZXh0LHJ3LHJv XV9hZGRyICovCisgICAgc3RydWN0IGxpc3RfaGVhZCBhcHBsaWVkX2xpc3Q7ICAgICAgIC8qIExp bmtlZCB0byAnYXBwbGllZF9saXN0Jy4gKi8KKyAgICBzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5j X2ludGVybmFsICpmdW5jczsgICAgLyogVGhlIGFycmF5IG9mIGZ1bmN0aW9ucyB0byBwYXRjaC4g Ki8KKyAgICB1bnNpZ25lZCBpbnQgbmZ1bmNzOyAgICAgICAgICAgICAgICAgLyogTnIgb2YgZnVu Y3Rpb25zIHRvIHBhdGNoLiAqLwogICAgIGNoYXIgbmFtZVtYRU5fWFNQTElDRV9OQU1FX1NJWkVd OyAgICAvKiBOYW1lIG9mIGl0LiAqLwogfTsKIAorLyogRGVmaW5lcyBhbiBvdXRzdGFuZGluZyBw YXRjaGluZyBhY3Rpb24uICovCitzdHJ1Y3QgeHNwbGljZV93b3JrCit7CisgICAgYXRvbWljX3Qg c2VtYXBob3JlOyAgICAgICAgICAvKiBVc2VkIGZvciByZW5kZXp2b3VzLiAqLworICAgIGF0b21p Y190IGlycV9zZW1hcGhvcmU7ICAgICAgLyogVXNlZCB0byBzaWduYWwgYWxsIElSUXMgZGlzYWJs ZWQuICovCisgICAgdWludDMyX3QgdGltZW91dDsgICAgICAgICAgICAvKiBUaW1lb3V0IHRvIGRv IHRoZSBvcGVyYXRpb24uICovCisgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7ICAgICAgICAvKiBU aGUgcGF5bG9hZCBvbiB3aGljaCB0byBhY3QuICovCisgICAgdm9sYXRpbGUgYm9vbF90IGRvX3dv cms7ICAgICAvKiBTaWduYWxzIHdvcmsgdG8gZG8uICovCisgICAgdm9sYXRpbGUgYm9vbF90IHJl YWR5OyAgICAgICAvKiBTaWduYWxzIGFsbCBDUFVzIHN5bmNocm9uaXplZC4gKi8KKyAgICB1bnNp Z25lZCBpbnQgY21kOyAgICAgICAgICAgIC8qIEFjdGlvbiByZXF1ZXN0OiBYU1BMSUNFX0FDVElP Tl8qICovCit9OworCisvKiBUaGVyZSBjYW4gYmUgb25seSBvbmUgb3V0c3RhbmRpbmcgcGF0Y2hp bmcgYWN0aW9uLiAqLworc3RhdGljIHN0cnVjdCB4c3BsaWNlX3dvcmsgeHNwbGljZV93b3JrOwor CisvKgorICogSW5kaWNhdGUgd2hldGhlciB0aGUgQ1BVIG5lZWRzIHRvIGNvbnN1bHQgeHNwbGlj ZV93b3JrIHN0cnVjdHVyZS4KKyAqIFdlIHdhbnQgYW4gcGVyLWNwdSBkYXRhIHN0cnVjdHVyZSBv dGhlcndpc2UgdGhlIGNoZWNrX2Zvcl94c3BsaWNlX3dvcmsKKyAqIHdvdWxkIGhhbW1lciBhIGds b2JhbCB4c3BsaWNlX3dvcmsgc3RydWN0dXJlIG9uIGV2ZXJ5IGd1ZXN0IFZNRVhJVC4KKyAqIEhh dmluZyBhbiBwZXItY3B1IGxlc3NlbnMgdGhlIGxvYWQuCisgKi8KK3N0YXRpYyBERUZJTkVfUEVS X0NQVShib29sX3QsIHdvcmtfdG9fZG8pOworCiBzdGF0aWMgaW50IHZlcmlmeV9uYW1lKGNvbnN0 IHhlbl94c3BsaWNlX25hbWVfdCAqbmFtZSwgY2hhciAqbikKIHsKICAgICBpZiAoICFuYW1lLT5z aXplIHx8IG5hbWUtPnNpemUgPiBYRU5fWFNQTElDRV9OQU1FX1NJWkUgKQpAQCAtMjU0LDYgKzI5 Miw5NSBAQCBzdGF0aWMgaW50IHNlY3VyZV9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpwYXlsb2Fk LCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZikKICAgICByZXR1cm4gcmM7CiB9CiAKK3N0YXRpYyBp bnQgY2hlY2tfc3BlY2lhbF9zZWN0aW9ucyhjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZikK K3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgbmFt ZXNbXSA9IHsgIi54c3BsaWNlLmZ1bmNzIiB9OworICAgIHVuc2lnbmVkIGludCBjb3VudFtBUlJB WV9TSVpFKG5hbWVzKV0gPSB7IDAgfTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgQVJSQVlfU0la RShuYW1lcyk7IGkrKyApCisgICAgeworICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZf c2VjICpzZWM7CisKKyAgICAgICAgc2VjID0geHNwbGljZV9lbGZfc2VjX2J5X25hbWUoZWxmLCBu YW1lc1tpXSk7CisgICAgICAgIGlmICggIXNlYyApCisgICAgICAgIHsKKyAgICAgICAgICAgIHBy aW50ayhYRU5MT0dfRVJSIFhTUExJQ0UgIiVzOiAlcyBpcyBtaXNzaW5nIVxuIiwKKyAgICAgICAg ICAgICAgICAgICBlbGYtPm5hbWUsIG5hbWVzW2ldKTsKKyAgICAgICAgICAgIHJldHVybiAtRUlO VkFMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCAhc2VjLT5zZWMtPnNoX3NpemUgKQorICAg ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICAgICAgY291bnRbaV0rKzsKKyAgICB9CisK KyAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUobmFtZXMpOyBpKysgKQorICAgIHsKKyAg ICAgICAgaWYgKCBjb3VudFtpXSA+IDEgKQorICAgICAgICB7CisgICAgICAgICAgICBwcmludGso WEVOTE9HX0VSUiBYU1BMSUNFICIlczogJXMgd2FzIHNlZW4gbW9yZSB0aGFuIG9uY2UhXG4iLAor ICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgbmFtZXNbaV0pOworICAgICAgICAgICAgcmV0 dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3Rh dGljIGludCBwcmVwYXJlX3BheWxvYWQoc3RydWN0IHBheWxvYWQgKnBheWxvYWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZikKK3sKKyAgICBjb25z dCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzZWM7CisgICAgdW5zaWduZWQgaW50IGk7CisgICAg c3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuY19pbnRlcm5hbCAqZjsKKworICAgIHNlYyA9IHhzcGxp Y2VfZWxmX3NlY19ieV9uYW1lKGVsZiwgIi54c3BsaWNlLmZ1bmNzIik7CisgICAgQVNTRVJUKHNl Yyk7CisgICAgaWYgKCBzZWMtPnNlYy0+c2hfc2l6ZSAlIHNpemVvZigqcGF5bG9hZC0+ZnVuY3Mp ICkKKyAgICB7CisgICAgICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCBYU1BMSUNFICIlczogV3Jv bmcgc2l6ZSBvZiAueHNwbGljZS5mdW5jcyFcbiIsCisgICAgICAgICAgICAgICAgZWxmLT5uYW1l KTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgcGF5bG9hZC0+ZnVuY3Mg PSBzZWMtPmxvYWRfYWRkcjsKKyAgICBwYXlsb2FkLT5uZnVuY3MgPSBzZWMtPnNlYy0+c2hfc2l6 ZSAvIHNpemVvZigqcGF5bG9hZC0+ZnVuY3MpOworCisgICAgZm9yICggaSA9IDA7IGkgPCBwYXls b2FkLT5uZnVuY3M7IGkrKyApCisgICAgeworICAgICAgICBpbnQgcmM7CisgICAgICAgIHVuc2ln bmVkIGludCBqOworCisgICAgICAgIGYgPSAmKHBheWxvYWQtPmZ1bmNzW2ldKTsKKworICAgICAg ICBpZiAoIGYtPnZlcnNpb24gIT0gWFNQTElDRV9QQVlMT0FEX1ZFUlNJT04gKQorICAgICAgICB7 CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgWFNQTElDRSAiJXM6IFdyb25nIHZl cnNpb24gKCV1KS4gRXhwZWN0ZWQgJWQhXG4iLAorICAgICAgICAgICAgICAgICAgICBlbGYtPm5h bWUsIGYtPnZlcnNpb24sIFhTUExJQ0VfUEFZTE9BRF9WRVJTSU9OKTsKKyAgICAgICAgICAgIHJl dHVybiAtRU9QTk9UU1VQUDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggIWYtPm5ld19hZGRy IHx8ICFmLT5uZXdfc2l6ZSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9H X0RFQlVHLCBYU1BMSUNFICIlczogQWRkcmVzcyBvciBzaXplIGZpZWxkcyBhcmUgemVybyFcbiIs CisgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSk7CisgICAgICAgICAgICByZXR1cm4gLUVJ TlZBTDsKKyAgICAgICAgfQorCisgICAgICAgIHJjID0gYXJjaF94c3BsaWNlX3ZlcmlmeV9mdW5j KGYpOworICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgIHJldHVybiByYzsKKworICAgICAg ICBmb3IgKCBqID0gMDsgaiA8IEFSUkFZX1NJWkUoZi0+dS5wYWQpOyBqKysgKQorICAgICAgICAg ICAgaWYgKCBmLT51LnBhZFtqXSApCisgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cisg ICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyB2b2lkIGZyZWVfcGF5bG9hZChzdHJ1 Y3QgcGF5bG9hZCAqZGF0YSkKIHsKICAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnBheWxvYWRf bG9jaykpOwpAQCAtMjg1LDYgKzQxMiwxNCBAQCBzdGF0aWMgaW50IGxvYWRfcGF5bG9hZF9kYXRh KHN0cnVjdCBwYXlsb2FkICpwYXlsb2FkLCB2b2lkICpyYXcsIHNpemVfdCBsZW4pCiAgICAgaWYg KCByYyApCiAgICAgICAgIGdvdG8gb3V0OwogCisgICAgcmMgPSBjaGVja19zcGVjaWFsX3NlY3Rp b25zKCZlbGYpOworICAgIGlmICggcmMgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJjID0g cHJlcGFyZV9wYXlsb2FkKHBheWxvYWQsICZlbGYpOworICAgIGlmICggcmMgKQorICAgICAgICBn b3RvIG91dDsKKwogICAgIHJjID0gc2VjdXJlX3BheWxvYWQocGF5bG9hZCwgJmVsZik7CiAKICBv dXQ6CkBAIC0zNDUsNiArNDgwLDcgQEAgc3RhdGljIGludCB4c3BsaWNlX3VwbG9hZCh4ZW5fc3lz Y3RsX3hzcGxpY2VfdXBsb2FkX3QgKnVwbG9hZCkKIAogICAgIGRhdGEtPnN0YXRlID0gWFNQTElD RV9TVEFURV9DSEVDS0VEOwogICAgIElOSVRfTElTVF9IRUFEKCZkYXRhLT5saXN0KTsKKyAgICBJ TklUX0xJU1RfSEVBRCgmZGF0YS0+YXBwbGllZF9saXN0KTsKIAogICAgIGxpc3RfYWRkX3RhaWwo JmRhdGEtPmxpc3QsICZwYXlsb2FkX2xpc3QpOwogICAgIHBheWxvYWRfY250Kys7CkBAIC00NTUs NiArNTkxLDI5NCBAQCBzdGF0aWMgaW50IHhzcGxpY2VfbGlzdCh4ZW5fc3lzY3RsX3hzcGxpY2Vf bGlzdF90ICpsaXN0KQogICAgIHJldHVybiByYyA/IDogaWR4OwogfQogCisvKgorICogVGhlIGZv bGxvd2luZyBmdW5jdGlvbnMgZ2V0IHRoZSBDUFVzIGludG8gYW4gYXBwcm9wcmlhdGUgc3RhdGUg YW5kCisgKiBhcHBseSAob3IgcmV2ZXJ0KSBlYWNoIG9mIHRoZSBwYXlsb2FkJ3MgZnVuY3Rpb25z LiBUaGlzIGlzIG5lZWRlZAorICogZm9yIFhFTl9TWVNDVExfWFNQTElDRV9BQ1RJT04gb3BlcmF0 aW9uIChzZWUgeHNwbGljZV9hY3Rpb24pLgorICovCisKK3N0YXRpYyBpbnQgYXBwbHlfcGF5bG9h ZChzdHJ1Y3QgcGF5bG9hZCAqZGF0YSkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGRw cmludGsoWEVOTE9HX0RFQlVHLCBYU1BMSUNFICIlczogQXBwbHlpbmcgJXUgZnVuY3Rpb25zLlxu IiwKKyAgICAgICAgICAgIGRhdGEtPm5hbWUsIGRhdGEtPm5mdW5jcyk7CisKKyAgICBhcmNoX3hz cGxpY2VfcGF0Y2hpbmdfZW50ZXIoKTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgZGF0YS0+bmZ1 bmNzOyBpKysgKQorICAgICAgICBhcmNoX3hzcGxpY2VfYXBwbHlfam1wKCZkYXRhLT5mdW5jc1tp XSk7CisKKyAgICBhcmNoX3hzcGxpY2VfcGF0Y2hpbmdfbGVhdmUoKTsKKworICAgIGxpc3RfYWRk X3RhaWwoJmRhdGEtPmFwcGxpZWRfbGlzdCwgJmFwcGxpZWRfbGlzdCk7CisKKyAgICByZXR1cm4g MDsKK30KKworc3RhdGljIGludCByZXZlcnRfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqZGF0YSkK K3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCBYU1BM SUNFICIlczogUmV2ZXJ0aW5nLlxuIiwgZGF0YS0+bmFtZSk7CisKKyAgICBhcmNoX3hzcGxpY2Vf cGF0Y2hpbmdfZW50ZXIoKTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgZGF0YS0+bmZ1bmNzOyBp KysgKQorICAgICAgICBhcmNoX3hzcGxpY2VfcmV2ZXJ0X2ptcCgmZGF0YS0+ZnVuY3NbaV0pOwor CisgICAgYXJjaF94c3BsaWNlX3BhdGNoaW5nX2xlYXZlKCk7CisKKyAgICBsaXN0X2RlbF9pbml0 KCZkYXRhLT5hcHBsaWVkX2xpc3QpOworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBUaGlz IGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGhhdmluZyBhbGwgb3RoZXIgQ1BVcyB3aXRoIG5vIHN0YWNr ICh3ZSBtYXkKKyAqIGhhdmUgY3B1X2lkbGUgb24gaXQpIGFuZCBJUlFzIGRpc2FibGVkLiBXZSBn dWFyZCBhZ2FpbnN0IE5NSSBieSB0ZW1wb3JhcmlseQorICogaW5zdGFsbGluZyBvdXIgTk9QIE5N SSBoYW5kbGVyLgorICovCitzdGF0aWMgdm9pZCB4c3BsaWNlX2RvX2FjdGlvbih2b2lkKQorewor ICAgIGludCByYzsKKyAgICBzdHJ1Y3QgcGF5bG9hZCAqZGF0YSwgKm90aGVyLCAqdG1wOworCisg ICAgZGF0YSA9IHhzcGxpY2Vfd29yay5kYXRhOworICAgIC8qCisgICAgICogTm93IHRoaXMgZnVu Y3Rpb24gc2hvdWxkIGJlIHRoZSBvbmx5IG9uZSBvbiBhbnkgc3RhY2suCisgICAgICogTm8gbmVl ZCB0byBsb2NrIHRoZSBwYXlsb2FkIGxpc3Qgb3IgYXBwbGllZCBsaXN0LgorICAgICAqLworICAg IHN3aXRjaCAoIHhzcGxpY2Vfd29yay5jbWQgKQorICAgIHsKKyAgICBjYXNlIFhTUExJQ0VfQUNU SU9OX0FQUExZOgorICAgICAgICByYyA9IGFwcGx5X3BheWxvYWQoZGF0YSk7CisgICAgICAgIGlm ICggcmMgPT0gMCApCisgICAgICAgICAgICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQVBQ TElFRDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFhTUExJQ0VfQUNUSU9OX1JFVkVSVDoK KyAgICAgICAgcmMgPSByZXZlcnRfcGF5bG9hZChkYXRhKTsKKyAgICAgICAgaWYgKCByYyA9PSAw ICkKKyAgICAgICAgICAgIGRhdGEtPnN0YXRlID0gWFNQTElDRV9TVEFURV9DSEVDS0VEOworICAg ICAgICBicmVhazsKKworICAgIGNhc2UgWFNQTElDRV9BQ1RJT05fUkVQTEFDRToKKyAgICAgICAg cmMgPSAwOworICAgICAgICAvKiBOLkI6IFVzZSAnYXBwbGllZF9saXN0JyBtZW1iZXIsIG5vdCAn bGlzdCcuICovCisgICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZV9yZXZlcnNlICggb3Ro ZXIsIHRtcCwgJmFwcGxpZWRfbGlzdCwgYXBwbGllZF9saXN0ICkKKyAgICAgICAgeworICAgICAg ICAgICAgb3RoZXItPnJjID0gcmV2ZXJ0X3BheWxvYWQob3RoZXIpOworICAgICAgICAgICAgaWYg KCBvdGhlci0+cmMgPT0gMCApCisgICAgICAgICAgICAgICAgb3RoZXItPnN0YXRlID0gWFNQTElD RV9TVEFURV9DSEVDS0VEOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgIHJjID0gLUVJTlZBTDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICggcmMgPT0gMCApCisgICAgICAgIHsKKyAg ICAgICAgICAgIHJjID0gYXBwbHlfcGF5bG9hZChkYXRhKTsKKyAgICAgICAgICAgIGlmICggcmMg PT0gMCApCisgICAgICAgICAgICAgICAgZGF0YS0+c3RhdGUgPSBYU1BMSUNFX1NUQVRFX0FQUExJ RUQ7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBB U1NFUlRfVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLyogV2Ug bXVzdCBzZXQgcmMgYXMgeHNwbGljZV9hY3Rpb24gc2V0cyBpdCB0byAtRUFHQUlOIHdoZW4ga2lj a2luZyBvZi4gKi8KKyAgICBkYXRhLT5yYyA9IHJjOworfQorCitzdGF0aWMgaW50IHNjaGVkdWxl X3dvcmsoc3RydWN0IHBheWxvYWQgKmRhdGEsIHVpbnQzMl90IGNtZCwgdWludDMyX3QgdGltZW91 dCkKK3sKKyAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnBheWxvYWRfbG9jaykpOworCisgICAg LyogRmFpbCBpZiBhbiBvcGVyYXRpb24gaXMgYWxyZWFkeSBzY2hlZHVsZWQuICovCisgICAgaWYg KCB4c3BsaWNlX3dvcmsuZG9fd29yayApCisgICAgICAgIHJldHVybiAtRUJVU1k7CisKKyAgICBp ZiAoICFnZXRfY3B1X21hcHMoKSApCisgICAgeworICAgICAgICBwcmludGsoWEVOTE9HX0VSUiBY U1BMSUNFICIlczogdW5hYmxlIHRvIGdldCBjcHVfbWFwcyBsb2NrIVxuIiwKKyAgICAgICAgICAg ICAgIGRhdGEtPm5hbWUpOworICAgICAgICByZXR1cm4gLUVCVVNZOworICAgIH0KKworICAgIHhz cGxpY2Vfd29yay5jbWQgPSBjbWQ7CisgICAgeHNwbGljZV93b3JrLmRhdGEgPSBkYXRhOworICAg IHhzcGxpY2Vfd29yay50aW1lb3V0ID0gdGltZW91dCA/OiBNSUxMSVNFQ1MoMzApOworCisgICAg ZHByaW50ayhYRU5MT0dfREVCVUcsIFhTUExJQ0UgIiVzOiB0aW1lb3V0IGlzICUiUFJJX3N0aW1l Im1zXG4iLAorICAgICAgICAgICAgZGF0YS0+bmFtZSwgeHNwbGljZV93b3JrLnRpbWVvdXQgLyBN SUxMSVNFQ1MoMSkpOworCisgICAgYXRvbWljX3NldCgmeHNwbGljZV93b3JrLnNlbWFwaG9yZSwg LTEpOworICAgIGF0b21pY19zZXQoJnhzcGxpY2Vfd29yay5pcnFfc2VtYXBob3JlLCAtMSk7CisK KyAgICB4c3BsaWNlX3dvcmsucmVhZHkgPSAwOworCisgICAgc21wX3dtYigpOworCisgICAgeHNw bGljZV93b3JrLmRvX3dvcmsgPSAxOworICAgIHRoaXNfY3B1KHdvcmtfdG9fZG8pID0gMTsKKwor ICAgIHB1dF9jcHVfbWFwcygpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHJl c2NoZWR1bGVfZm4odm9pZCAqdW51c2VkKQoreworICAgIHRoaXNfY3B1KHdvcmtfdG9fZG8pID0g MTsKKyAgICByYWlzZV9zb2Z0aXJxKFNDSEVEVUxFX1NPRlRJUlEpOworfQorCitzdGF0aWMgaW50 IHhzcGxpY2Vfc3BpbihhdG9taWNfdCAqY291bnRlciwgc190aW1lX3QgdGltZW91dCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjcHVzLCBjb25zdCBjaGFyICpzKQor eworICAgIGludCByYyA9IDA7CisKKyAgICB3aGlsZSAoIGF0b21pY19yZWFkKGNvdW50ZXIpICE9 IGNwdXMgJiYgTk9XKCkgPCB0aW1lb3V0ICkKKyAgICAgICAgY3B1X3JlbGF4KCk7CisKKyAgICAv KiBMb2cgJiBhYm9ydC4gKi8KKyAgICBpZiAoIGF0b21pY19yZWFkKGNvdW50ZXIpICE9IGNwdXMg KQorICAgIHsKKyAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgWFNQTElDRSAiJXM6IFRpbWVkIG91 dCBvbiAlcyBzZW1hcGhvcmUgJXUvJXVcbiIsCisgICAgICAgICAgICAgICB4c3BsaWNlX3dvcmsu ZGF0YS0+bmFtZSwgcywgYXRvbWljX3JlYWQoY291bnRlciksIGNwdXMpOworICAgICAgICByYyA9 IC1FQlVTWTsKKyAgICAgICAgeHNwbGljZV93b3JrLmRhdGEtPnJjID0gcmM7CisgICAgICAgIHhz cGxpY2Vfd29yay5kb193b3JrID0gMDsKKyAgICAgICAgc21wX3dtYigpOworICAgIH0KKworICAg IHJldHVybiByYzsKK30KKworLyoKKyAqIFRoZSBtYWluIGZ1bmN0aW9uIHdoaWNoIG1hbmFnZXMg dGhlIHdvcmsgb2YgcXVpZXNjaW5nIHRoZSBzeXN0ZW0gYW5kCisgKiBwYXRjaGluZyBjb2RlLgor ICovCit2b2lkIGNoZWNrX2Zvcl94c3BsaWNlX3dvcmsodm9pZCkKK3sKKyNkZWZpbmUgQUNUSU9O KHgpIFtYU1BMSUNFX0FDVElPTl8jI3hdID0gI3gKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29u c3QgbmFtZXNbXSA9IHsKKyAgICAgICAgICAgIEFDVElPTihBUFBMWSksCisgICAgICAgICAgICBB Q1RJT04oUkVWRVJUKSwKKyAgICAgICAgICAgIEFDVElPTihSRVBMQUNFKSwKKyAgICB9OworICAg IHVuc2lnbmVkIGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CisgICAgc190aW1lX3QgdGlt ZW91dDsKKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworCisgICAgLyogRmFzdCBwYXRoOiBubyB3 b3JrIHRvIGRvLiAqLworICAgIGlmICggIXBlcl9jcHUod29ya190b19kbywgY3B1ICkgKQorICAg ICAgICByZXR1cm47CisKKyAgICBzbXBfcm1iKCk7CisgICAgLyogSW4gY2FzZSB3ZSBhYm9ydGVk LCBvdGhlciBDUFVzIGNhbiBza2lwIHJpZ2h0IGF3YXkuICovCisgICAgaWYgKCAheHNwbGljZV93 b3JrLmRvX3dvcmsgKQorICAgIHsKKyAgICAgICAgcGVyX2NwdSh3b3JrX3RvX2RvLCBjcHUpID0g MDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChsb2NhbF9pcnFfaXNfZW5h YmxlZCgpKTsKKworICAgIC8qIFNldCBhdCAtMSwgc28gd2lsbCBnbyB1cCB0byBudW1fb25saW5l X2NwdXMgLSAxLiAqLworICAgIGlmICggYXRvbWljX2luY19hbmRfdGVzdCgmeHNwbGljZV93b3Jr LnNlbWFwaG9yZSkgKQorICAgIHsKKyAgICAgICAgc3RydWN0IHBheWxvYWQgKnA7CisgICAgICAg IHVuc2lnbmVkIGludCBjcHVzOworCisgICAgICAgIHAgPSB4c3BsaWNlX3dvcmsuZGF0YTsKKyAg ICAgICAgaWYgKCAhZ2V0X2NwdV9tYXBzKCkgKQorICAgICAgICB7CisgICAgICAgICAgICBwcmlu dGsoWEVOTE9HX0VSUiBYU1BMSUNFICIlczogQ1BVJXUgLSB1bmFibGUgdG8gZ2V0IGNwdV9tYXBz IGxvY2shXG4iLAorICAgICAgICAgICAgICAgICAgIHAtPm5hbWUsIGNwdSk7CisgICAgICAgICAg ICBwZXJfY3B1KHdvcmtfdG9fZG8sIGNwdSkgPSAwOworICAgICAgICAgICAgeHNwbGljZV93b3Jr LmRhdGEtPnJjID0gLUVCVVNZOworICAgICAgICAgICAgeHNwbGljZV93b3JrLmRvX3dvcmsgPSAw OworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIERvIE5PVCBkZWNyZW1lbnQgc2VtYXBo b3JlIGRvd24gLSBhcyB0aGF0IG1heSBjYXVzZSB0aGUgb3RoZXIKKyAgICAgICAgICAgICAqIENQ VSAod2hpY2ggbWF5IGJlIGF0IHRoaXMgcmVhZHkgdG8gaW5jcmVtZW50IGl0KQorICAgICAgICAg ICAgICogdG8gYXNzdW1lIHRoZSByb2xlIG9mIG1hc3RlciBhbmQgdGhlbiBuZWVkbGVzc2x5IHRp bWUgb3V0CisgICAgICAgICAgICAgKiBvdXQgKGFzIGRvX3dvcmsgaXMgemVybykuCisgICAgICAg ICAgICAgKi8KKyAgICAgICAgICAgIHNtcF93bWIoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg ICAgICAgfQorICAgICAgICAvKiAiTWFzayIgTk1Jcy4gKi8KKyAgICAgICAgYXJjaF94c3BsaWNl X21hc2soKTsKKworICAgICAgICBiYXJyaWVyKCk7IC8qIE1VU1QgZG8gaXQgYWZ0ZXIgZ2V0X2Nw dV9tYXBzLiAqLworICAgICAgICBjcHVzID0gbnVtX29ubGluZV9jcHVzKCkgLSAxOworCisgICAg ICAgIGlmICggY3B1cyApCisgICAgICAgIHsKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0RF QlVHLCBYU1BMSUNFICIlczogQ1BVJXUgLSBJUElpbmcgdGhlIG90aGVyICV1IENQVXNcbiIsCisg ICAgICAgICAgICAgICAgICAgIHAtPm5hbWUsIGNwdSwgY3B1cyk7CisgICAgICAgICAgICBzbXBf Y2FsbF9mdW5jdGlvbihyZXNjaGVkdWxlX2ZuLCBOVUxMLCAwKTsKKyAgICAgICAgfQorCisgICAg ICAgIHRpbWVvdXQgPSB4c3BsaWNlX3dvcmsudGltZW91dCArIE5PVygpOworICAgICAgICBpZiAo IHhzcGxpY2Vfc3BpbigmeHNwbGljZV93b3JrLnNlbWFwaG9yZSwgdGltZW91dCwgY3B1cywgIkNQ VSIpICkKKyAgICAgICAgICAgIGdvdG8gYWJvcnQ7CisKKyAgICAgICAgLyogQWxsIENQVXMgYXJl IHdhaXRpbmcsIG5vdyBzaWduYWwgdG8gZGlzYWJsZSBJUlFzLiAqLworICAgICAgICB4c3BsaWNl X3dvcmsucmVhZHkgPSAxOworICAgICAgICBzbXBfd21iKCk7CisKKyAgICAgICAgYXRvbWljX2lu YygmeHNwbGljZV93b3JrLmlycV9zZW1hcGhvcmUpOworICAgICAgICBpZiAoICF4c3BsaWNlX3Nw aW4oJnhzcGxpY2Vfd29yay5pcnFfc2VtYXBob3JlLCB0aW1lb3V0LCBjcHVzLCAiSVJRIikgKQor ICAgICAgICB7CisgICAgICAgICAgICBsb2NhbF9pcnFfc2F2ZShmbGFncyk7CisgICAgICAgICAg ICAvKiBEbyB0aGUgcGF0Y2hpbmcuICovCisgICAgICAgICAgICB4c3BsaWNlX2RvX2FjdGlvbigp OworICAgICAgICAgICAgLyogRmx1c2ggdGhlIENQVSBpLWNhY2hlIHZpYSBDUFVJRCBpbnN0cnVj dGlvbiAob24geDg2KS4gKi8KKyAgICAgICAgICAgIGFyY2hfeHNwbGljZV9wb3N0X2FjdGlvbigp OworICAgICAgICAgICAgbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOworICAgICAgICB9CisgICAg ICAgIGFyY2hfeHNwbGljZV91bm1hc2soKTsKKworIGFib3J0OgorICAgICAgICBwZXJfY3B1KHdv cmtfdG9fZG8sIGNwdSkgPSAwOworICAgICAgICB4c3BsaWNlX3dvcmsuZG9fd29yayA9IDA7CisK KyAgICAgICAgc21wX3dtYigpOyAvKiBNVVNUIGNvbXBsZXRlIHdyaXRlcyBiZWZvcmUgcHV0X2Nw dV9tYXBzKCkuICovCisKKyAgICAgICAgcHV0X2NwdV9tYXBzKCk7CisKKyAgICAgICAgcHJpbnRr KFhFTkxPR19JTkZPIFhTUExJQ0UgIiVzIGZpbmlzaGVkICVzIHdpdGggcmM9JWRcbiIsCisgICAg ICAgICAgICAgICBwLT5uYW1lLCBuYW1lc1t4c3BsaWNlX3dvcmsuY21kXSwgcC0+cmMpOworICAg IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAvKiBXYWl0IGZvciBhbGwgQ1BVcyB0byByZW5k ZXp2b3VzLiAqLworICAgICAgICB3aGlsZSAoIHhzcGxpY2Vfd29yay5kb193b3JrICYmICF4c3Bs aWNlX3dvcmsucmVhZHkgKQorICAgICAgICAgICAgY3B1X3JlbGF4KCk7CisKKyAgICAgICAgLyog RGlzYWJsZSBJUlFzIGFuZCBzaWduYWwuICovCisgICAgICAgIGxvY2FsX2lycV9zYXZlKGZsYWdz KTsKKyAgICAgICAgYXRvbWljX2luYygmeHNwbGljZV93b3JrLmlycV9zZW1hcGhvcmUpOworCisg ICAgICAgIC8qIFdhaXQgZm9yIHBhdGNoaW5nIHRvIGNvbXBsZXRlLiAqLworICAgICAgICB3aGls ZSAoIHhzcGxpY2Vfd29yay5kb193b3JrICkKKyAgICAgICAgICAgIGNwdV9yZWxheCgpOworCisg ICAgICAgIC8qIFRvIGZsdXNoIG91dCBwaXBlbGluZS4gKi8KKyAgICAgICAgYXJjaF94c3BsaWNl X3Bvc3RfYWN0aW9uKCk7CisgICAgICAgIGxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKKworICAg ICAgICBwZXJfY3B1KHdvcmtfdG9fZG8sIGNwdSkgPSAwOworICAgIH0KK30KKwogc3RhdGljIGlu dCB4c3BsaWNlX2FjdGlvbih4ZW5fc3lzY3RsX3hzcGxpY2VfYWN0aW9uX3QgKmFjdGlvbikKIHsK ICAgICBzdHJ1Y3QgcGF5bG9hZCAqZGF0YTsKQEAgLTUwMSwyNyArOTI1LDI0IEBAIHN0YXRpYyBp bnQgeHNwbGljZV9hY3Rpb24oeGVuX3N5c2N0bF94c3BsaWNlX2FjdGlvbl90ICphY3Rpb24pCiAg ICAgY2FzZSBYU1BMSUNFX0FDVElPTl9SRVZFUlQ6CiAgICAgICAgIGlmICggZGF0YS0+c3RhdGUg PT0gWFNQTElDRV9TVEFURV9BUFBMSUVEICkKICAgICAgICAgewotICAgICAgICAgICAgLyogTm8g aW1wbGVtZW50YXRpb24geWV0LiAqLwotICAgICAgICAgICAgZGF0YS0+c3RhdGUgPSBYU1BMSUNF X1NUQVRFX0NIRUNLRUQ7Ci0gICAgICAgICAgICBkYXRhLT5yYyA9IDA7CisgICAgICAgICAgICBk YXRhLT5yYyA9IC1FQUdBSU47CisgICAgICAgICAgICByYyA9IHNjaGVkdWxlX3dvcmsoZGF0YSwg YWN0aW9uLT5jbWQsIGFjdGlvbi0+dGltZW91dCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7 CiAKICAgICBjYXNlIFhTUExJQ0VfQUNUSU9OX0FQUExZOgogICAgICAgICBpZiAoIGRhdGEtPnN0 YXRlID09IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIC8q IE5vIGltcGxlbWVudGF0aW9uIHlldC4gKi8KLSAgICAgICAgICAgIGRhdGEtPnN0YXRlID0gWFNQ TElDRV9TVEFURV9BUFBMSUVEOwotICAgICAgICAgICAgZGF0YS0+cmMgPSAwOworICAgICAgICAg ICAgZGF0YS0+cmMgPSAtRUFHQUlOOworICAgICAgICAgICAgcmMgPSBzY2hlZHVsZV93b3JrKGRh dGEsIGFjdGlvbi0+Y21kLCBhY3Rpb24tPnRpbWVvdXQpOwogICAgICAgICB9CiAgICAgICAgIGJy ZWFrOwogCiAgICAgY2FzZSBYU1BMSUNFX0FDVElPTl9SRVBMQUNFOgogICAgICAgICBpZiAoIGRh dGEtPnN0YXRlID09IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRCApCiAgICAgICAgIHsKLSAgICAgICAg ICAgIC8qIE5vIGltcGxlbWVudGF0aW9uIHlldC4gKi8KLSAgICAgICAgICAgIGRhdGEtPnN0YXRl ID0gWFNQTElDRV9TVEFURV9DSEVDS0VEOwotICAgICAgICAgICAgZGF0YS0+cmMgPSAwOworICAg ICAgICAgICAgZGF0YS0+cmMgPSAtRUFHQUlOOworICAgICAgICAgICAgcmMgPSBzY2hlZHVsZV93 b3JrKGRhdGEsIGFjdGlvbi0+Y21kLCBhY3Rpb24tPnRpbWVvdXQpOwogICAgICAgICB9CiAgICAg ICAgIGJyZWFrOwogCkBAIC01ODYsNiArMTAwNyw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpzdGF0 ZTJzdHIodWludDMyX3Qgc3RhdGUpCiBzdGF0aWMgdm9pZCB4c3BsaWNlX3ByaW50YWxsKHVuc2ln bmVkIGNoYXIga2V5KQogewogICAgIHN0cnVjdCBwYXlsb2FkICpkYXRhOworICAgIHVuc2lnbmVk IGludCBpOwogCiAgICAgcHJpbnRrKCInJXUnIHByZXNzZWQgLSBEdW1waW5nIGFsbCB4c3BsaWNl IHBhdGNoZXNcbiIsIGtleSk7CiAKQEAgLTU5NiwxNSArMTAxOCwzNiBAQCBzdGF0aWMgdm9pZCB4 c3BsaWNlX3ByaW50YWxsKHVuc2lnbmVkIGNoYXIga2V5KQogICAgIH0KIAogICAgIGxpc3RfZm9y X2VhY2hfZW50cnkgKCBkYXRhLCAmcGF5bG9hZF9saXN0LCBsaXN0ICkKKyAgICB7CiAgICAgICAg IHByaW50aygiIG5hbWU9JXMgc3RhdGU9JXMoJWQpICVwICguZGF0YT0lcCwgLnJvZGF0YT0lcCkg dXNpbmcgJXp1IHBhZ2VzLlxuIiwKICAgICAgICAgICAgICAgIGRhdGEtPm5hbWUsIHN0YXRlMnN0 cihkYXRhLT5zdGF0ZSksIGRhdGEtPnN0YXRlLCBkYXRhLT50ZXh0X2FkZHIsCiAgICAgICAgICAg ICAgICBkYXRhLT5yd19hZGRyLCBkYXRhLT5yb19hZGRyLCBkYXRhLT5wYWdlcyk7CiAKKyAgICAg ICAgZm9yICggaSA9IDA7IGkgPCBkYXRhLT5uZnVuY3M7IGkrKyApCisgICAgICAgIHsKKyAgICAg ICAgICAgIHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmNfaW50ZXJuYWwgKmYgPSAmKGRhdGEtPmZ1 bmNzW2ldKTsKKyAgICAgICAgICAgIHByaW50aygiICAgICVzIHBhdGNoICVwKCV1KSB3aXRoICVw ICgldSlcbiIsCisgICAgICAgICAgICAgICAgICAgZi0+bmFtZSwgZi0+b2xkX2FkZHIsIGYtPm9s ZF9zaXplLCBmLT5uZXdfYWRkciwgZi0+bmV3X3NpemUpOworCisgICAgICAgICAgICBpZiAoIGkg JiYgIShpICUgNjQpICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzcGluX3VubG9j aygmcGF5bG9hZF9sb2NrKTsKKyAgICAgICAgICAgICAgICBwcm9jZXNzX3BlbmRpbmdfc29mdGly cXMoKTsKKyAgICAgICAgICAgICAgICBzcGluX2xvY2soJnBheWxvYWRfbG9jayk7CisgICAgICAg ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICBzcGluX3VubG9jaygmcGF5bG9hZF9sb2Nr KTsKIH0KIAogc3RhdGljIGludCBfX2luaXQgeHNwbGljZV9pbml0KHZvaWQpCiB7CisgICAgQlVJ TERfQlVHX09OKCBzaXplb2Yoc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuYykgIT0gNjQgKTsKKyAg ICBCVUlMRF9CVUdfT04oIHNpemVvZihzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jX2ludGVybmFs KSAhPSA2NCApOworICAgIEJVSUxEX0JVR19PTiggb2Zmc2V0b2Yoc3RydWN0IHhzcGxpY2VfcGF0 Y2hfZnVuYywgbmV3X2FkZHIpICE9IDggKTsKKyAgICBCVUlMRF9CVUdfT04oIG9mZnNldG9mKHN0 cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMsIG5ld19zaXplKSAhPSAyNCApOworCiAgICAgcmVnaXN0 ZXJfa2V5aGFuZGxlcigneCcsIHhzcGxpY2VfcHJpbnRhbGwsICJwcmludCB4c3BsaWNpbmcgaW5m byIsIDEpOwogCiAgICAgYXJjaF94c3BsaWNlX2luaXQoKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNs dWRlL2FzbS14ODYvY3VycmVudC5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9jdXJyZW50LmgKaW5k ZXggNDA4MzI2MS4uMDI3YWEwYyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9jdXJy ZW50LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9jdXJyZW50LmgKQEAgLTg2LDEwICs4Niwx OCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBjcHVfaW5mbyAqZ2V0X2NwdV9pbmZvKHZvaWQpCiB1 bnNpZ25lZCBsb25nIGdldF9zdGFja190cmFjZV9ib3R0b20odW5zaWduZWQgbG9uZyBzcCk7CiB1 bnNpZ25lZCBsb25nIGdldF9zdGFja19kdW1wX2JvdHRvbSAodW5zaWduZWQgbG9uZyBzcCk7CiAK KyNpZmRlZiBDT05GSUdfWFNQTElDRQorIyBkZWZpbmUgX19DSEVDS19GT1JfWFNQTElDRV9XT1JL ICJjYWxsIGNoZWNrX2Zvcl94c3BsaWNlX3dvcms7IgorI2Vsc2UKKyMgZGVmaW5lIF9fQ0hFQ0tf Rk9SX1hTUExJQ0VfV09SSyAiIgorI2VuZGlmCisKICNkZWZpbmUgcmVzZXRfc3RhY2tfYW5kX2p1 bXAoX19mbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAoeyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICJtb3YgJTAsJSUiX19PUCJz cDsgam1wICVjMSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg ICJtb3YgJTAsJSUiX19PUCJzcDsiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICAgICAgICAgIF9fQ0hFQ0tfRk9SX1hTUExJQ0VfV09SSyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAiam1wICVjMSIgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIDog OiAiciIgKGd1ZXN0X2NwdV91c2VyX3JlZ3MoKSksICJpIiAoX19mbikgOiAibWVtb3J5IiApOyAg IFwKICAgICAgICAgdW5yZWFjaGFibGUoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKICAgICB9KQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVi bGljL3N5c2N0bC5oIGIveGVuL2luY2x1ZGUvcHVibGljL3N5c2N0bC5oCmluZGV4IDA5MGZkMjEu LjA1MjZkODcgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaAorKysgYi94 ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmgKQEAgLTgzMyw2ICs4MzMsMjQgQEAgREVGSU5FX1hF Tl9HVUVTVF9IQU5ETEUoeGVuX3N5c2N0bF9mZWF0dXJlc2V0X3QpOwogICogICAgIElmIHplcm8g ZXhpdCB3aXRoIHN1Y2Nlc3MuCiAgKi8KIAorI2RlZmluZSBYU1BMSUNFX1BBWUxPQURfVkVSU0lP TiAxCisvKgorICogLnhzcGxpY2UuZnVuY3Mgc3RydWN0dXJlIGxheW91dCBkZWZpbmVkIGluIHRo ZSBgUGF5bG9hZCBmb3JtYXRgCisgKiBzZWN0aW9uIGluIHRoZSB4U3BsaWNlIGRlc2lnbiBkb2N1 bWVudC4KKyAqCisgKiBUaGUgc2l6ZSBzaG91bGQgYmUgZXhhY3RseSA2NCBieXRlcy4KKyAqLwor c3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuYyB7CisgICAgY29uc3QgY2hhciAqbmFtZTsgICAgICAg LyogTmFtZSBvZiBmdW5jdGlvbiB0byBiZSBwYXRjaGVkLiAqLworICAgIHVpbnQ2NF90IG5ld19h ZGRyOworICAgIHVpbnQ2NF90IG9sZF9hZGRyOyAgICAgIC8qIENhbiBiZSB6ZXJvIGFuZCBuYW1l IHdpbGwgYmUgbG9va2VkIHVwLiAqLworICAgIHVpbnQzMl90IG5ld19zaXplOworICAgIHVpbnQz Ml90IG9sZF9zaXplOworICAgIHVpbnQ4X3QgdmVyc2lvbjsgICAgICAgIC8qIE1VU1QgYmUgWFNQ TElDRV9QQVlMT0FEX1ZFUlNJT04uICovCisgICAgdWludDhfdCBwYWRbMzFdOyAgICAgICAgLyog TVVTVCBiZSB6ZXJvIGZpbGxlZC4gKi8KK307Cit0eXBlZGVmIHN0cnVjdCB4c3BsaWNlX3BhdGNo X2Z1bmMgeHNwbGljZV9wYXRjaF9mdW5jX3Q7CisKIC8qCiAgKiBTdHJ1Y3R1cmUgZGVzY3JpYmlu ZyBhbiBFTEYgcGF5bG9hZC4gVW5pcXVlbHkgaWRlbnRpZmllcyB0aGUKICAqIHBheWxvYWQuIFNo b3VsZCBiZSBodW1hbiByZWFkYWJsZS4KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi94c3Bs aWNlLmggYi94ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oCmluZGV4IDgzZTRmMzEuLjg0ODY4ODcg MTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKKysrIGIveGVuL2luY2x1ZGUv eGVuL3hzcGxpY2UuaApAQCAtMTEsMTIgKzExLDU0IEBAIHN0cnVjdCB4c3BsaWNlX2VsZl9zZWM7 CiBzdHJ1Y3QgeHNwbGljZV9lbGZfc3ltOwogc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9vcDsK IAorI2luY2x1ZGUgPHhlbi9lbGZzdHJ1Y3RzLmg+CiAjaWZkZWYgQ09ORklHX1hTUExJQ0UKIAor LyoKKyAqIFRoZSBzdHJ1Y3R1cmUgd2hpY2ggZGVmaW5lcyB0aGUgcGF0Y2hpbmcuIFRoaXMgaXMg d2hhdCB0aGUgaHlwZXJ2aXNvcgorICogZXhwZWN0cyBpbiB0aGUgJy54c3BsaWNlLmZ1bmMnIHNl Y3Rpb24gb2YgdGhlIEVMRiBmaWxlLgorICoKKyAqIFRoaXMgTVVTVCBiZSBpbiBzeW5jIHdpdGgg d2hhdCB0aGUgdG9vbHMgZ2VuZXJhdGUuIFdlIGV4cG9zZQorICogZm9yIHRoZSB0b29scyB0aGUg J3N0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMnIHdoaWNoIGRvZXMgbm90IGhhdmUKKyAqIHBsYXRm b3JtIHNwZWNpZmljIGVudHJpZXMuCisgKi8KKyNpZiBCSVRTX1BFUl9MT05HID09IDY0CitzdHJ1 Y3QgeHNwbGljZV9wYXRjaF9mdW5jX2ludGVybmFsIHsKKyAgICBjb25zdCBjaGFyICpuYW1lOwor ICAgIHZvaWQgKm5ld19hZGRyOworICAgIHZvaWQgKm9sZF9hZGRyOworICAgIHVpbnQzMl90IG5l d19zaXplOworICAgIHVpbnQzMl90IG9sZF9zaXplOworICAgIHVpbnQ4X3QgdmVyc2lvbjsKKyAg ICB1bmlvbiB7CisjaWZuZGVmIENPTkZJR19BUk0KKyAgICAgICAgdWludDhfdCB1bmRvWzhdOwor I2VuZGlmCisgICAgICAgIHVpbnQ4X3QgcGFkWzMxXTsKKyAgICB9IHU7Cit9OworI2Vsc2UKK3N0 cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmNfaW50ZXJuYWwgeworICAgIGNvbnN0IGNoYXIgKm5hbWU7 CisgICAgdWludDMyX3QgX3BhZDA7CisgICAgdm9pZCAqbmV3X2FkZHI7CisgICAgdWludDMyX3Qg X3BhZDE7CisgICAgdm9pZCAqb2xkX2FkZHI7CisgICAgdWludDMyX3QgX3BhZDI7CisgICAgdWlu dDMyX3QgbmV3X3NpemU7CisgICAgdWludDMyX3Qgb2xkX3NpemU7CisgICAgdWludDhfdCB2ZXJz aW9uOworICAgIHVuaW9uIHsKKyAgICAgICAgdWludDhfdCBwYWRbMzFdOworICAgIH0gdTsKK307 CisjZW5kaWYKKwogLyogQ29udmVuaWVuY2UgZGVmaW5lIGZvciBwcmludGsuICovCiAjZGVmaW5l IFhTUExJQ0UgInhzcGxpY2U6ICIKIAogaW50IHhzcGxpY2Vfb3Aoc3RydWN0IHhlbl9zeXNjdGxf eHNwbGljZV9vcCAqKTsKK3ZvaWQgY2hlY2tfZm9yX3hzcGxpY2Vfd29yayh2b2lkKTsKIAogLyog QXJjaCBob29rcy4gKi8KIGludCBhcmNoX3hzcGxpY2VfdmVyaWZ5X2VsZihjb25zdCBzdHJ1Y3Qg eHNwbGljZV9lbGYgKmVsZik7CkBAIC00NCw2ICs4NiwyMSBAQCBpbnQgYXJjaF94c3BsaWNlX3Nl Y3VyZSh2b2lkICp2YSwgdW5zaWduZWQgaW50IHBhZ2VzLCBlbnVtIHZhX3R5cGUgdHlwZXMpOwog dm9pZCBhcmNoX3hzcGxpY2VfZnJlZV9wYXlsb2FkKHZvaWQgKnZhKTsKIAogdm9pZCBhcmNoX3hz cGxpY2VfaW5pdCh2b2lkKTsKKworaW50IGFyY2hfeHNwbGljZV92ZXJpZnlfZnVuYyhjb25zdCBz dHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jX2ludGVybmFsICpmdW5jKTsKKy8qCisgKiBUaGVzZSBm dW5jdGlvbnMgYXJlIGNhbGxlZCBhcm91bmQgdGhlIGNyaXRpY2FsIHJlZ2lvbiBwYXRjaGluZyBs aXZlIGNvZGUsCisgKiBmb3IgYW4gYXJjaGl0ZWN0dXJlIHRvIHRha2UgbWFrZSBhcHByb3ByYXRp ZSBnbG9iYWwgc3RhdGUgYWRqdXN0bWVudHMuCisgKi8KK3ZvaWQgYXJjaF94c3BsaWNlX3BhdGNo aW5nX2VudGVyKHZvaWQpOwordm9pZCBhcmNoX3hzcGxpY2VfcGF0Y2hpbmdfbGVhdmUodm9pZCk7 CisKK3ZvaWQgYXJjaF94c3BsaWNlX2FwcGx5X2ptcChzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5j X2ludGVybmFsICpmdW5jKTsKK3ZvaWQgYXJjaF94c3BsaWNlX3JldmVydF9qbXAoY29uc3Qgc3Ry dWN0IHhzcGxpY2VfcGF0Y2hfZnVuY19pbnRlcm5hbCAqZnVuYyk7Cit2b2lkIGFyY2hfeHNwbGlj ZV9wb3N0X2FjdGlvbih2b2lkKTsKKwordm9pZCBhcmNoX3hzcGxpY2VfbWFzayh2b2lkKTsKK3Zv aWQgYXJjaF94c3BsaWNlX3VubWFzayh2b2lkKTsKICNlbHNlCiAKICNpbmNsdWRlIDx4ZW4vZXJy bm8uaD4gLyogRm9yIC1FTk9TWVMgKi8KQEAgLTUyLDYgKzEwOSw3IEBAIHN0YXRpYyBpbmxpbmUg aW50IHhzcGxpY2Vfb3Aoc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9vcCAqb3ApCiAgICAgcmV0 dXJuIC1FTk9TWVM7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCBjaGVja19mb3JfeHNwbGljZV93 b3JrKHZvaWQpIHsgfTsKICNlbmRpZiAvKiBDT05GSUdfWFNQTElDRSAqLwogCiAjZW5kaWYgLyog X19YRU5fWFNQTElDRV9IX18gKi8KLS0gCjIuNS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK