From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH 1/4] xenstore: enhance debug command support Date: Tue, 21 Feb 2017 13:00:56 +0100 Message-ID: <20170221120059.15627-2-jgross@suse.com> References: <20170221120059.15627-1-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cg982-00073J-24 for xen-devel@lists.xenproject.org; Tue, 21 Feb 2017 12:01:10 +0000 In-Reply-To: <20170221120059.15627-1-jgross@suse.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 Cc: Juergen Gross , wei.liu2@citrix.com, ian.jackson@eu.citrix.com List-Id: xen-devel@lists.xenproject.org VGhlIFhlbnN0b3JlIHByb3RvY29sIHN1cHBvcnRzIHRoZSBYU19ERUJVRyBjb21tYW5kIGZvciB0 cmlnZ2VyaW5nCnZhcmlvdXMgYWN0aW9ucyBpbiB0aGUgWGVuc3RvcmUgZGFlbW9uLiBFbmhhbmNl IHRoYXQgc3VwcG9ydCBieSB1c2luZwphIGNvbW1hbmQgdGFibGUgYW5kIGFkZGluZyBhIGhlbHAg ZnVuY3Rpb24uIE1vdmUgYWxsIHRoZSBYU19ERUJVRwpyZWxhdGVkIGNvZGUgdG8gYSBuZXcgc291 cmNlIGZpbGUgeGVuc3RvcmVkX2RlYnVnLmMuCgpTdXBwb3J0IG11bHRpcGxlIGRlYnVnIGNvbW1h bmRzIGluIHRoZSBhc3NvY2lhdGVkIHhlbnN0b3JlLWNvbnRyb2wKcHJvZ3JhbSB1c2VkIHRvIGlz c3VlIFhTX0RFQlVHIGNvbW1hbmRzLgoKU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdy b3NzQHN1c2UuY29tPgotLS0KIHRvb2xzL3hlbnN0b3JlL01ha2VmaWxlICAgICAgICAgICB8ICAg NCArLQogdG9vbHMveGVuc3RvcmUveGVuc3RvcmVfY29udHJvbC5jIHwgIDY1ICsrKysrKysrKysr KysrLS0tLS0tCiB0b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfY29yZS5jICAgfCAgMjkgKy0tLS0t LS0tCiB0b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfY29yZS5oICAgfCAgIDIgKy0KIHRvb2xzL3hl bnN0b3JlL3hlbnN0b3JlZF9kZWJ1Zy5jICB8IDEyNCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2RlYnVnLmggIHwgIDE5ICsr KysrKwogdG9vbHMveGVuc3RvcmUveHMuYyAgICAgICAgICAgICAgIHwgICAxIC0KIDcgZmlsZXMg Y2hhbmdlZCwgMTk2IGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHRvb2xzL3hlbnN0b3JlL3hlbnN0b3JlZF9kZWJ1Zy5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2RlYnVnLmgKCmRpZmYgLS1naXQgYS90b29scy94 ZW5zdG9yZS9NYWtlZmlsZSBiL3Rvb2xzL3hlbnN0b3JlL01ha2VmaWxlCmluZGV4IDM2YjZmZDQu LjNhOWFjMDIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hlbnN0b3JlL01ha2VmaWxlCisrKyBiL3Rvb2xz L3hlbnN0b3JlL01ha2VmaWxlCkBAIC0yMyw3ICsyMyw5IEBAIExERkxBR1MgKz0gJChMREZMQUdT LXkpCiBDTElFTlRTIDo9IHhlbnN0b3JlLWV4aXN0cyB4ZW5zdG9yZS1saXN0IHhlbnN0b3JlLXJl YWQgeGVuc3RvcmUtcm0geGVuc3RvcmUtY2htb2QKIENMSUVOVFMgKz0geGVuc3RvcmUtd3JpdGUg eGVuc3RvcmUtbHMgeGVuc3RvcmUtd2F0Y2gKIAotWEVOU1RPUkVEX09CSlMgPSB4ZW5zdG9yZWRf Y29yZS5vIHhlbnN0b3JlZF93YXRjaC5vIHhlbnN0b3JlZF9kb21haW4ubyB4ZW5zdG9yZWRfdHJh bnNhY3Rpb24ubyB4c19saWIubyB0YWxsb2MubyB1dGlscy5vIHRkYi5vIGhhc2h0YWJsZS5vCitY RU5TVE9SRURfT0JKUyA9IHhlbnN0b3JlZF9jb3JlLm8geGVuc3RvcmVkX3dhdGNoLm8geGVuc3Rv cmVkX2RvbWFpbi5vCitYRU5TVE9SRURfT0JKUyArPSB4ZW5zdG9yZWRfdHJhbnNhY3Rpb24ubyB4 ZW5zdG9yZWRfZGVidWcubworWEVOU1RPUkVEX09CSlMgKz0geHNfbGliLm8gdGFsbG9jLm8gdXRp bHMubyB0ZGIubyBoYXNodGFibGUubwogCiBYRU5TVE9SRURfT0JKU18kKENPTkZJR19MaW51eCkg PSB4ZW5zdG9yZWRfcG9zaXgubwogWEVOU1RPUkVEX09CSlNfJChDT05GSUdfU3VuT1MpID0geGVu c3RvcmVkX3NvbGFyaXMubyB4ZW5zdG9yZWRfcG9zaXgubyB4ZW5zdG9yZWRfcHJvYmVzLm8KZGlm ZiAtLWdpdCBhL3Rvb2xzL3hlbnN0b3JlL3hlbnN0b3JlX2NvbnRyb2wuYyBiL3Rvb2xzL3hlbnN0 b3JlL3hlbnN0b3JlX2NvbnRyb2wuYwppbmRleCAwYTEwOGRmLi5lNDJkNDc4IDEwMDY0NAotLS0g YS90b29scy94ZW5zdG9yZS94ZW5zdG9yZV9jb250cm9sLmMKKysrIGIvdG9vbHMveGVuc3RvcmUv eGVuc3RvcmVfY29udHJvbC5jCkBAIC03LDI5ICs3LDU2IEBACiAKIGludCBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikKIHsKLSAgc3RydWN0IHhzX2hhbmRsZSAqIHhzaDsKKyAgICBzdHJ1Y3Qg eHNfaGFuZGxlICp4c2g7CisgICAgY2hhciAqcGFyID0gTlVMTDsKKyAgICBjaGFyICpyZXQ7Cisg ICAgdW5zaWduZWQgaW50IHAsIGxlbiA9IDA7CisgICAgaW50IHJjID0gMDsKIAotICBpZiAoYXJn YyA8IDIgfHwKLSAgICAgIHN0cmNtcChhcmd2WzFdLCAiY2hlY2siKSkKLSAgewotICAgIGZwcmlu dGYoc3RkZXJyLAotICAgICAgICAgICAgIlVzYWdlOlxuIgotICAgICAgICAgICAgIlxuIgotICAg ICAgICAgICAgIiAgICAgICAlcyBjaGVja1xuIgotICAgICAgICAgICAgIlxuIiwgYXJndlswXSk7 Ci0gICAgcmV0dXJuIDI7Ci0gIH0KKyAgICBpZiAoYXJnYyA8IDIpIHsKKyAgICAgICAgZnByaW50 ZihzdGRlcnIsICJVc2FnZTpcbiIKKyAgICAgICAgICAgICAgICAiJXMgPGNvbW1hbmQ+IFs8YXJn Pi4uLl1cbiIsIGFyZ3ZbMF0pOworICAgICAgICByZXR1cm4gMjsKKyAgICB9CiAKLSAgeHNoID0g eHNfZGFlbW9uX29wZW4oKTsKKyAgICBmb3IgKHAgPSAyOyBwIDwgYXJnYzsgcCsrKQorICAgICAg ICBsZW4gKz0gc3RybGVuKGFyZ3ZbcF0pICsgMTsKKyAgICBpZiAobGVuKSB7CisgICAgICAgIHBh ciA9IG1hbGxvYyhsZW4pOworICAgICAgICBpZiAoIXBhcikgeworICAgICAgICAgICAgZnByaW50 ZihzdGRlcnIsICJBbGxvY2F0aW9uIGVycm9yLlxuIik7CisgICAgICAgICAgICByZXR1cm4gMTsK KyAgICAgICAgfQorICAgICAgICBsZW4gPSAwOworICAgICAgICBmb3IgKHAgPSAyOyBwIDwgYXJn YzsgcCsrKSB7CisgICAgICAgICAgICBtZW1jcHkocGFyICsgbGVuLCBhcmd2W3BdLCBzdHJsZW4o YXJndltwXSkgKyAxKTsKKyAgICAgICAgICAgIGxlbiArPSBzdHJsZW4oYXJndltwXSkgKyAxOwor ICAgICAgICB9CisgICAgfQogCi0gIGlmICh4c2ggPT0gTlVMTCkgewotICAgIGZwcmludGYoc3Rk ZXJyLCAiRmFpbGVkIHRvIGNvbnRhY3QgWGVuc3RvcmVkLlxuIik7Ci0gICAgcmV0dXJuIDE7Ci0g IH0KKyAgICB4c2ggPSB4c19vcGVuKDApOworICAgIGlmICh4c2ggPT0gTlVMTCkgeworICAgICAg ICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBjb250YWN0IFhlbnN0b3JlZC5cbiIpOworICAg ICAgICByZXR1cm4gMTsKKyAgICB9CiAKLSAgeHNfZGVidWdfY29tbWFuZCh4c2gsIGFyZ3ZbMV0s IE5VTEwsIDApOworICAgIHJldCA9IHhzX2RlYnVnX2NvbW1hbmQoeHNoLCBhcmd2WzFdLCBwYXIs IGxlbik7CisgICAgaWYgKCFyZXQpIHsKKyAgICAgICAgcmMgPSAzOworICAgICAgICBpZiAoZXJy bm8gPT0gRUlOVkFMKSB7CisgICAgICAgICAgICByZXQgPSB4c19kZWJ1Z19jb21tYW5kKHhzaCwg ImhlbHAiLCBOVUxMLCAwKTsKKyAgICAgICAgICAgIGlmIChyZXQpCisgICAgICAgICAgICAgICAg ZnByaW50ZihzdGRlcnIsICJDb21tYW5kIG5vdCBzdXBwb3J0ZWQuIFZhbGlkIGNvbW1hbmRzIGFy ZTpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzXG4iLCByZXQpOworICAg ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3Igd2hl biBleGVjdXRpbmcgY29tbWFuZC5cbiIpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGZw cmludGYoc3RkZXJyLCAiRXJyb3IgJWQgd2hlbiB0cnlpbmcgdG8gZXhlY3V0ZSBjb21tYW5kLlxu IiwKKyAgICAgICAgICAgICAgICAgICAgZXJybm8pOworICAgIH0gZWxzZSBpZiAoc3RybGVuKHJl dCkgPiAwKQorICAgICAgICBwcmludGYoIiVzXG4iLCByZXQpOwogCi0gIHhzX2RhZW1vbl9jbG9z ZSh4c2gpOworICAgIHhzX2Nsb3NlKHhzaCk7CiAKLSAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHJj OwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2NvcmUuYyBiL3Rvb2xz L3hlbnN0b3JlL3hlbnN0b3JlZF9jb3JlLmMKaW5kZXggMWU5YjYyMi4uYjg0YjA4MSAxMDA2NDQK LS0tIGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2NvcmUuYworKysgYi90b29scy94ZW5zdG9y ZS94ZW5zdG9yZWRfY29yZS5jCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAieGVuc3RvcmVk X3dhdGNoLmgiCiAjaW5jbHVkZSAieGVuc3RvcmVkX3RyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAi eGVuc3RvcmVkX2RvbWFpbi5oIgorI2luY2x1ZGUgInhlbnN0b3JlZF9kZWJ1Zy5oIgogI2luY2x1 ZGUgInRkYi5oIgogCiAjaW5jbHVkZSAiaGFzaHRhYmxlLmgiCkBAIC04NCw3ICs4NSw2IEBAIHN0 YXRpYyBUREJfQ09OVEVYVCAqdGRiX2N0eCA9IE5VTEw7CiBzdGF0aWMgYm9vbCB0cmlnZ2VyX3Rh bGxvY19yZXBvcnQgPSBmYWxzZTsKIAogc3RhdGljIHZvaWQgY29ycnVwdChzdHJ1Y3QgY29ubmVj dGlvbiAqY29ubiwgY29uc3QgY2hhciAqZm10LCAuLi4pOwotc3RhdGljIHZvaWQgY2hlY2tfc3Rv cmUodm9pZCk7CiBzdGF0aWMgY29uc3QgY2hhciAqc29ja21zZ19zdHJpbmcoZW51bSB4c2Rfc29j a21zZ190eXBlIHR5cGUpOwogCiAjZGVmaW5lIGxvZyguLi4pCQkJCQkJCVwKQEAgLTEyNjEsMzQg KzEyNjEsMTEgQEAgc3RhdGljIGludCBkb19zZXRfcGVybXMoc3RydWN0IGNvbm5lY3Rpb24gKmNv bm4sIHN0cnVjdCBidWZmZXJlZF9kYXRhICppbikKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGlu dCBkb19kZWJ1ZyhzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgc3RydWN0IGJ1ZmZlcmVkX2RhdGEg KmluKQotewotCWludCBudW07Ci0KLQlpZiAoY29ubi0+aWQgIT0gMCkKLQkJcmV0dXJuIEVBQ0NF UzsKLQotCW51bSA9IHhzX2NvdW50X3N0cmluZ3MoaW4tPmJ1ZmZlciwgaW4tPnVzZWQpOwotCi0J aWYgKHN0cmVxKGluLT5idWZmZXIsICJwcmludCIpKSB7Ci0JCWlmIChudW0gPCAyKQotCQkJcmV0 dXJuIEVJTlZBTDsKLQkJeHByaW50ZigiZGVidWc6ICVzIiwgaW4tPmJ1ZmZlciArIGdldF9zdHJp bmcoaW4sIDApKTsKLQl9Ci0KLQlpZiAoc3RyZXEoaW4tPmJ1ZmZlciwgImNoZWNrIikpCi0JCWNo ZWNrX3N0b3JlKCk7Ci0KLQlzZW5kX2Fjayhjb25uLCBYU19ERUJVRyk7Ci0KLQlyZXR1cm4gMDsK LX0KLQogc3RhdGljIHN0cnVjdCB7CiAJY29uc3QgY2hhciAqc3RyOwogCWludCAoKmZ1bmMpKHN0 cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pOwogfSBjb25z dCB3aXJlX2Z1bmNzW1hTX1RZUEVfQ09VTlRdID0gewotCVtYU19ERUJVR10gICAgICAgICAgICAg PSB7ICJERUJVRyIsICAgICAgICAgICAgIGRvX2RlYnVnIH0sCisJW1hTX0RFQlVHXSAgICAgICAg ICAgICA9IHsgIkRFQlVHIiwgICAgICAgICAgICAgZG9feHNfZGVidWcgfSwKIAlbWFNfRElSRUNU T1JZXSAgICAgICAgID0geyAiRElSRUNUT1JZIiwgICAgICAgICBzZW5kX2RpcmVjdG9yeSB9LAog CVtYU19SRUFEXSAgICAgICAgICAgICAgPSB7ICJSRUFEIiwgICAgICAgICAgICAgIGRvX3JlYWQg fSwKIAlbWFNfR0VUX1BFUk1TXSAgICAgICAgID0geyAiR0VUX1BFUk1TIiwgICAgICAgICBkb19n ZXRfcGVybXMgfSwKQEAgLTE3NjQsNyArMTc0MSw3IEBAIHN0YXRpYyB2b2lkIGNsZWFuX3N0b3Jl KHN0cnVjdCBoYXNodGFibGUgKnJlYWNoYWJsZSkKIH0KIAogCi1zdGF0aWMgdm9pZCBjaGVja19z dG9yZSh2b2lkKQordm9pZCBjaGVja19zdG9yZSh2b2lkKQogewogCWNoYXIgKiByb290ID0gdGFs bG9jX3N0cmR1cChOVUxMLCAiLyIpOwogCXN0cnVjdCBoYXNodGFibGUgKiByZWFjaGFibGUgPQpk aWZmIC0tZ2l0IGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2NvcmUuaCBiL3Rvb2xzL3hlbnN0 b3JlL3hlbnN0b3JlZF9jb3JlLmgKaW5kZXggZjZhNTZmNy4uODljMWQ3NSAxMDA2NDQKLS0tIGEv dG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2NvcmUuaAorKysgYi90b29scy94ZW5zdG9yZS94ZW5z dG9yZWRfY29yZS5oCkBAIC0xNTgsNyArMTU4LDcgQEAgVERCX0NPTlRFWFQgKnRkYl9jb250ZXh0 KHN0cnVjdCBjb25uZWN0aW9uICpjb25uKTsKIGJvb2wgcmVwbGFjZV90ZGIoY29uc3QgY2hhciAq bmV3bmFtZSwgVERCX0NPTlRFWFQgKm5ld3RkYik7CiAKIHN0cnVjdCBjb25uZWN0aW9uICpuZXdf Y29ubmVjdGlvbihjb25ud3JpdGVmbl90ICp3cml0ZSwgY29ubnJlYWRmbl90ICpyZWFkKTsKLQor dm9pZCBjaGVja19zdG9yZSh2b2lkKTsKIAogLyogSXMgdGhpcyBhIHZhbGlkIG5vZGUgbmFtZT8g Ki8KIGJvb2wgaXNfdmFsaWRfbm9kZW5hbWUoY29uc3QgY2hhciAqbm9kZSk7CmRpZmYgLS1naXQg YS90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfZGVidWcuYyBiL3Rvb2xzL3hlbnN0b3JlL3hlbnN0 b3JlZF9kZWJ1Zy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMWJmYWUK LS0tIC9kZXYvbnVsbAorKysgYi90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfZGVidWcuYwpAQCAt MCwwICsxLDEyNCBAQAorLyoKKyAgICBJbnRlcmFjdGl2ZSBjb21tYW5kcyBmb3IgWGVuIFN0b3Jl IERhZW1vbi4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMTcgSnVlcmdlbiBHcm9zcywgU1VTRSBMaW51 eCBHbWJICisKKyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICAgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IK KyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07 IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyovCisKKyNpbmNs dWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+Cisj aW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlICJ1dGlscy5oIgorI2luY2x1ZGUgInRhbGxv Yy5oIgorI2luY2x1ZGUgInhlbnN0b3JlZF9jb3JlLmgiCisjaW5jbHVkZSAieGVuc3RvcmVkX2Rl YnVnLmgiCisKK3N0cnVjdCBjbWRfcyB7CisJY2hhciAqY21kOworCWludCAoKmZ1bmMpKHZvaWQg Kiwgc3RydWN0IGNvbm5lY3Rpb24gKiwgY2hhciAqKiwgaW50KTsKKwljaGFyICpwYXJzOworfTsK Kworc3RhdGljIGludCBkb19kZWJ1Z19jaGVjayh2b2lkICpjdHgsIHN0cnVjdCBjb25uZWN0aW9u ICpjb25uLAorCQkJICBjaGFyICoqdmVjLCBpbnQgbnVtKQoreworCWlmIChudW0pCisJCXJldHVy biBFSU5WQUw7CisKKwljaGVja19zdG9yZSgpOworCisJc2VuZF9hY2soY29ubiwgWFNfREVCVUcp OworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRvX2RlYnVnX3ByaW50KHZvaWQgKmN0eCwg c3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sCisJCQkgIGNoYXIgKip2ZWMsIGludCBudW0pCit7CisJ aWYgKG51bSAhPSAxKQorCQlyZXR1cm4gRUlOVkFMOworCisJeHByaW50ZigiZGVidWc6ICVzIiwg dmVjWzBdKTsKKworCXNlbmRfYWNrKGNvbm4sIFhTX0RFQlVHKTsKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIGludCBkb19kZWJ1Z19oZWxwKHZvaWQgKiwgc3RydWN0IGNvbm5lY3Rpb24gKiwgY2hh ciAqKiwgaW50KTsKKworc3RhdGljIHN0cnVjdCBjbWRfcyBjbWRzW10gPSB7CisJeyAiY2hlY2si LCBkb19kZWJ1Z19jaGVjaywgIiIgfSwKKwl7ICJwcmludCIsIGRvX2RlYnVnX3ByaW50LCAiPHN0 cmluZz4iIH0sCisJeyAiaGVscCIsIGRvX2RlYnVnX2hlbHAsICIiIH0sCit9OworCitzdGF0aWMg aW50IGRvX2RlYnVnX2hlbHAodm9pZCAqY3R4LCBzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwKKwkJ CSBjaGFyICoqdmVjLCBpbnQgbnVtKQoreworCWludCBjbWQsIGxlbiA9IDA7CisJY2hhciAqcmVz cDsKKworCWlmIChudW0pCisJCXJldHVybiBFSU5WQUw7CisKKwlmb3IgKGNtZCA9IDA7IGNtZCA8 IEFSUkFZX1NJWkUoY21kcyk7IGNtZCsrKSB7CisJCWxlbiArPSBzdHJsZW4oY21kc1tjbWRdLmNt ZCkgKyAxOworCQlsZW4gKz0gc3RybGVuKGNtZHNbY21kXS5wYXJzKSArIDE7CisJfQorCWxlbisr OworCisJcmVzcCA9IHRhbGxvY19hcnJheShjdHgsIGNoYXIsIGxlbik7CisJaWYgKCFyZXNwKQor CQlyZXR1cm4gRU5PTUVNOworCisJbGVuID0gMDsKKwlmb3IgKGNtZCA9IDA7IGNtZCA8IEFSUkFZ X1NJWkUoY21kcyk7IGNtZCsrKSB7CisJCXN0cmNweShyZXNwICsgbGVuLCBjbWRzW2NtZF0uY21k KTsKKwkJbGVuICs9IHN0cmxlbihjbWRzW2NtZF0uY21kKTsKKwkJcmVzcFtsZW5dID0gJ1x0JzsK KwkJbGVuKys7CisJCXN0cmNweShyZXNwICsgbGVuLCBjbWRzW2NtZF0ucGFycyk7CisJCWxlbiAr PSBzdHJsZW4oY21kc1tjbWRdLnBhcnMpOworCQlyZXNwW2xlbl0gPSAnXG4nOworCQlsZW4rKzsK Kwl9CisJcmVzcFtsZW5dID0gMDsKKworCXNlbmRfcmVwbHkoY29ubiwgWFNfREVCVUcsIHJlc3As IGxlbik7CisJcmV0dXJuIDA7Cit9CisKK2ludCBkb194c19kZWJ1ZyhzdHJ1Y3QgY29ubmVjdGlv biAqY29ubiwgc3RydWN0IGJ1ZmZlcmVkX2RhdGEgKmluKQoreworCWludCBudW07CisJaW50IGNt ZDsKKwljaGFyICoqdmVjOworCisJaWYgKGNvbm4tPmlkICE9IDApCisJCXJldHVybiBFQUNDRVM7 CisKKwludW0gPSB4c19jb3VudF9zdHJpbmdzKGluLT5idWZmZXIsIGluLT51c2VkKTsKKwl2ZWMg PSB0YWxsb2NfYXJyYXkoaW4sIGNoYXIgKiwgbnVtKTsKKwlpZiAoIXZlYykKKwkJcmV0dXJuIEVO T01FTTsKKwlpZiAoZ2V0X3N0cmluZ3MoaW4sIHZlYywgbnVtKSAhPSBudW0pCisJCXJldHVybiBF SU87CisKKwlmb3IgKGNtZCA9IDA7IGNtZCA8IEFSUkFZX1NJWkUoY21kcyk7IGNtZCsrKQorCQlp ZiAoc3RyZXEodmVjWzBdLCBjbWRzW2NtZF0uY21kKSkKKwkJCXJldHVybiBjbWRzW2NtZF0uZnVu YyhpbiwgY29ubiwgdmVjICsgMSwgbnVtIC0gMSk7CisKKwlyZXR1cm4gRUlOVkFMOworfQpkaWZm IC0tZ2l0IGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2RlYnVnLmggYi90b29scy94ZW5zdG9y ZS94ZW5zdG9yZWRfZGVidWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44 NzM0M2U4Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2RlYnVn LmgKQEAgLTAsMCArMSwxOSBAQAorLyoKKyAgICBJbnRlcmFjdGl2ZSBjb21tYW5kcyBmb3IgWGVu IFN0b3JlIERhZW1vbi4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMTcgSnVlcmdlbiBHcm9zcywgU1VT RSBMaW51eCBHbWJICisKKyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z ZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyovCisK K2ludCBkb194c19kZWJ1ZyhzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgc3RydWN0IGJ1ZmZlcmVk X2RhdGEgKmluKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3hlbnN0b3JlL3hzLmMgYi90b29scy94ZW5z dG9yZS94cy5jCmluZGV4IDZmYTEyNjEuLjljMDc4N2YgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hlbnN0 b3JlL3hzLmMKKysrIGIvdG9vbHMveGVuc3RvcmUveHMuYwpAQCAtMTE2NSw3ICsxMTY1LDYgQEAg b3V0OgogICAgIHJldHVybiBwb3J0OwogfQogCi0vKiBPbmx5IHVzZWZ1bCBmb3IgREVCVUcgdmVy c2lvbnMgKi8KIGNoYXIgKnhzX2RlYnVnX2NvbW1hbmQoc3RydWN0IHhzX2hhbmRsZSAqaCwgY29u c3QgY2hhciAqY21kLAogCQkgICAgICAgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGxlbikKIHsK LS0gCjIuMTAuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6 Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=