From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: [PATCH 12/14] fuzz/x86_emulate: Add --rerun option to try to track down instability Date: Fri, 25 Aug 2017 17:43:41 +0100 Message-ID: <20170825164343.29015-12-george.dunlap@citrix.com> References: <20170825164343.29015-1-george.dunlap@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dlHkg-00066o-9l for xen-devel@lists.xenproject.org; Fri, 25 Aug 2017 16:46:34 +0000 In-Reply-To: <20170825164343.29015-1-george.dunlap@citrix.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: Ian Jackson , Wei Liu , George Dunlap , Jan Beulich , Andrew Cooper List-Id: xen-devel@lists.xenproject.org Q3VycmVudCBzdGFiaWxpdHkgbnVtYmVycyBhcmUgbm90IDEwMCUuICBJbiBvcmRlciB0byBoZWxw IHRyYWNrIHRoaXMKZG93biwgYWRkIGEgLS1yZXJ1biBvcHRpb24gd2hpY2ggd2lsbCBydW4gdGhl IHNhbWUgaW5wdXQgdHdpY2UsCnJlc2V0dGluZyB0aGUgc3RhdGUgaW4gYmV0d2VlbiBlYWNoIHJ1 biwgYW5kIGNvbXBhcmluZyB0aGUgc3RhdGUKYWZ0ZXJ3YXJkcy4gIElmIHRoZSBzdGF0ZSBkaWZm ZXJzLCBjYWxsIGFib3J0KCkuCgpUaGlzIGFsbG93cyBBRkwgdG8gaGVscCB0aGUgcHJvY2VzcyBv ZiB0cmFja2luZyBkb3duIHdoYXQgc3RhdGUgaXMgbm90CmJlaW5nIHJlc2V0IHByb3Blcmx5IGJl dHdlZW4gcnVucyBieSBwcm92aW5nIHRlc3RjYXNlcyB0aGF0CmRlbW9uc3RyYXRlIHRoZSBiZWhh dmlvci4KClRvIGRvIHRoaXM6CgotIE1vdmUgY3R4dCBpbnRvIHN0cnVjdCBmdXp6LXN0YXRlIHRv IHNpbXBsaWZ5IGhhbmRsaW5nCgotIFJhdGhlciB0aGFuIGNvcHlpbmcgdGhlIGRhdGEgaW50byBp bnB1dCwgdHJlYXQgdGhlIGRhdGEgaGFuZGVkIGFzCiAgaW1tdXRhYmxlIGFuZCBwb2ludCBlYWNo ICJjb3B5IiB0byBpdAoKLSBGYWN0b3Igb3V0IHZhcmlvdXMgc3RlcHMgKHNldHRpbmcgdXAgZnV6 eiBzdGF0ZSwgcnVubmluZyBhbgogIGluZGl2aWR1YWwgdGVzdCkgc28gdGhhdCB0aGV5IGNhbiBi ZSBlZmZpY2llbnRseSBydW4gZWl0aGVyIG9uY2Ugb3IKICB0d2ljZSAoYXMgbmVjZXNzYXJ5KQoK LSBDb21wYXJlIHRoZSBzdGF0ZXMgYWZ0ZXJ3YXJkcywgcHJpbnRpbmcgd2hhdCdzIGRpZmZlcmVu dCBhbmQgY2FsbGluZwogIGFib3J0KCkgaWYgYW55dGhpbmcgaXMgZm91bmQuCgpTaWduZWQtb2Zm LWJ5OiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGNpdHJpeC5jb20+Ci0tLQpDQzogSWFu IEphY2tzb24gPGlhbi5qYWNrc29uQGNpdHJpeC5jb20+CkNDOiBXZWkgTGl1IDx3ZWkubGl1MkBj aXRyaXguY29tPgpDQzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4K Q0M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCiB0b29scy9mdXp6L3g4Nl9p bnN0cnVjdGlvbl9lbXVsYXRvci9hZmwtaGFybmVzcy5jIHwgICA5ICstCiB0b29scy9mdXp6L3g4 Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9mdXp6LWVtdWwuYyAgIHwgMTgyICsrKysrKysrKysrKysr KysrKy0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTU5IGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL2Fm bC1oYXJuZXNzLmMgYi90b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9hZmwtaGFy bmVzcy5jCmluZGV4IDEyYjM3NjVkY2MuLjg2YzEyNDE3ODQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2Z1 enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL2FmbC1oYXJuZXNzLmMKKysrIGIvdG9vbHMvZnV6 ei94ODZfaW5zdHJ1Y3Rpb25fZW11bGF0b3IvYWZsLWhhcm5lc3MuYwpAQCAtMTQsNiArMTQsNyBA QCBleHRlcm4gdW5zaWduZWQgaW50IGZ1enpfbWluaW1hbF9pbnB1dF9zaXplKHZvaWQpOwogc3Rh dGljIHVpbnQ4X3QgaW5wdXRbSU5QVVRfU0laRV07CiAKIGV4dGVybiBib29sIG9wdF9jb21wYWN0 OworZXh0ZXJuIGJvb2wgb3B0X3JlcnVuOwogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiB7CkBAIC0zMiwxMCArMzMsMTIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQogICAgICAgICBlbnVtIHsKICAgICAgICAgICAgIE9QVF9NSU5fU0laRSwKICAgICAgICAgICAg IE9QVF9DT01QQUNULAorICAgICAgICAgICAgT1BUX1JFUlVOLAogICAgICAgICB9OwogICAgICAg ICBzdGF0aWMgY29uc3Qgc3RydWN0IG9wdGlvbiBsb3B0c1tdID0gewogICAgICAgICAgICAgeyAi bWluLWlucHV0LXNpemUiLCBub19hcmd1bWVudCwgTlVMTCwgT1BUX01JTl9TSVpFIH0sCiAgICAg ICAgICAgICB7ICJjb21wYWN0IiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIE9QVF9DT01QQUNU IH0sCisgICAgICAgICAgICB7ICJyZXJ1biIsIG5vX2FyZ3VtZW50LCBOVUxMLCBPUFRfUkVSVU4g fSwKICAgICAgICAgICAgIHsgMCwgMCwgMCwgMCB9CiAgICAgICAgIH07CiAgICAgICAgIGludCBj ID0gZ2V0b3B0X2xvbmdfb25seShhcmdjLCBhcmd2LCAiIiwgbG9wdHMsIE5VTEwpOwpAQCAtNTQs OCArNTcsMTIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICAgICAg b3B0X2NvbXBhY3QgPSBhdG9pKG9wdGFyZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg ICAgIAorICAgICAgICBjYXNlIE9QVF9SRVJVTjoKKyAgICAgICAgICAgIG9wdF9yZXJ1biA9IHRy dWU7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlICc/JzoKLSAgICAgICAgICAg IHByaW50ZigiVXNhZ2U6ICVzIFstLWNvbXBhY3Q9MHwxXSAkRklMRSBbJEZJTEUuLi5dIHwgWy0t bWluLWlucHV0LXNpemVdXG4iLCBhcmd2WzBdKTsKKyAgICAgICAgICAgIHByaW50ZigiVXNhZ2U6 ICVzIFstLWNvbXBhY3Q9MHwxXSBbLS1yZXJ1bl0gJEZJTEUgWyRGSUxFLi4uXSB8IFstLW1pbi1p bnB1dC1zaXplXVxuIiwgYXJndlswXSk7CiAgICAgICAgICAgICBleGl0KC0xKTsKICAgICAgICAg ICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS90b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVs YXRvci9mdXp6LWVtdWwuYyBiL3Rvb2xzL2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL2Z1 enotZW11bC5jCmluZGV4IDQ4YjAyZjJiZjYuLjFkMDI5M2U5OTAgMTAwNjQ0Ci0tLSBhL3Rvb2xz L2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL2Z1enotZW11bC5jCisrKyBiL3Rvb2xzL2Z1 enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL2Z1enotZW11bC5jCkBAIC00MCw3ICs0MCw3IEBA IHN0cnVjdCBmdXp6X3N0YXRlCiAgICAgc3RydWN0IGNwdV91c2VyX3JlZ3MgcmVnczsKIAogICAg IC8qIEZ1enplcidzIGlucHV0IGRhdGEuICovCi0gICAgc3RydWN0IGZ1enpfY29ycHVzICpjb3Jw dXM7CisgICAgY29uc3Qgc3RydWN0IGZ1enpfY29ycHVzICpjb3JwdXM7CiAKICAgICAvKiBSZWFs IGFtb3VudCBvZiBkYXRhIGJhY2tpbmcgY29ycHVzLT5kYXRhW10uICovCiAgICAgc2l6ZV90IGRh dGFfbnVtOwpAQCAtNTAsNiArNTAsNyBAQCBzdHJ1Y3QgZnV6el9zdGF0ZQogCiAgICAgLyogRW11 bGF0aW9uIG9wcywgc29tZSBvZiB3aGljaCBhcmUgZGlzYWJsZWQgYmFzZWQgb24gY29ycHVzLT5v cHRpb25zLiAqLwogICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMgb3BzOworICAgIHN0cnVjdCB4 ODZfZW11bGF0ZV9jdHh0IGN0eHQ7CiB9OwogI2RlZmluZSBEQVRBX09GRlNFVCBvZmZzZXRvZihz dHJ1Y3QgZnV6el9zdGF0ZSwgY29ycHVzKQogCkBAIC00OTYsNiArNDk3LDEyIEBAIHN0YXRpYyBp bnQgZnV6el9yZWFkX21zcigKICAgICBjb25zdCBzdHJ1Y3QgZnV6el9zdGF0ZSAqcyA9IGN0eHQt PmRhdGE7CiAgICAgdW5zaWduZWQgaW50IGlkeDsKIAorICAgIC8qIAorICAgICAqIE5CIGF0IHRo ZSBtb21lbnQgZHVtcF9zdGF0ZSgpIHJlbGllcyBvbiB0aGUgZmFjdCB0aGF0IHRoaXMKKyAgICAg KiBjYW5ub3QgZmFpbC4gIElmIHdlIGFkZCBpbiBmdXp6ZWQgZmFpbHVyZXMgd2UnbGwgaGF2ZSB0 byBoYW5kbGUKKyAgICAgKiB0aGF0IGRpZmZlcmVudGx5LgorICAgICAqLworICAgIAogICAgIHN3 aXRjaCAoIHJlZyApCiAgICAgewogICAgIGNhc2UgTVNSX1RTQ19BVVg6CkBAIC02MTYsNiArNjIz LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9zdGF0ZShzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4 dCkKIAogICAgIHByaW50ZigiIHJpcDogJSJQUkl4NjQiXG4iLCByZWdzLT5yaXApOwogCisgICAg LyogcmVhZF9tc3IoKSBuZXZlciBmYWlscyBhdCB0aGUgbW9tZW50ICovCiAgICAgZnV6el9yZWFk X21zcihNU1JfRUZFUiwgJnZhbCwgY3R4dCk7CiAgICAgcHJpbnRmKCJFRkVSOiAlIlBSSXg2NCJc biIsIHZhbCk7CiB9CkBAIC02NjAsNyArNjY4LDEwIEBAIHN0YXRpYyB2b2lkIHNldHVwX3N0YXRl KHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQogICAgIHsKICAgICAgICAgLyogRnV6eiBh bGwgb2YgdGhlIHN0YXRlIGluIG9uZSBnbyAqLwogICAgICAgICBpZiAoIWRyZWFkKHMsIHMsIERB VEFfT0ZGU0VUKSkKKyAgICAgICAgeworICAgICAgICAgICAgcHJpbnRmKCJJbnB1dCBzaXplIHRv byBzbWFsbFxuIik7CiAgICAgICAgICAgICBleGl0KC0xKTsKKyAgICAgICAgfQogICAgICAgICBy ZXR1cm47CiAgICAgfQogCkBAIC03ODksOSArODAwLDggQEAgZW51bSB7CiAgICAgICAgIHByaW50 ZigiRGlzYWJsaW5nIGhvb2sgIiNoIlxuIik7ICAgICAgICAgICAgICAgXAogICAgIH0KIAotc3Rh dGljIHZvaWQgZGlzYWJsZV9ob29rcyhzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKK3N0 YXRpYyB2b2lkIGRpc2FibGVfaG9va3Moc3RydWN0IGZ1enpfc3RhdGUgKnMpCiB7Ci0gICAgc3Ry dWN0IGZ1enpfc3RhdGUgKnMgPSBjdHh0LT5kYXRhOwogICAgIHVuc2lnbmVkIGxvbmcgYml0bWFw ID0gcy0+b3B0aW9uczsKIAogICAgIC8qIFNlZSBhbHNvIHNhbml0aXplX2lucHV0LCBzb21lIGhv b2tzIGNhbid0IGJlIGRpc2FibGVkLiAqLwpAQCAtODM5LDcgKzg0OSw3IEBAIHN0YXRpYyB2b2lk IGRpc2FibGVfaG9va3Moc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCiAgKiAgLSAuLi5i YXNlcyB0byBiZWxvdyAxTWIsIDE2LWJ5dGUgYWxpZ25lZAogICogIC0gLi4uc2VsZWN0b3JzIHRv IChiYXNlID4+IDQpCiAgKi8KLXN0YXRpYyB2b2lkIHNhbml0aXplX2lucHV0KHN0cnVjdCB4ODZf ZW11bGF0ZV9jdHh0ICpjdHh0KQorc3RhdGljIHZvaWQgc2FuaXRpemVfc3RhdGUoc3RydWN0IHg4 Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCiB7CiAgICAgc3RydWN0IGZ1enpfc3RhdGUgKnMgPSBjdHh0 LT5kYXRhOwogICAgIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzID0gY3R4dC0+cmVnczsKQEAg LTg4NiwyMSArODk2LDEzMiBAQCBpbnQgTExWTUZ1enplckluaXRpYWxpemUoaW50ICphcmdjLCBj aGFyICoqKmFyZ3YpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBMTFZNRnV6emVyVGVzdE9uZUlu cHV0KGNvbnN0IHVpbnQ4X3QgKmRhdGFfcCwgc2l6ZV90IHNpemUpCit2b2lkIHNldHVwX2Z1enpf c3RhdGUoc3RydWN0IGZ1enpfc3RhdGUgKnN0YXRlLCBjb25zdCB1aW50OF90ICpkYXRhX3AsIHNp emVfdCBzaXplKQogewotICAgIHN0cnVjdCBmdXp6X3N0YXRlIHN0YXRlID0gewotICAgICAgICAu b3BzID0gYWxsX2Z1enplcl9vcHMsCi0gICAgfTsKLSAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4 dCBjdHh0ID0gewotICAgICAgICAuZGF0YSA9ICZzdGF0ZSwKLSAgICAgICAgLnJlZ3MgPSAmc3Rh dGUucmVncywKLSAgICAgICAgLmFkZHJfc2l6ZSA9IDggKiBzaXplb2Yodm9pZCAqKSwKLSAgICAg ICAgLnNwX3NpemUgPSA4ICogc2l6ZW9mKHZvaWQgKiksCi0gICAgfTsKKyAgICBtZW1zZXQoc3Rh dGUsIDAsIHNpemVvZigqc3RhdGUpKTsKKyAgICBzdGF0ZS0+Y29ycHVzID0gKHN0cnVjdCBmdXp6 X2NvcnB1cyAqKWRhdGFfcDsKKyAgICBzdGF0ZS0+ZGF0YV9udW0gPSBzaXplOworfQorCitpbnQg cnVudGVzdChzdHJ1Y3QgZnV6el9zdGF0ZSAqc3RhdGUpIHsKICAgICBpbnQgcmM7CiAKLSAgICAv KiBSZXNldCBhbGwgZ2xvYmFsIHN0YXRlIHZhcmlhYmxlcyAqLwotICAgIG1lbXNldCgmaW5wdXQs IDAsIHNpemVvZihpbnB1dCkpOworICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0ID0g JnN0YXRlLT5jdHh0OworICAgIAorICAgIHN0YXRlLT5vcHMgPSBhbGxfZnV6emVyX29wczsKKwor ICAgIGN0eHQtPmRhdGEgPSBzdGF0ZTsKKyAgICBjdHh0LT5yZWdzID0gJnN0YXRlLT5yZWdzOwor ICAgIGN0eHQtPmFkZHJfc2l6ZSA9IGN0eHQtPnNwX3NpemUgPSA4ICogc2l6ZW9mKHZvaWQgKik7 CisKKyAgICBzZXR1cF9zdGF0ZShjdHh0KTsKKworICAgIHNhbml0aXplX3N0YXRlKGN0eHQpOwor CisgICAgZGlzYWJsZV9ob29rcyhzdGF0ZSk7CisKKyAgICBkbyB7CisgICAgICAgIC8qIEZJWE1F OiBVbnRpbCB3ZSBhY3R1YWxseSBpbXBsZW1lbnQgU0lHRlBFIGhhbmRsaW5nIHByb3Blcmx5ICov CisgICAgICAgIHNldHVwX2ZwdV9leGNlcHRpb25faGFuZGxlcigpOworCisgICAgICAgIHNldF9z aXplcyhjdHh0KTsKKyAgICAgICAgZHVtcF9zdGF0ZShjdHh0KTsKKworICAgICAgICByYyA9IHg4 Nl9lbXVsYXRlKGN0eHQsICZzdGF0ZS0+b3BzKTsKKyAgICAgICAgcHJpbnRmKCJFbXVsYXRpb24g cmVzdWx0OiAlZFxuIiwgcmMpOworICAgIH0gd2hpbGUgKCByYyA9PSBYODZFTVVMX09LQVkgKTsK KworICAgIHJldHVybiAwOworfQorCit2b2lkIGNvbXBhcmVfc3RhdGVzKHN0cnVjdCBmdXp6X3N0 YXRlIHN0YXRlWzJdKQoreworICAgIC8vIEZpcnN0IHplcm8gYW55ICJpbnRlcm5hbCIgcG9pbnRl cnMKKyAgICBzdGF0ZVswXS5jb3JwdXMgPSBzdGF0ZVsxXS5jb3JwdXMgPSBOVUxMOworICAgIHN0 YXRlWzBdLmN0eHQuZGF0YSA9IHN0YXRlWzFdLmN0eHQuZGF0YSA9IE5VTEw7CisgICAgc3RhdGVb MF0uY3R4dC5yZWdzID0gc3RhdGVbMV0uY3R4dC5yZWdzID0gTlVMTDsKKworICAgIAorICAgIGlm ICggbWVtY21wKCZzdGF0ZVswXSwgJnN0YXRlWzFdLCBzaXplb2Yoc3RydWN0IGZ1enpfc3RhdGUp KSApCisgICAgeworICAgICAgICBpbnQgaTsKKworICAgICAgICBwcmludGYoIlN0YXRlIG1pc21h dGNoXG4iKTsKKworICAgICAgICBmb3IgKCBpPTA7IGk8NTsgaSsrKQorICAgICAgICAgICAgaWYg KHN0YXRlWzBdLmNyW2ldICE9IHN0YXRlWzFdLmNyW2ldKQorICAgICAgICAgICAgICAgIHByaW50 ZigiY3JbJWRdOiAlbHggIT0gJWx4XG4iLAorICAgICAgICAgICAgICAgICAgICAgICBpLCBzdGF0 ZVswXS5jcltpXSwgc3RhdGVbMV0uY3JbaV0pOworICAgICAgICAKKyAgICAgICAgZm9yICggaT0w OyBpPE1TUl9JTkRFWF9NQVg7IGkrKykKKyAgICAgICAgICAgIGlmIChzdGF0ZVswXS5tc3JbaV0g IT0gc3RhdGVbMV0ubXNyW2ldKQorICAgICAgICAgICAgICAgIHByaW50ZigibXNyWyVkXTogJWx4 ICE9ICVseFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgaSwgc3RhdGVbMF0ubXNyW2ldLCBz dGF0ZVsxXS5tc3JbaV0pOworICAgICAgICAKKyAgICAgICAgZm9yICggaT0wOyBpPFNFR19OVU07 IGkrKykKKyAgICAgICAgICAgIGlmICggbWVtY21wKCZzdGF0ZVswXS5zZWdtZW50c1tpXSwgJnN0 YXRlWzFdLnNlZ21lbnRzW2ldLCBzaXplb2Yoc3RhdGVbMF0uc2VnbWVudHNbMF0pKSApCisgICAg ICAgICAgICAgICAgcHJpbnRmKCJzZWdtZW50c1slZF0gZGlmZmVyIVxuIiwgaSk7CisKKyAgICAg ICAgaWYgKHN0YXRlWzBdLmRhdGFfbnVtICE9IHN0YXRlWzFdLmRhdGFfbnVtKQorICAgICAgICAg ICAgcHJpbnRmKCJkYXRhX251bTogJWx4ICE9ICAlbHhcbiIsIHN0YXRlWzBdLmRhdGFfbnVtLCBz dGF0ZVsxXS5kYXRhX251bSk7CisgICAgICAgIGlmIChzdGF0ZVswXS5kYXRhX2luZGV4ICE9IHN0 YXRlWzFdLmRhdGFfaW5kZXgpCisgICAgICAgICAgICBwcmludGYoImRhdGFfaW5kZXg6ICVseCAh PSAgJWx4XG4iLCBzdGF0ZVswXS5kYXRhX2luZGV4LCBzdGF0ZVsxXS5kYXRhX2luZGV4KTsKKwor ICAgICAgICBpZiAoIG1lbWNtcCgmc3RhdGVbMF0ucmVncywgJnN0YXRlWzFdLnJlZ3MsIHNpemVv ZihzdGF0ZVswXS5yZWdzKSkgKQorICAgICAgICB7CisgICAgICAgICAgICBwcmludGYoInJlZ2lz dGVycyBkaWZmZXIhXG4iKTsKKyAgICAgICAgICAgIC8qIFByaW50IElmIE5vdCBFcXVhbCAqLwor I2RlZmluZSBQSU5FKGVsZW0pXAorICAgICAgICAgICAgaWYgKCBzdGF0ZVswXS5lbGVtICE9IHN0 YXRlWzFdLmVsZW0gKSBcCisgICAgICAgICAgICAgICAgcHJpbnRmKCNlbGVtICIgZGlmZmVyOiAl bHggIT0gJWx4XG4iLCBcCisgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXN0 YXRlWzBdLmVsZW0sICh1bnNpZ25lZCBsb25nKXN0YXRlWzFdLmVsZW0pCisgICAgICAgICAgICBQ SU5FKHJlZ3MucjE1KTsKKyAgICAgICAgICAgIFBJTkUocmVncy5yMTQpOworICAgICAgICAgICAg UElORShyZWdzLnIxMyk7CisgICAgICAgICAgICBQSU5FKHJlZ3MucjEyKTsKKyAgICAgICAgICAg IFBJTkUocmVncy5yYnApOworICAgICAgICAgICAgUElORShyZWdzLnJieCk7CisgICAgICAgICAg ICBQSU5FKHJlZ3MucjEwKTsKKyAgICAgICAgICAgIFBJTkUocmVncy5yMTEpOworICAgICAgICAg ICAgUElORShyZWdzLnI5KTsKKyAgICAgICAgICAgIFBJTkUocmVncy5yOCk7CisgICAgICAgICAg ICBQSU5FKHJlZ3MucmF4KTsKKyAgICAgICAgICAgIFBJTkUocmVncy5yY3gpOworICAgICAgICAg ICAgUElORShyZWdzLnJkeCk7CisgICAgICAgICAgICBQSU5FKHJlZ3MucnNpKTsKKyAgICAgICAg ICAgIFBJTkUocmVncy5yZGkpOworCisgICAgICAgICAgICBmb3IgKCBpID0gb2Zmc2V0b2Yoc3Ry dWN0IGNwdV91c2VyX3JlZ3MsIGVycm9yX2NvZGUpIC8gc2l6ZW9mKHVuc2lnbmVkKTsKKyAgICAg ICAgICAgICAgICAgIGkgPCBzaXplb2Yoc3RhdGVbMV0ucmVncykvc2l6ZW9mKHVuc2lnbmVkKTsg aSsrICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIlslMDRsdV0gJTA4 eCAlMDh4XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgaSAqIHNpemVvZih1bnNpZ25lZCks ICgodW5zaWduZWQgKikmc3RhdGVbMF0ucmVncylbaV0sICgodW5zaWduZWQgKikmc3RhdGVbMV0u cmVncylbaV0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCBtZW1j bXAoJnN0YXRlWzBdLm9wcywgJnN0YXRlWzFdLm9wcywgc2l6ZW9mKHN0YXRlWzBdLm9wcykpICkK KyAgICAgICAgICAgIHByaW50Zigib3BzIGRpZmZlciFcbiIpOworCisgICAgICAgIGlmICggbWVt Y21wKCZzdGF0ZVswXS5jdHh0LCAmc3RhdGVbMV0uY3R4dCwgc2l6ZW9mKHN0YXRlWzBdLmN0eHQp KSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHByaW50ZigiY3R4dCBkaWZmZXJzIVxuIik7Cisg ICAgICAgICAgICBmb3IgKCBpID0gMDsgIGkgPCBzaXplb2Yoc3RhdGVbMF0uY3R4dCkvc2l6ZW9m KHVuc2lnbmVkKTsgaSsrICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwcmludGYo IlslMDRsdV0gJTA4eCAlMDh4XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgaSAqIHNpemVv Zih1bnNpZ25lZCksICgodW5zaWduZWQgKikmc3RhdGVbMF0uY3R4dClbaV0sICgodW5zaWduZWQg Kikmc3RhdGVbMV0uY3R4dClbaV0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg ICAgIH0KKworICAgICAgICBhYm9ydCgpOworICAgIH0KK30KKworYm9vbCBvcHRfcmVydW4gPSBm YWxzZTsKKworaW50IExMVk1GdXp6ZXJUZXN0T25lSW5wdXQoY29uc3QgdWludDhfdCAqZGF0YV9w LCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBzdHJ1Y3QgZnV6el9zdGF0ZSBzdGF0ZVsyXTsKIAogICAg IGlmICggc2l6ZSA8IGZ1enpfbWluaW1hbF9pbnB1dF9zaXplKCkgKQogICAgIHsKQEAgLTkwOCw3 ICsxMDI5LDcgQEAgaW50IExMVk1GdXp6ZXJUZXN0T25lSW5wdXQoY29uc3QgdWludDhfdCAqZGF0 YV9wLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCi0gICAgaWYgKCBz aXplID4gc2l6ZW9mKGlucHV0KSApCisgICAgaWYgKCBzaXplID4gc2l6ZW9mKHN0cnVjdCBmdXp6 X2NvcnB1cykgKQogICAgIHsKICAgICAgICAgcHJpbnRmKCJJbnB1dCB0b28gbGFyZ2VcbiIpOwog ICAgICAgICByZXR1cm4gMTsKQEAgLTkxNiwyNSArMTAzNywyNCBAQCBpbnQgTExWTUZ1enplclRl c3RPbmVJbnB1dChjb25zdCB1aW50OF90ICpkYXRhX3AsIHNpemVfdCBzaXplKQogCiAgICAgbWVt Y3B5KCZpbnB1dCwgZGF0YV9wLCBzaXplKTsKIAotICAgIHN0YXRlLmNvcnB1cyA9ICZpbnB1dDsK LSAgICBzdGF0ZS5kYXRhX251bSA9IHNpemU7Ci0KLSAgICBzZXR1cF9zdGF0ZSgmY3R4dCk7Cisg ICAgc2V0dXBfZnV6el9zdGF0ZSgmc3RhdGVbMF0sIGRhdGFfcCwgc2l6ZSk7CisgICAgCisgICAg aWYgKCBvcHRfcmVydW4gKQorICAgICAgICBwcmludGYoInx8fCBJTklUSUFMIFJVTiB8fHxcbiIp OworICAgIAorICAgIHJ1bnRlc3QoJnN0YXRlWzBdKTsKIAotICAgIHNhbml0aXplX2lucHV0KCZj dHh0KTsKKyAgICBpZiAoICFvcHRfcmVydW4gKQorICAgICAgICByZXR1cm4gMDsKIAotICAgIGRp c2FibGVfaG9va3MoJmN0eHQpOworICAgIC8qIFJlc2V0IGFsbCBnbG9iYWwgc3RhdGUgdmFyaWFi bGVzIGFnYWluICovCisgICAgc2V0dXBfZnV6el9zdGF0ZSgmc3RhdGVbMV0sIGRhdGFfcCwgc2l6 ZSk7CiAKLSAgICBkbyB7Ci0gICAgICAgIC8qIEZJWE1FOiBVbnRpbCB3ZSBhY3R1YWxseSBpbXBs ZW1lbnQgU0lHRlBFIGhhbmRsaW5nIHByb3Blcmx5ICovCi0gICAgICAgIHNldHVwX2ZwdV9leGNl cHRpb25faGFuZGxlcigpOworICAgIHByaW50ZigifHx8IFNFQ09ORCBSVU4gfHx8XG4iKTsKIAot ICAgICAgICBzZXRfc2l6ZXMoJmN0eHQpOwotICAgICAgICBkdW1wX3N0YXRlKCZjdHh0KTsKKyAg ICBydW50ZXN0KCZzdGF0ZVsxXSk7CiAKLSAgICAgICAgcmMgPSB4ODZfZW11bGF0ZSgmY3R4dCwg JnN0YXRlLm9wcyk7Ci0gICAgICAgIHByaW50ZigiRW11bGF0aW9uIHJlc3VsdDogJWRcbiIsIHJj KTsKLSAgICB9IHdoaWxlICggcmMgPT0gWDg2RU1VTF9PS0FZICk7CisgICAgY29tcGFyZV9zdGF0 ZXMoc3RhdGUpOwogCiAgICAgcmV0dXJuIDA7CiB9Ci0tIAoyLjE0LjEKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK