From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v7 25/24] symbols/xsplice: Implement fast symbol names -> virtual addresses lookup Date: Tue, 12 Apr 2016 16:59:02 -0400 Message-ID: <1460494742-11262-2-git-send-email-konrad.wilk@oracle.com> References: <1460494742-11262-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 1aq5PG-0007FL-PT for xen-devel@lists.xenproject.org; Tue, 12 Apr 2016 20:59:30 +0000 In-Reply-To: <1460494742-11262-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: wei.liu2@citrix.com, xen-devel@lists.xenproject.org, andrew.cooper3@citrix.com, sasha.levin@oracle.com, konrad@kernel.org, ross.lagerwall@citrix.com Cc: Keir Fraser , jbeulich@suse.com, Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org VGhlIGN1cnJlbnQgbWVjaGFuaXNtIGlzIGdlYXJlZCB0b3dhcmRzIGZhc3QgdmlydHVhbCBhZGRy ZXNzIC0+CnN5bWJvbCBuYW1lcyBsb29rdXAuIFRoaXMgaXMgZmluZSBmb3IgdGhlIG5vcm1hbCB1 c2UgY2FzZXMKKEJVR19PTiwgV0FSTl9PTiwgZXRjKSwgYnV0IGZvciB4U3BsaWNlIC0gd2hlcmUg d2UgbmVlZCB0byBmaW5kCmh5cGVydmlzb3Igc3ltYm9scyAtIGl0IGlzIHNsb3cuCgpUbyB1bmRl cnN0YW5kIHRoaXMgcGF0Y2gsIGEgZGVzY3JpcHRpb24gb2YgdGhlIGV4aXN0aW5nCm1ldGhvZCBp cyBleHBsYWluZWQgZmlyc3QuIEZvciBmb2xrcyBmYW1pbGFyIGdvIHRvICdORVcgQ09ERTonLgoK SE9XIElUIFdPUktTOgoKVGhlIHN5bWJvbCB0YWJsZSBsb29rdXAgbWVjaGFuaXNtIHVzZXMgYSBz aW1wbGUgZW5jb2RpbmcgbWVjaGFuaXNtCndoZXJlIGl0IGV4dHJhY3RzIHRoZSBjb21tb24gYXNj aWkgY2hhcmFjdGVycyB0aGF0IHRoZSBzeW1ib2wncyB1c2UuCgpUaGlzIHNhdmVzIHVzIHNwYWNl LiBUaGUgbG9va3VwIG1lY2hhbmlzbSBpcyBnZWFyZWQgdG93YXJkcyBsb29raW5nCnVwIHN5bWJv bHMgYmFzZWQgb24gYWRkcmVzcy4gV2UgaGF2ZSBvbmUgMC4uTiAod2hlcmUgTiBpcwp0aGUgbnVt YmVyIG9mIHN5bWJvbHMsIHNvIDY4NDkgZm9yIGV4YW1wbGUpIHRhYmxlOgoKc3ltYm9sc19hZGRy ZXNzZXNbMC4uTl0KCkFuZCBhbiAxLTEgKGluIGEgbG9vc2UgZmFzaGlvbikgb2YgdGhlIHN5bWJv bHMgKGVuY29kZWQpIGluIGEKc3ltYm9sc19uYW1lcyBzdHJlYW0gb2Ygc2l6ZSBOLgoKVGhlIE4g aXMgdmFyaWFibGUgKGxhdGVyIG9uIHRoYXQgYmVsb3cpCgpUaGUgc3ltYm9sc19uYW1lcyBhcmUg c29ydGVkIGJhc2VkIG9uIHN5bWJvbHNfYWRkcmVzc2VzLCB3aGljaAptZWFucyB0aGF0IHRoZSBk ZWNvZGVkIGVudHJpZXMgaW5zaWRlIHN5bWJvbHNfbmFtZXMgYXJlIG5vdCBpbgphc2NlbmRpbmcg b3IgZGVzY2VuZGluZyBvcmRlci4KClRoZXJlIGlzIGFsc28gdGhlIGVuY29kaW5nIG1lY2hhbmlz bSAtIHRoZSB0YWJsZSBvZiAyNTUgZW50cmllcwpjYWxsZWQgc3ltYm9sc190b2tlbl9pbmRleFtd LiBBbmQgdGhlIHN5bWJvbHNfdG9rZW5fdGFibGUgd2hpY2gKaXMgYW4gc3RyZWFtIG9mIEFTQ0lJ WiBjaGFyYWN0ZXJzLCBzdWNoIGFzIChpdCByZWFsbHkKaXMgbm90IGEgdGFibGUgYXMgdGhlIHZh bHVlcyBhcmUgdmFyaWFibGUpOgoKQDAgICAuYXNjaXogICJjcmVkaXQiCkA2ICAgLmFzY2l6ICAi bWFzayIKLi4KQDMwMCAuYXNjaXogICJTIgoKQW5kIHRoZSBzeW1ib2xzX3Rva2VuX2luZGV4OgpA MCAgICAgICAgLnNob3J0ICAwCkAxICAgICAgICAuc2hvcnQgIDcKQDIgICAgICAgIC5zaG9ydCAg MTIKQDQgICAgICAgIC5zaG9ydCAgMTYKLi4uCkA4NCAgICAgICAgIC5zaG9ydCAgMzAwCgpUaGUg cmVsYXRpb25zaGlwIGJldHdlZW4gdGhlbSBpcyB0aGF0IHRoZSBzeW1ib2xzX3Rva2VuX2luZGV4 CmdpdmVzIHVzIHRoZSBvZmZzZXQgdG8gc3ltYm9sc190b2tlbl90YWJsZS4KClRoZSBzeW1ib2xf bmFtZXNbXSBhcnJheSBpcyBhIHN0cmVhbSBvZiBlbmNvZGVkIHZhbHVlcy4gRWFjaCB2YWx1ZQpm b2xsb3dzIHRoZSBzYW1lIHBhdHRlcm4gLSA8bGVuPiBmb2xsb3dlZCBieSA8ZW5jb2RpbmcgdmFs dWVzPi4KQW5kIHRoZSBhbm90aGVyIDxsZW4+IGZvbGxvd2VkIGJ5IDxlbmNvZGluZyB2YWx1ZXM+ LgoKSGVuY2UgdG8gZmluZCB0aGUgcmlnaHQgb25lIHlvdSBuZWVkIHRvIHJlYWQgPGxlbj4sIGFk ZCA8bGVuPgoodG8gc2tpcCBvdmVyKSwgcmVhZCA8bGVuPiwgYWRkIDxsZW4+LCBhbmQgc28gb24g dW50aWwgb25lCmZpbmRzIHRoZSByaWdodCB0dXBsZSBvZmZzZXQuCgpUaGUgPGVuY29kaW5nIHZh bHVlcz4gYXJlIHRoZSBpbmRpY2llcyBpbnRvIHRoZSBzeW1ib2xzX3Rva2VuX2luZGV4LgoKTWVh bmluZyBpZiB5b3UgaGF2ZToKICAweDA0LCAweDU0LCAweGRhLCAweGUyLCAweDc0CiAgWzQsIDg0 LCAyMTgsIDIyNiwgMTE2IGluIGh1bWFuIG51bWJlcmluZ10KClRoZSAweDA0IHRlbGxzIHVzIHRo YXQgdGhlIHN5bWJvbCBpcyBmb3VyIGJ5dGVzIHBhc3QgdGhpcyBvbmUgKHNvIG5leHQKc3ltYm9s IG9mZnNldCBzdGFydHMgYXQgNSkuIElmIHdlIGxvb2t1cCBzeW1ib2xzX3Rva2VuX2luZGV4Wzg0 XSB3ZSBnZXQgMzAwLgpzeW1ib2xzX3Rva2VuWzMwMF0gZ2V0cyB1cyB0aGUgIlMiLiBBbmQgc28g b24sIHRoZSBzdHJpbmcgZXZlbnR1YWxseQplbmQgdXAgYmVpbmcgZGVjb2RlIHRvIGJlICdTX3N0 ZXh0Jy4gVGhlIGZpcnN0IGNoYXJhY3RlciBpcyB0aGUgdHlwZSwKdGhlbiBvcHRpb25hbGx5IGZv bGx3ZWQgYnkgdGhlIGZpbGVuYW1lIChhbmQgIyByaWdodCBhZnRlciBmaWxlbmFtZSkKYW5kIHRo ZW4gbGFzdGx5IHRoZSBzeW1ib2wsIHN1Y2ggYXM6Cgp0dnBtdV9pbnRlbC5jI2NvcmUyX3ZwbXVf ZG9faW50ZXJydXB0CgpLZWVwIGluIG1pbmQgdGhhdCB0aGVyZSBhcmUgdHdvIGZpeGVkIHNpemVk IHRhYmxlczoKc3ltYm9sc19hZGRyZXNzZXNbMC4uc3ltYm9sc19udW1fc3ltc10sIGFuZApzeW1i b2xzX21hcmtlcnNbMC4uc3ltYm9sc19udW1fc3ltcy8yNTVdLgoKVGhlIHN5bWJvbHNfbWFya2Vy cyBpcyB1c2VkIHRvIHNwZWVkIHNlYXJjaGluZyBmb3IgdGhlIHJpZ2h0IGFkZHJlc3MuCkl0IGdp dmVzIHVzIHRoZSBvZmZzZXRzIHdpdGhpbiBzeW1ib2xfbmFtZXMgdGhhdCBzdGFydCBhdCB0aGUg PGxlbj48ZW5jb2RlZCB2YWx1ZT4uCgpUaGUgd2F5IHRvIGZpbmQgYSBzeW1ib2wgYmFzZWQgb24g dGhlIGFkZHJlc3MgaXM6CjEpIEZpZ3VyZSBvdXQgdGhlICd0dXBsZSBvZmZzZXQnIGZyb20gc3lt Ym9sc19hZGRyZXNzWzAuLnN5bWJvbHNfbnVtX3N5bXNdLgogICBUaGlzIHRhYmxlIGlzIHNvcnRl ZCBieSB2aXJ0dWFsIGFkZHJlc3NlcyBzbyBmaW5kaW5nIHRoZSB2YWx1ZSBpcyBzaW1wbGUuCjIp IEdldCBzdGFydGluZyBvZmZzZXQgb2Ygc3ltYm9sX25hbWVzIGJ5IHJldHJpZXZpbmcgdmFsdWUg b2YKICAgc3ltYm9sX21hcmtlcnNbJ3R1cGxlIG9mZnNldCcgLyAyNTVdLgozKS4gSXRlcmF0ZSB1 cCB0byAndHVwbGVfb2Zmc2V0ICYgMjU1JyBpbiBzeW1ib2xzX21hcmtlcnMgc3RyZWFtIHN0YXJ0 aW5nCiAgIGF0ICdvZmZzZXQnLgo0KS4gRGVjb2RlIHRoZSA8bGVuPjxlbmNvZGVkIHZhbHVlPgoK VGhpcyBob3dldmVyIGRvZXMgbm90IHdvcmsgdmVyeSB3ZWxsIGlmIHdlIHdhbnQgdG8gc2VhcmNo IHRoZSBvdGhlcgp3YXkgLSB3ZSBoYXZlIHRoZSBzeW1ib2wgbmFtZSBhbmQgd2FudCB0byBmaW5k IHRoZSBhZGRyZXNzLgoKTkVXIENPREU6CgpUbyBtYWtlIHRoYXQgd29yayB3ZSBhZGQgdGhyZWUg dGFibGVzOgoxKSBzeW1ib2xzX2FkZHJlc3Nlc19pbmRleF9zb3J0ZWRbMC4uc3ltYm9sc19udW1f c3ltc10uIFRoZSB2YWx1ZXMgYXJlCiBpbmRpY2llcyBpbnRvIHN5bWJvbHNfYWRkcmVzc2VzIGFy cmF5LiBUaGlzIGlzIGEgMS0xIHRhYmxlOgoKIHN5bWJvbHNfYWRkcmVzc2VzX2luZGV4X3NvcnRl ZDoKICAgICAubG9uZyAgIDYzMTUKICAgICAubG9uZyAgIDYwOTcKCiBUbyBnZXQgdGhlIGFkZHJl c3Mgb2YgYSBzeW1ib2wgYXQgb2Zmc2V0IDAgaW4gc3ltYm9sc19uYW1lX3NvcnRlZAogKHNlZSBi ZWxvdykgd2UgbG9vayBpbiBzeW1ib2xzX2FkZHJlc3Nlc19pbmRleF9zb3J0ZWRbMF0gdG8gZ2V0 CiA2MzE1IGFuZCB0aGVuIGxvb2sgaW4gc3ltYm9sc19hZGRyZXNzZXNfaW5kZXhbNjMxNV0gdG8g ZmluZCBpdC4KCjIpIFRoZSBzeW1ib2xzX25hbWVzX3NvcnRlZCBzdHJlYW0gLSBzYW1lIGZvcm1h dCBhcyBzeW1ib2xzX25hbWVzIGJ1dAogY29uc3RydWN0dWVkIGJ5IHNvcnRpbmcgdGhlIDx0eXBl PltmaWxlbmFtZSNdPHN5bWJvbD4gYnkgPHN5bWJvbD4sCiB0aGVuIFtmaWxlbmFtZSNdIGFuZCBs YXN0bHkgdHlwZS4gUmVjYWxsIHRoYXQgc3ltYm9sX25hbWVzIGlzIHNvcnRlZAogYmFzZWQgb24g YWRkcmVzc2VzIG9mIHRoZSBzeW1ib2xzLgoKMykgVG8gbWFrZSBpdCBzaW1wbGVyIHRvIHNlYXJj aCB3ZSBhbHNvIGFkZCBhbiBzeW1ib2xzX21hcmtlcnNfc29ydGVkCiBhcnJheSAob2Ygc2l6ZSBz eW1ib2xzX251bV9zeW1zLzI1NSkuCgpTZWFyY2hpbmcgZm9yIHN5bWJvbHMgaXMgc2ltcGxpZmll ZCBhcyB3ZSBjYW4gZG8gYSBiaW5hcnkgc2VhcmNoCm9uIHN5bWJvbF9uYW1lc19zb3J0ZWQgKGFu ZCB1c2luZyBzeW1ib2xzX21hcmtlcnNfc29ydGVkKS4gU2luY2UgdGhlCnN5bWJvbHMgYXJlIHNv cnRlZCBpdCB0YWtlcyBvbiBhdmVyYWdlIDEzIGNhbGxzIHRvIHN5bWJvbHNfZXhwYW5kX3N5bWJv bC4KCkRvaW5nIHNtYWxsIHRlc3RzIChzZWFyY2ggZm9yIGZpdmUgZGlmZmVyZW50IHN5bWJvbHMp IHVzaW5nIHRoZSBvbGQKYW5kIG5ldyBtZWNoYW5pc20gc2hvdyAybXMgdnMgMG1zIGltcHJvdmVt ZW50LgoKU2lnbmVkLW9mZi1ieTogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0Bv cmFjbGUuY29tPgotLS0KQ0M6IEtlaXIgRnJhc2VyIDxrZWlyQHhlbi5vcmc+CkNDOiBKYW4gQmV1 bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNDOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVy M0BjaXRyaXguY29tPgoKdjc6IE5ldwotLS0KLS0tCiB4ZW4vYXJjaC94ODYvTWFrZWZpbGUgICAg ICB8ICAzICsrCiB4ZW4vY29tbW9uL0tjb25maWcgICAgICAgICB8IDEyICsrKysrKwogeGVuL2Nv bW1vbi9zeW1ib2xzLWR1bW15LmMgfCAgNiArKysKIHhlbi9jb21tb24vc3ltYm9scy5jICAgICAg IHwgNzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCiB4ZW4vdG9vbHMvc3lt Ym9scy5jICAgICAgICB8IDk1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0KIDUgZmlsZXMgY2hhbmdlZCwgMTc5IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9NYWtlZmlsZSBiL3hlbi9hcmNoL3g4Ni9N YWtlZmlsZQppbmRleCBkNDZjZjQ5Li40ODVmNjgxIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYv TWFrZWZpbGUKKysrIGIveGVuL2FyY2gveDg2L01ha2VmaWxlCkBAIC04NCw2ICs4NCw5IEBAIGVu ZGlmCiAKIGlmZGVmIENPTkZJR19YU1BMSUNFCiBhbGxfc3ltYm9scyA9IC0tYWxsLXN5bWJvbHMK K2lmZGVmIENPTkZJR19GQVNUX1NZTUJPTF9MT09LVVAKK2FsbF9zeW1ib2xzID0gLS1hbGwtc3lt Ym9scyAtLWFkZC1leHRyYS1zb3J0ZWQKK2VuZGlmCiBlbHNlCiBhbGxfc3ltYm9scyA9CiBlbmRp ZgpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9LY29uZmlnIGIveGVuL2NvbW1vbi9LY29uZmlnCmlu ZGV4IDE0NDQ0YmMuLmU5NzM1YTYgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vS2NvbmZpZworKysg Yi94ZW4vY29tbW9uL0tjb25maWcKQEAgLTIwNCw0ICsyMDQsMTYgQEAgY29uZmlnIFhTUExJQ0UK IAogCSAgSWYgdW5zdXJlLCBzYXkgWS4KIAorY29uZmlnIEZBU1RfU1lNQk9MX0xPT0tVUAorCWJv b2wgIkZhc3Qgc3ltYm9sIGxvb2t1cCAoYmlnZ2VyIGJpbmFyeSkiCisJZGVmYXVsdCB5CisJZGVw ZW5kcyBvbiBYU1BMSUNFCisJLS0taGVscC0tLQorCSAgV2hlbiBzZWFyY2hpbmcgZm9yIHN5bWJv bCBhZGRyZXNzZXMgd2UgY2FuIHVzZSB0aGUgYnVpbHQtaW4gc3lzdGVtCisJICB0aGF0IGlzIG9w dGltaXplZCBmb3Igc2VhcmNoaW5nIHN5bWJvbHMgdXNpbmcgYWRkcmVzc2VzIGFzIHRoZSBrZXku CisJICBIb3dldmVyIHVzaW5nIGl0IGZvciB0aGUgaW52ZXJzZSAoZmluZCBhZGRyZXNzIHVzaW5n IHRoZSBzeW1ib2wgbmFtZSkKKwkgIGl0IGlzIHNsb3cuIFRoaXMgZXh0cmEgZGF0YSAofjEyOGtC KSBzcGVlZHMgdXAgdGhlIHNlYXJjaC4KKwkgIFRoZSBvbmx5IHVzZXIgb2YgdGhpcyBpcyB4U3Bs aWNlLgorCisJICBJZiB1bnN1cmUsIHNheSBZLgogZW5kbWVudQpkaWZmIC0tZ2l0IGEveGVuL2Nv bW1vbi9zeW1ib2xzLWR1bW15LmMgYi94ZW4vY29tbW9uL3N5bWJvbHMtZHVtbXkuYwppbmRleCA1 MDkwYzNiLi4xOGQ1NzJjIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3N5bWJvbHMtZHVtbXkuYwor KysgYi94ZW4vY29tbW9uL3N5bWJvbHMtZHVtbXkuYwpAQCAtMTQsNiArMTQsMTIgQEAgY29uc3Qg dW5zaWduZWQgbG9uZyBzeW1ib2xzX2FkZHJlc3Nlc1sxXTsKIGNvbnN0IHVuc2lnbmVkIGludCBz eW1ib2xzX251bV9zeW1zOwogY29uc3QgdTggc3ltYm9sc19uYW1lc1sxXTsKIAorI2lmZGVmIENP TkZJR19GQVNUX1NZTUJPTF9MT09LVVAKK2NvbnN0IHU4IHN5bWJvbHNfbmFtZXNfc29ydGVkWzFd OworY29uc3QgdW5zaWduZWQgaW50IHN5bWJvbHNfYWRkcmVzc2VzX2luZGV4X3NvcnRlZFsxXTsK K2NvbnN0IHVuc2lnbmVkIGludCBzeW1ib2xzX21hcmtlcnNfc29ydGVkWzFdOworI2VuZGlmCisK IGNvbnN0IHU4IHN5bWJvbHNfdG9rZW5fdGFibGVbMV07CiBjb25zdCB1MTYgc3ltYm9sc190b2tl bl9pbmRleFsxXTsKIApkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zeW1ib2xzLmMgYi94ZW4vY29t bW9uL3N5bWJvbHMuYwppbmRleCA3ODE3NjVkLi5jZmVhOTNlIDEwMDY0NAotLS0gYS94ZW4vY29t bW9uL3N5bWJvbHMuYworKysgYi94ZW4vY29tbW9uL3N5bWJvbHMuYwpAQCAtMzEsNiArMzEsMTIg QEAgZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGxvbmcgc3ltYm9sc19hZGRyZXNzZXNbXTsKIGV4dGVy biBjb25zdCB1bnNpZ25lZCBpbnQgc3ltYm9sc19udW1fc3ltczsKIGV4dGVybiBjb25zdCB1OCBz eW1ib2xzX25hbWVzW107CiAKKyNpZmRlZiBDT05GSUdfRkFTVF9TWU1CT0xfTE9PS1VQCitleHRl cm4gY29uc3QgdTggc3ltYm9sc19uYW1lc19zb3J0ZWRbXTsKK2V4dGVybiBjb25zdCB1bnNpZ25l ZCBpbnQgc3ltYm9sc19hZGRyZXNzZXNfaW5kZXhfc29ydGVkW107CitleHRlcm4gY29uc3QgdW5z aWduZWQgaW50IHN5bWJvbHNfbWFya2Vyc19zb3J0ZWRbXTsKKyNlbmRpZgorCiBleHRlcm4gY29u c3QgdTggc3ltYm9sc190b2tlbl90YWJsZVtdOwogZXh0ZXJuIGNvbnN0IHUxNiBzeW1ib2xzX3Rv a2VuX2luZGV4W107CiAKQEAgLTM4LDEzICs0NCwxMyBAQCBleHRlcm4gY29uc3QgdW5zaWduZWQg aW50IHN5bWJvbHNfbWFya2Vyc1tdOwogCiAvKiBleHBhbmQgYSBjb21wcmVzc2VkIHN5bWJvbCBk YXRhIGludG8gdGhlIHJlc3VsdGluZyB1bmNvbXByZXNzZWQgc3RyaW5nLAogICAgZ2l2ZW4gdGhl IG9mZnNldCB0byB3aGVyZSB0aGUgc3ltYm9sIGlzIGluIHRoZSBjb21wcmVzc2VkIHN0cmVhbSAq Lwotc3RhdGljIHVuc2lnbmVkIGludCBzeW1ib2xzX2V4cGFuZF9zeW1ib2wodW5zaWduZWQgaW50 IG9mZiwgY2hhciAqcmVzdWx0KQorc3RhdGljIHVuc2lnbmVkIGludCBzeW1ib2xzX2V4cGFuZF9z eW1ib2woY29uc3QgdTggKmFycmF5LCB1bnNpZ25lZCBpbnQgb2ZmLCBjaGFyICpyZXN1bHQpCiB7 CiAgICAgaW50IGxlbiwgc2tpcHBlZF9maXJzdCA9IDA7CiAgICAgY29uc3QgdTggKnRwdHIsICpk YXRhOwogCiAgICAgLyogZ2V0IHRoZSBjb21wcmVzc2VkIHN5bWJvbCBsZW5ndGggZnJvbSB0aGUg Zmlyc3Qgc3ltYm9sIGJ5dGUgKi8KLSAgICBkYXRhID0gJnN5bWJvbHNfbmFtZXNbb2ZmXTsKKyAg ICBkYXRhID0gYXJyYXkgKyBvZmY7CiAgICAgbGVuID0gKmRhdGE7CiAgICAgZGF0YSsrOwogCkBA IC03NywxNCArODMsMTkgQEAgc3RhdGljIHVuc2lnbmVkIGludCBzeW1ib2xzX2V4cGFuZF9zeW1i b2wodW5zaWduZWQgaW50IG9mZiwgY2hhciAqcmVzdWx0KQogCiAvKiBmaW5kIHRoZSBvZmZzZXQg b24gdGhlIGNvbXByZXNzZWQgc3RyZWFtIGdpdmVuIGFuZCBpbmRleCBpbiB0aGUKICAqIHN5bWJv bHMgYXJyYXkgKi8KLXN0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X3N5bWJvbF9vZmZzZXQodW5zaWdu ZWQgbG9uZyBwb3MpCitzdGF0aWMgdW5zaWduZWQgaW50IGdldF9zeW1ib2xfb2Zmc2V0KHVuc2ln bmVkIGxvbmcgcG9zLCBib29sX3Qgc29ydGVkKQogewogICAgIGNvbnN0IHU4ICpuYW1lOwogICAg IGludCBpOwogCiAgICAgLyogdXNlIHRoZSBjbG9zZXN0IG1hcmtlciB3ZSBoYXZlLiBXZSBoYXZl IG1hcmtlcnMgZXZlcnkgMjU2IHBvc2l0aW9ucywKICAgICAgKiBzbyB0aGF0IHNob3VsZCBiZSBj bG9zZSBlbm91Z2ggKi8KLSAgICBuYW1lID0gJnN5bWJvbHNfbmFtZXNbIHN5bWJvbHNfbWFya2Vy c1twb3M+PjhdIF07CisjaWZkZWYgQ09ORklHX0ZBU1RfU1lNQk9MX0xPT0tVUAorICAgIGlmIChz b3J0ZWQpCisgICAgICAgIG5hbWUgPSAmc3ltYm9sc19uYW1lc19zb3J0ZWRbIHN5bWJvbHNfbWFy a2Vyc19zb3J0ZWRbcG9zPj44XSBdOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICBuYW1lID0g JnN5bWJvbHNfbmFtZXNbIHN5bWJvbHNfbWFya2Vyc1twb3M+PjhdIF07CiAKICAgICAvKiBzZXF1 ZW50aWFsbHkgc2NhbiBhbGwgdGhlIHN5bWJvbHMgdXAgdG8gdGhlIHBvaW50IHdlJ3JlIHNlYXJj aGluZyBmb3IuCiAgICAgICogRXZlcnkgc3ltYm9sIGlzIHN0b3JlZCBpbiBhIFs8bGVuPl1bPGxl bj4gYnl0ZXMgb2YgZGF0YV0gZm9ybWF0LCBzbyB3ZQpAQCAtOTMsNiArMTA0LDExIEBAIHN0YXRp YyB1bnNpZ25lZCBpbnQgZ2V0X3N5bWJvbF9vZmZzZXQodW5zaWduZWQgbG9uZyBwb3MpCiAgICAg Zm9yKGkgPSAwOyBpIDwgKHBvcyYweEZGKTsgaSsrKQogICAgICAgICBuYW1lID0gbmFtZSArICgq bmFtZSkgKyAxOwogCisjaWZkZWYgQ09ORklHX0ZBU1RfU1lNQk9MX0xPT0tVUAorICAgIGlmIChz b3J0ZWQpCisgICAgICAgIHJldHVybiBuYW1lIC0gc3ltYm9sc19uYW1lc19zb3J0ZWQ7CisjZW5k aWYKKwogICAgIHJldHVybiBuYW1lIC0gc3ltYm9sc19uYW1lczsKIH0KIApAQCAtMTM2LDcgKzE1 Miw3IEBAIGNvbnN0IGNoYXIgKnN5bWJvbHNfbG9va3VwKHVuc2lnbmVkIGxvbmcgYWRkciwKICAg ICAgICAgLS1sb3c7CiAKICAgICAgICAgLyogR3JhYiBuYW1lICovCi0gICAgc3ltYm9sc19leHBh bmRfc3ltYm9sKGdldF9zeW1ib2xfb2Zmc2V0KGxvdyksIG5hbWVidWYpOworICAgIHN5bWJvbHNf ZXhwYW5kX3N5bWJvbChzeW1ib2xzX25hbWVzLCBnZXRfc3ltYm9sX29mZnNldChsb3csIDApLCBu YW1lYnVmKTsKIAogICAgIC8qIFNlYXJjaCBmb3IgbmV4dCBub24tYWxpYXNlZCBzeW1ib2wgKi8K ICAgICBmb3IgKGkgPSBsb3cgKyAxOyBpIDwgc3ltYm9sc19udW1fc3ltczsgaSsrKSB7CkBAIC0x OTUsMTAgKzIxMSwxMCBAQCBpbnQgeGVuc3ltc19yZWFkKHVpbnQzMl90ICpzeW1udW0sIGNoYXIg KnR5cGUsCiAgICAgICAgIG5leHRfb2Zmc2V0ID0gbmV4dF9zeW1ib2wgPSAwOwogICAgIGlmICgg bmV4dF9zeW1ib2wgIT0gKnN5bW51bSApCiAgICAgICAgIC8qIE5vbi1zZXF1ZW50aWFsIGFjY2Vz cyAqLwotICAgICAgICBuZXh0X29mZnNldCA9IGdldF9zeW1ib2xfb2Zmc2V0KCpzeW1udW0pOwor ICAgICAgICBuZXh0X29mZnNldCA9IGdldF9zeW1ib2xfb2Zmc2V0KCpzeW1udW0sIDApOwogCiAg ICAgKnR5cGUgPSBzeW1ib2xzX2dldF9zeW1ib2xfdHlwZShuZXh0X29mZnNldCk7Ci0gICAgbmV4 dF9vZmZzZXQgPSBzeW1ib2xzX2V4cGFuZF9zeW1ib2wobmV4dF9vZmZzZXQsIG5hbWUpOworICAg IG5leHRfb2Zmc2V0ID0gc3ltYm9sc19leHBhbmRfc3ltYm9sKHN5bWJvbHNfbmFtZXMsIG5leHRf b2Zmc2V0LCBuYW1lKTsKICAgICAqYWRkcmVzcyA9IHN5bWJvbHNfYWRkcmVzcygqc3ltbnVtKTsK IAogICAgIG5leHRfc3ltYm9sID0gKysqc3ltbnVtOwpAQCAtMjA4LDggKzIyNCw1MiBAQCBpbnQg eGVuc3ltc19yZWFkKHVpbnQzMl90ICpzeW1udW0sIGNoYXIgKnR5cGUsCiAgICAgcmV0dXJuIDA7 CiB9CiAKKyNpZmRlZiBDT05GSUdfRkFTVF9TWU1CT0xfTE9PS1VQCiB1bnNpZ25lZCBsb25nIHN5 bWJvbHNfbG9va3VwX2J5X25hbWUoY29uc3QgY2hhciAqc3ltbmFtZSkKIHsKKyAgICBjaGFyIG5h bWVidWZbS1NZTV9OQU1FX0xFTiArIDFdID0geyAwIH07CisgICAgdW5zaWduZWQgbG9uZyBsb3cs IGhpZ2g7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmZpbGVuYW1lX3Rva2VuID0gIiMiOworCisg ICAgaWYgKCBzeW1uYW1lID09ICdcMCcgKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIFVu c3VwcG9ydGVkIHNlYXJjaCBmb3IgZmlsZW5hbWUgaW4gc3ltYm9sIHJpZ2h0IG5vdy4gKi8KKyAg ICBpZiAoIHN0cnBicmsoc3ltbmFtZSwgZmlsZW5hbWVfdG9rZW4pICkKKyAgICAgICAgcmV0dXJu IDA7CisKKyAgICBsb3cgPSAwOworICAgIGhpZ2ggPSBzeW1ib2xzX251bV9zeW1zOworICAgIHdo aWxlICggbG93IDwgaGlnaCApCisgICAgeworICAgICAgICB1bnNpZ25lZCBsb25nIG1pZCA9IGxv dyArICgoaGlnaCAtIGxvdykgLyAyKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQ7Cisg ICAgICAgIGNvbnN0IGNoYXIgKnA7CisgICAgICAgIGludCByYzsKKworICAgICAgICBvZmZzZXQg PSBnZXRfc3ltYm9sX29mZnNldChtaWQsIDEpOworICAgICAgICAodm9pZClzeW1ib2xzX2V4cGFu ZF9zeW1ib2woc3ltYm9sc19uYW1lc19zb3J0ZWQsIG9mZnNldCwgbmFtZWJ1Zik7CisgICAgICAg IC8qIEZvcm1hdCBpczogW2ZpbGVuYW1lXSM8c3ltYm9sPi4gc3ltYm9sc19leHBhbmRfc3ltYm9s IGVhdHMgdHlwZS4qLworICAgICAgICBwID0gc3RycGJyaygoY29uc3QgY2hhciAqKW5hbWVidWYs IGZpbGVuYW1lX3Rva2VuKTsKKyAgICAgICAgaWYgKCAhcCApCisgICAgICAgICAgICBwID0gbmFt ZWJ1ZjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcCsrOyAvKiBTa2lwICMgKi8KKyAgICAg ICAgcmMgPSBzdHJjbXAoc3ltbmFtZSwgcCk7CisgICAgICAgIGlmICggcmMgPCAwICkKKyAgICAg ICAgICAgIGhpZ2ggPSBtaWQ7CisgICAgICAgIGVsc2UgaWYgKCByYyA+IDAgKQorICAgICAgICAg ICAgbG93ID0gbWlkICsgMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHN5bWJv bHNfYWRkcmVzcyhzeW1ib2xzX2FkZHJlc3Nlc19pbmRleF9zb3J0ZWRbbG93XSk7CisgICAgfQor ICAgIHJldHVybiAwOworfQorCisjZWxzZQorCit1bnNpZ25lZCBsb25nIG9sZF9zeW1ib2xzX2xv b2t1cF9ieV9uYW1lKGNvbnN0IGNoYXIgKnN5bW5hbWUpCisgewogICAgIGNoYXIgbmFtZVtLU1lN X05BTUVfTEVOICsgMV0gPSB7IDAgfTsKICAgICB1aW50MzJfdCBzeW1udW0gPSAwOwogICAgIGNo YXIgdHlwZTsKQEAgLTIzMiw2ICsyOTIsNyBAQCB1bnNpZ25lZCBsb25nIHN5bWJvbHNfbG9va3Vw X2J5X25hbWUoY29uc3QgY2hhciAqc3ltbmFtZSkKICAgICByZXR1cm4gMDsKIH0KIAorI2VuZGlm CiAvKgogICogTG9jYWwgdmFyaWFibGVzOgogICogbW9kZTogQwpkaWZmIC0tZ2l0IGEveGVuL3Rv b2xzL3N5bWJvbHMuYyBiL3hlbi90b29scy9zeW1ib2xzLmMKaW5kZXggMTk2ZGI3NC4uNTZiNDhk ZCAxMDA2NDQKLS0tIGEveGVuL3Rvb2xzL3N5bWJvbHMuYworKysgYi94ZW4vdG9vbHMvc3ltYm9s cy5jCkBAIC00MCw2ICs0MCwxMCBAQCBzdHJ1Y3Qgc3ltX2VudHJ5IHsKIAl1bnNpZ25lZCBsb25n IGxvbmcgYWRkcjsKIAl1bnNpZ25lZCBpbnQgbGVuOwogCXVuc2lnbmVkIGNoYXIgKnN5bTsKKwl1 bnNpZ25lZCBjaGFyICpzeW1ib2w7CisJdW5zaWduZWQgY2hhciAqZmlsZW5hbWU7CisJdW5zaWdu ZWQgaW50IGlkeDsKKwl1bnNpZ25lZCBjaGFyIHR5cGU7CiB9OwogI2RlZmluZSBTWU1CT0xfTkFN RShzKSAoKGNoYXIgKikocyktPnN5bSArIDEpCiAKQEAgLTQ3LDggKzUxLDEwIEBAIHN0YXRpYyBz dHJ1Y3Qgc3ltX2VudHJ5ICp0YWJsZTsKIHN0YXRpYyB1bnNpZ25lZCBpbnQgdGFibGVfc2l6ZSwg dGFibGVfY250Owogc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBfc3RleHQsIF9ldGV4dCwgX3Np bml0dGV4dCwgX2Vpbml0dGV4dCwgX3NleHRyYXRleHQsIF9lZXh0cmF0ZXh0Owogc3RhdGljIGlu dCBhbGxfc3ltYm9scyA9IDA7CitzdGF0aWMgaW50IGV4dHJhX3NvcnRlZCA9IDA7CiBzdGF0aWMg Y2hhciBzeW1ib2xfcHJlZml4X2NoYXIgPSAnXDAnOwogc3RhdGljIGVudW0geyBmbXRfYnNkLCBm bXRfc3lzdiB9IGlucHV0X2Zvcm1hdDsKK3N0YXRpYyBpbnQgY29tcGFyZV9uYW1lKGNvbnN0IHZv aWQgKnAxLCBjb25zdCB2b2lkICpwMik7CiAKIGludCB0b2tlbl9wcm9maXRbMHgxMDAwMF07CiAK QEAgLTc5LDYgKzg1LDcgQEAgc3RhdGljIGludCByZWFkX3N5bWJvbChGSUxFICppbiwgc3RydWN0 IHN5bV9lbnRyeSAqcykKIAljaGFyICpzeW0sIHN0eXBlOwogCXN0YXRpYyBlbnVtIHsgc3ltYm9s LCBzaW5nbGVfc291cmNlLCBtdWx0aV9zb3VyY2UgfSBsYXN0OwogCXN0YXRpYyBjaGFyICpmaWxl bmFtZTsKKwl1bnNpZ25lZCBpbnQgbGVuOwogCWludCByYyA9IC0xOwogCiAJc3dpdGNoIChpbnB1 dF9mb3JtYXQpIHsKQEAgLTE2NSwxOCArMTcyLDI5IEBAIHN0YXRpYyBpbnQgcmVhZF9zeW1ib2wo RklMRSAqaW4sIHN0cnVjdCBzeW1fZW50cnkgKnMpCiAKIAkvKiBpbmNsdWRlIHRoZSB0eXBlIGZp ZWxkIGluIHRoZSBzeW1ib2wgbmFtZSwgc28gdGhhdCBpdCBnZXRzCiAJICogY29tcHJlc3NlZCB0 b2dldGhlciAqLwotCXMtPmxlbiA9IHN0cmxlbihzdHIpICsgMTsKKwlzLT5sZW4gPSBsZW4gPSBz dHJsZW4oc3RyKSArIDE7CiAJaWYgKGlzbG93ZXIoc3R5cGUpICYmIGZpbGVuYW1lKQogCQlzLT5s ZW4gKz0gc3RybGVuKGZpbGVuYW1lKSArIDE7CiAJcy0+c3ltID0gbWFsbG9jKHMtPmxlbiArIDEp OworCWlmIChleHRyYV9zb3J0ZWQpCisJCXMtPnN5bWJvbCA9IG1hbGxvYyhsZW4gKyAxKTsKIAlz eW0gPSBTWU1CT0xfTkFNRShzKTsKIAlpZiAoaXNsb3dlcihzdHlwZSkgJiYgZmlsZW5hbWUpIHsK IAkJc3ltID0gc3RwY3B5KHN5bSwgZmlsZW5hbWUpOwogCQkqc3ltKysgPSAnIyc7Ci0JfQorCQlp ZiAoZXh0cmFfc29ydGVkKSB7CisJCQlzLT5maWxlbmFtZSA9IG1hbGxvYyhzdHJsZW4oZmlsZW5h bWUpICsgMSk7CisJCQlzdHJjcHkoKGNoYXIgKilzLT5maWxlbmFtZSwgZmlsZW5hbWUpOworCQl9 CisJfSBlbHNlCisJCXMtPmZpbGVuYW1lID0gTlVMTDsKKwogCXN0cmNweShzeW0sIHN0cik7CisJ aWYgKGV4dHJhX3NvcnRlZCkgeworCQlzdHJjcHkoKGNoYXIgKilzLT5zeW1ib2wsIHN0cik7CisJ CXMtPnR5cGUgPSBzdHlwZTsgLyogQXMgcy0+c3ltWzBdIGVuZHMgbWFuZ2xlZC4gKi8KKwl9CiAJ cy0+c3ltWzBdID0gc3R5cGU7Ci0KIAlyYyA9IDA7CiAKICBza2lwX3RhaWw6CkBAIC0yNzYsNiAr Mjk0LDM2IEBAIHN0YXRpYyBpbnQgZXhwYW5kX3N5bWJvbCh1bnNpZ25lZCBjaGFyICpkYXRhLCBp bnQgbGVuLCBjaGFyICpyZXN1bHQpCiAJcmV0dXJuIHRvdGFsOwogfQogCisvKiBTb3J0IGJ5IHN5 bWJvbCBuYW1lcywgdGhlbiBmaWxlbmFtZSwgYW5kIGxhc3RseSB0eXBlLiAqLworc3RhdGljIGlu dCBjb21wYXJlX25hbWVfb3JpZyhjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpCit7CisJ Y29uc3Qgc3RydWN0IHN5bV9lbnRyeSAqc3ltMSA9IHAxOworCWNvbnN0IHN0cnVjdCBzeW1fZW50 cnkgKnN5bTIgPSBwMjsKKwlpbnQgcmM7CisKKwlyYyA9IHN0cmNtcCgoY2hhciAqKShzeW0xLT5z eW1ib2wpLCAoY2hhciAqKShzeW0yLT5zeW1ib2wpKTsKKworCWlmICghcmMpIHsKKwkJaWYgKHN5 bTEtPmZpbGVuYW1lICYmIHN5bTItPmZpbGVuYW1lKQorCQkJcmMgPSBzdHJjbXAoKGNoYXIgKilz eW0xLT5maWxlbmFtZSwgKGNoYXIgKilzeW0yLT5maWxlbmFtZSk7CisJCWVsc2UgaWYgKCFzeW0x LT5maWxlbmFtZSAmJiBzeW0yLT5maWxlbmFtZSkKKwkJCXJjID0gLTE7CisJCWVsc2UgaWYgKHN5 bTEtPmZpbGVuYW1lICYmICFzeW0yLT5maWxlbmFtZSkKKwkJCXJjID0gMTsKKworCQlpZiAoIXJj KSB7CisJCQlpZiAoc3ltMS0+dHlwZSA8IHN5bTItPnR5cGUpCisJCQkJcmMgPSAtMTsKKwkJCWVs c2UgaWYgKHN5bTEtPnR5cGUgPiBzeW0yLT50eXBlKQorCQkJCXJjID0gMTsKKwkJCWVsc2UKKwkJ CQlyYyA9IDA7CisJCX0KKwl9CisKKwlyZXR1cm4gcmM7Cit9CisKIHN0YXRpYyB2b2lkIHdyaXRl X3NyYyh2b2lkKQogewogCXVuc2lnbmVkIGludCBpLCBrLCBvZmY7CkBAIC0zMzQsNyArMzgyLDYg QEAgc3RhdGljIHZvaWQgd3JpdGVfc3JjKHZvaWQpCiAJCXByaW50ZigiXHQubG9uZ1x0JWRcbiIs IG1hcmtlcnNbaV0pOwogCXByaW50ZigiXG4iKTsKIAotCWZyZWUobWFya2Vycyk7CiAKIAlvdXRw dXRfbGFiZWwoInN5bWJvbHNfdG9rZW5fdGFibGUiKTsKIAlvZmYgPSAwOwpAQCAtMzUwLDYgKzM5 Nyw0MiBAQCBzdGF0aWMgdm9pZCB3cml0ZV9zcmModm9pZCkKIAlmb3IgKGkgPSAwOyBpIDwgMjU2 OyBpKyspCiAJCXByaW50ZigiXHQuc2hvcnRcdCVkXG4iLCBiZXN0X2lkeFtpXSk7CiAJcHJpbnRm KCJcbiIpOworCisJaWYgKCFleHRyYV9zb3J0ZWQpIHsKKwkJZnJlZShtYXJrZXJzKTsKKwkJcmV0 dXJuOworCX0KKworCS8qIFNvcnRlZCBieSBvcmlnaW5hbCBzeW1ib2wgbmFtZXMsIGZpbGVuYW1l LCBhbmQgbGFzdGx5IHR5cGUuICovCisJcXNvcnQodGFibGUsIHRhYmxlX2NudCwgc2l6ZW9mKCp0 YWJsZSksIGNvbXBhcmVfbmFtZV9vcmlnKTsKKworCS8qIExvb2t1cCB0YWJsZSB0byBzeW1ib2xz X2FkZHJlc3NlcyAob3Igc3ltYm9sc19vZmZzZXRzKS4qLworCW91dHB1dF9sYWJlbCgic3ltYm9s c19hZGRyZXNzZXNfaW5kZXhfc29ydGVkIik7CisJZm9yIChpID0gMDsgaSA8IHRhYmxlX2NudDsg aSsrKSB7CisJCXByaW50ZigiXHQubG9uZ1x0JWRcbiIsIHRhYmxlW2ldLmlkeCk7CisJfQorCXBy aW50ZigiXG4iKTsKKworCW91dHB1dF9sYWJlbCgic3ltYm9sc19uYW1lc19zb3J0ZWQiKTsKKwlv ZmYgPSAwOworCWZvciAoaSA9IDA7IGkgPCB0YWJsZV9jbnQ7IGkrKykgeworCQlpZiAoKGkgJiAw eEZGKSA9PSAwKQorCQkJbWFya2Vyc1tpID4+IDhdID0gb2ZmOworCQlwcmludGYoIlx0LmJ5dGUg MHglMDJ4IiwgdGFibGVbaV0ubGVuKTsKKwkJZm9yIChrID0gMDsgayA8IHRhYmxlW2ldLmxlbjsg aysrKQorCQkJcHJpbnRmKCIsIDB4JTAyeCIsIHRhYmxlW2ldLnN5bVtrXSk7CisJCS8qIERlYnVn IGRhdGEuICovCisJCXByaW50ZigiICMgJXMgW2lkeD0ldV0gWyVjXSIsIHRhYmxlW2ldLnN5bWJv bCwgdGFibGVbaV0uaWR4LCB0YWJsZVtpXS50eXBlKTsKKwkJcHJpbnRmKCJcbiIpOworCQlvZmYg Kz0gdGFibGVbaV0ubGVuICsgMTsKKwl9CisJcHJpbnRmKCJcbiIpOworCW91dHB1dF9sYWJlbCgi c3ltYm9sc19tYXJrZXJzX3NvcnRlZCIpOworCWZvciAoaSA9IDA7IGkgPCAoKHRhYmxlX2NudCAr IDI1NSkgPj4gOCk7IGkrKykKKwkJcHJpbnRmKCJcdC5sb25nXHQlZFxuIiwgbWFya2Vyc1tpXSk7 CisJcHJpbnRmKCJcbiIpOworCisJZnJlZShtYXJrZXJzKTsKIH0KIAogCkBAIC00MDksNyArNDky LDcgQEAgc3RhdGljIHZvaWQgY29tcHJlc3Nfc3ltYm9scyh1bnNpZ25lZCBjaGFyICpzdHIsIGlu dCBpZHgpCiAKIAkJbGVuID0gdGFibGVbaV0ubGVuOwogCQlwMSA9IHRhYmxlW2ldLnN5bTsKLQor CQl0YWJsZVtpXS5pZHggPSBpOwogCQkvKiBmaW5kIHRoZSB0b2tlbiBvbiB0aGUgc3ltYm9sICov CiAJCXAyID0gbWVtbWVtX3B2dChwMSwgbGVuLCBzdHIsIDIpOwogCQlpZiAoIXAyKSBjb250aW51 ZTsKQEAgLTU2MSw2ICs2NDQsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJ CQkJaW5wdXRfZm9ybWF0ID0gZm10X3N5c3Y7CiAJCQllbHNlIGlmIChzdHJjbXAoYXJndltpXSwg Ii0tc29ydCIpID09IDApCiAJCQkJdW5zb3J0ZWQgPSB0cnVlOworCQkJZWxzZSBpZiAoc3RyY21w KGFyZ3ZbaV0sICItLWFkZC1leHRyYS1zb3J0ZWQiKSA9PSAwKQorCQkJCWV4dHJhX3NvcnRlZCA9 IDE7CiAJCQllbHNlIGlmIChzdHJjbXAoYXJndltpXSwgIi0td2Fybi1kdXAiKSA9PSAwKQogCQkJ CXdhcm5fZHVwID0gdHJ1ZTsKIAkJCWVsc2UKLS0gCjIuNS4wCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4t ZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK