From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2B74D6E2A5 for ; Thu, 24 Oct 2019 11:05:58 +0000 (UTC) From: Petri Latvala Date: Thu, 24 Oct 2019 14:05:42 +0300 Message-Id: <20191024110546.25569-5-petri.latvala@intel.com> In-Reply-To: <20191024110546.25569-1-petri.latvala@intel.com> References: <20191024110546.25569-1-petri.latvala@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 4/8] runner: Parse dynamic subtest outputs and results List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Petri Latvala List-ID: SWYgYmluYXJ5ICdiaW4nIGhhcyBhIHN1YnRlc3QgJ3N1YicsIHdoaWNoIGhhcyBkeW5hbWljIHN1 YnRlc3RzICdmb28nCmFuZCAnYmFyJywgcmVzdWx0cy5qc29uIHdpbGwgbm93IGhhdmUgInN1YnRl c3RzIiBieSB0aGUgbmFtZXMKaWd0QGJpbkBzdWJAZm9vIGFuZCBpZ3RAYmluQHN1YkBiYXIsIHdp dGggZGF0YSBhcyBleHBlY3RlZCBvZiBub3JtYWwKc3VidGVzdHMuCgpTaWduZWQtb2ZmLWJ5OiBQ ZXRyaSBMYXR2YWxhIDxwZXRyaS5sYXR2YWxhQGludGVsLmNvbT4KLS0tCiBydW5uZXIvam9iX2xp c3QuYyAgICAgICB8ICAxMSArKwogcnVubmVyL2pvYl9saXN0LmggICAgICAgfCAgIDMgKwogcnVu bmVyL291dHB1dF9zdHJpbmdzLmggfCAgMjkgKysrLQogcnVubmVyL3Jlc3VsdGdlbi5jICAgICAg fCAzNzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQogNCBmaWxlcyBj aGFuZ2VkLCAzNDYgaW5zZXJ0aW9ucygrKSwgNzQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv cnVubmVyL2pvYl9saXN0LmMgYi9ydW5uZXIvam9iX2xpc3QuYwppbmRleCA1MjgzZmQ3Mi4uOTNj ZWRlNzUgMTAwNjQ0Ci0tLSBhL3J1bm5lci9qb2JfbGlzdC5jCisrKyBiL3J1bm5lci9qb2JfbGlz dC5jCkBAIC0zNTcsNiArMzU3LDE3IEBAIHZvaWQgZ2VuZXJhdGVfcGlnbGl0X25hbWUoY29uc3Qg Y2hhciAqYmluYXJ5LCBjb25zdCBjaGFyICpzdWJ0ZXN0LAogCWZyZWUobGNfc3VidGVzdCk7CiB9 CiAKK3ZvaWQgZ2VuZXJhdGVfcGlnbGl0X25hbWVfZm9yX2R5bmFtaWMoY29uc3QgY2hhciAqYmFz ZV9waWdsaXRfbmFtZSwKKwkJCQkgICAgICBjb25zdCBjaGFyICpkeW5hbWljX3N1YnRlc3QsCisJ CQkJICAgICAgY2hhciAqbmFtZWJ1Ziwgc2l6ZV90IG5hbWVidWZfc2l6ZSkKK3sKKwljaGFyICps Y19keW5hbWljID0gbG93ZXJjYXNlKGR5bmFtaWNfc3VidGVzdCk7CisKKwlzbnByaW50ZihuYW1l YnVmLCBuYW1lYnVmX3NpemUsICIlc0AlcyIsIGJhc2VfcGlnbGl0X25hbWUsIGxjX2R5bmFtaWMp OworCisJZnJlZShsY19keW5hbWljKTsKK30KKwogdm9pZCBpbml0X2pvYl9saXN0KHN0cnVjdCBq b2JfbGlzdCAqam9iX2xpc3QpCiB7CiAJbWVtc2V0KGpvYl9saXN0LCAwLCBzaXplb2YoKmpvYl9s aXN0KSk7CmRpZmYgLS1naXQgYS9ydW5uZXIvam9iX2xpc3QuaCBiL3J1bm5lci9qb2JfbGlzdC5o CmluZGV4IDM5YzliODYzLi4zMGI0YTI1MiAxMDA2NDQKLS0tIGEvcnVubmVyL2pvYl9saXN0LmgK KysrIGIvcnVubmVyL2pvYl9saXN0LmgKQEAgLTI5LDYgKzI5LDkgQEAgc3RydWN0IGpvYl9saXN0 CiAKIHZvaWQgZ2VuZXJhdGVfcGlnbGl0X25hbWUoY29uc3QgY2hhciAqYmluYXJ5LCBjb25zdCBj aGFyICpzdWJ0ZXN0LAogCQkJICBjaGFyICpuYW1lYnVmLCBzaXplX3QgbmFtZWJ1Zl9zaXplKTsK K3ZvaWQgZ2VuZXJhdGVfcGlnbGl0X25hbWVfZm9yX2R5bmFtaWMoY29uc3QgY2hhciAqYmFzZV9w aWdsaXRfbmFtZSwKKwkJCQkgICAgICBjb25zdCBjaGFyICpkeW5hbWljX3N1YnRlc3QsCisJCQkJ ICAgICAgY2hhciAqbmFtZWJ1Ziwgc2l6ZV90IG5hbWVidWZfc2l6ZSk7CiAKIHZvaWQgaW5pdF9q b2JfbGlzdChzdHJ1Y3Qgam9iX2xpc3QgKmpvYl9saXN0KTsKIHZvaWQgZnJlZV9qb2JfbGlzdChz dHJ1Y3Qgam9iX2xpc3QgKmpvYl9saXN0KTsKZGlmZiAtLWdpdCBhL3J1bm5lci9vdXRwdXRfc3Ry aW5ncy5oIGIvcnVubmVyL291dHB1dF9zdHJpbmdzLmgKaW5kZXggMWU1MmMyY2UuLjg5Mjg5NWVh IDEwMDY0NAotLS0gYS9ydW5uZXIvb3V0cHV0X3N0cmluZ3MuaAorKysgYi9ydW5uZXIvb3V0cHV0 X3N0cmluZ3MuaApAQCAtMTUsMTAgKzE1LDI4IEBAIHN0YXRpYyBjb25zdCBjaGFyIFNUQVJUSU5H X1NVQlRFU1RbXSA9ICJTdGFydGluZyBzdWJ0ZXN0OiAiOwogICoKICAqIEV4YW1wbGVzOgogICog U3VidGVzdCBzdWJ0ZXN0bmFtZTogU0tJUAotICogU3VidGVzdCBzdWJ0ZXN0bmFtZTogUEFTUyAo MC4wMDNzKQorICogU3VidGVzdCBzdWJ0ZXN0bmFtZTogU1VDQ0VTUyAoMC4wMDNzKQogICovCiBz dGF0aWMgY29uc3QgY2hhciBTVUJURVNUX1JFU1VMVFtdID0gIlN1YnRlc3QgIjsKIAorLyoKKyAq IE91dHB1dCB3aGVuIGEgZHluYW1pYyBzdWJ0ZXN0IGhhcyBiZWd1bi4gSXMgZm9sbG93ZWQgYnkg dGhlIHN1YnRlc3QgbmFtZS4KKyAqCisgKiBFeGFtcGxlOgorICogU3RhcnRpbmcgZHluYW1pYyBz dWJ0ZXN0OiBzdWJ0ZXN0bmFtZQorICovCitzdGF0aWMgY29uc3QgY2hhciBTVEFSVElOR19EWU5B TUlDX1NVQlRFU1RbXSA9ICJTdGFydGluZyBkeW5hbWljIHN1YnRlc3Q6ICI7CisKKy8qCisgKiBP dXRwdXQgd2hlbiBhIGR5bmFtaWMgc3VidGVzdCBoYXMgZW5kZWQuIElzIGZvbGxvd2VkIGJ5IHRo ZSBzdWJ0ZXN0IG5hbWUKKyAqIGFuZCBvcHRpb25hbGx5IGl0cyBydW50aW1lLgorICoKKyAqIEV4 YW1wbGVzOgorICogRHluYW1pYyBzdWJ0ZXN0IHN1YnRlc3RuYW1lOiBTS0lQCisgKiBEeW5hbWlj IHN1YnRlc3Qgc3VidGVzdG5hbWU6IFNVQ0NFU1MgKDAuMDAzcykKKyAqLworc3RhdGljIGNvbnN0 IGNoYXIgRFlOQU1JQ19TVUJURVNUX1JFU1VMVFtdID0gIkR5bmFtaWMgc3VidGVzdCAiOworCiAv KgogICogT3V0cHV0IGluIGRtZXNnIHdoZW4gYSBzdWJ0ZXN0IGhhcyBiZWdpbi4gSXMgZm9sbG93 ZWQgYnkgdGhlIHN1YnRlc3QgbmFtZS4KICAqCkBAIC0yNyw2ICs0NSwxNSBAQCBzdGF0aWMgY29u c3QgY2hhciBTVUJURVNUX1JFU1VMVFtdID0gIlN1YnRlc3QgIjsKICAqLwogc3RhdGljIGNvbnN0 IGNoYXIgU1RBUlRJTkdfU1VCVEVTVF9ETUVTR1tdID0gIjogc3RhcnRpbmcgc3VidGVzdCAiOwog CisvKgorICogT3V0cHV0IGluIGRtZXNnIHdoZW4gYSBkeW5hbWljIHN1YnRlc3QgaGFzIGJlZ2lu LiBJcyBmb2xsb3dlZCBieQorICogdGhlIHN1YnRlc3QgbmFtZS4KKyAqCisgKiBFeGFtcGxlOgor ICogW0lHVF0gdGVzdC1iaW5hcnktbmFtZTogc3RhcnRpbmcgZHluYW1pYyBzdWJ0ZXN0IHN1YnRl c3RuYW1lCisgKi8KK3N0YXRpYyBjb25zdCBjaGFyIFNUQVJUSU5HX0RZTkFNSUNfU1VCVEVTVF9E TUVTR1tdID0gIjogc3RhcnRpbmcgZHluYW1pYyBzdWJ0ZXN0ICI7CisKIC8qCiAgKiBPdXRwdXQg d2hlbiBhIHRlc3QgcHJvY2VzcyBpcyBleGVjdXRlZC4KICAqCmRpZmYgLS1naXQgYS9ydW5uZXIv cmVzdWx0Z2VuLmMgYi9ydW5uZXIvcmVzdWx0Z2VuLmMKaW5kZXggMGFkY2M4NzIuLmFhNDM4MDAw IDEwMDY0NAotLS0gYS9ydW5uZXIvcmVzdWx0Z2VuLmMKKysrIGIvcnVubmVyL3Jlc3VsdGdlbi5j CkBAIC0yMyw5ICsyMywxNiBAQCBfU3RhdGljX2Fzc2VydChJTkNPTVBMRVRFX0VYSVRDT0RFICE9 IElHVF9FWElUX1NLSVAsICJleGl0IGNvZGUgY2xhc2giKTsKIF9TdGF0aWNfYXNzZXJ0KElOQ09N UExFVEVfRVhJVENPREUgIT0gSUdUX0VYSVRfU1VDQ0VTUywgImV4aXQgY29kZSBjbGFzaCIpOwog X1N0YXRpY19hc3NlcnQoSU5DT01QTEVURV9FWElUQ09ERSAhPSBJR1RfRVhJVF9JTlZBTElELCAi ZXhpdCBjb2RlIGNsYXNoIik7CiAKLXN0cnVjdCBzdWJ0ZXN0cworc3RydWN0IHN1YnRlc3QKIHsK LQljaGFyICoqbmFtZXM7CisJY2hhciAqbmFtZTsKKwljaGFyICoqZHluYW1pY19uYW1lczsKKwlz aXplX3QgZHluYW1pY19zaXplOworfTsKKworc3RydWN0IHN1YnRlc3RfbGlzdAoreworCXN0cnVj dCBzdWJ0ZXN0ICpzdWJzOwogCXNpemVfdCBzaXplOwogfTsKIApAQCAtMzYsNiArNDMsNjcgQEAg c3RydWN0IHJlc3VsdHMKIAlzdHJ1Y3QganNvbl9vYmplY3QgKnJ1bnRpbWVzOwogfTsKIAorc3Rh dGljIHZvaWQgYWRkX2R5bmFtaWNfc3VidGVzdChzdHJ1Y3Qgc3VidGVzdCAqc3VidGVzdCwgY2hh ciAqZHluYW1pYykKK3sKKwlzaXplX3QgbGVuID0gc3RybGVuKGR5bmFtaWMpOworCXNpemVfdCBp OworCisJaWYgKGxlbiA9PSAwKQorCQlyZXR1cm47CisKKwlpZiAoZHluYW1pY1tsZW4gLSAxXSA9 PSAnXG4nKQorCQlkeW5hbWljW2xlbiAtIDFdID0gJ1wwJzsKKworCS8qIERvbid0IGFkZCBpZiB3 ZSBhbHJlYWR5IGhhdmUgdGhpcyBvbmUgKi8KKwlmb3IgKGkgPSAwOyBpIDwgc3VidGVzdC0+ZHlu YW1pY19zaXplOyBpKyspCisJCWlmICghc3RyY21wKGR5bmFtaWMsIHN1YnRlc3QtPmR5bmFtaWNf bmFtZXNbaV0pKQorCQkJcmV0dXJuOworCisJc3VidGVzdC0+ZHluYW1pY19zaXplKys7CisJc3Vi dGVzdC0+ZHluYW1pY19uYW1lcyA9IHJlYWxsb2Moc3VidGVzdC0+ZHluYW1pY19uYW1lcywgc2l6 ZW9mKCpzdWJ0ZXN0LT5keW5hbWljX25hbWVzKSAqIHN1YnRlc3QtPmR5bmFtaWNfc2l6ZSk7CisJ c3VidGVzdC0+ZHluYW1pY19uYW1lc1tzdWJ0ZXN0LT5keW5hbWljX3NpemUgLSAxXSA9IGR5bmFt aWM7Cit9CisKK3N0YXRpYyB2b2lkIGFkZF9zdWJ0ZXN0KHN0cnVjdCBzdWJ0ZXN0X2xpc3QgKnN1 YnRlc3RzLCBjaGFyICpzdWJ0ZXN0KQoreworCXNpemVfdCBsZW4gPSBzdHJsZW4oc3VidGVzdCk7 CisJc2l6ZV90IGk7CisKKwlpZiAobGVuID09IDApCisJCXJldHVybjsKKworCWlmIChzdWJ0ZXN0 W2xlbiAtIDFdID09ICdcbicpCisJCXN1YnRlc3RbbGVuIC0gMV0gPSAnXDAnOworCisJLyogRG9u J3QgYWRkIGlmIHdlIGFscmVhZHkgaGF2ZSB0aGlzIHN1YnRlc3QgKi8KKwlmb3IgKGkgPSAwOyBp IDwgc3VidGVzdHMtPnNpemU7IGkrKykKKwkJaWYgKCFzdHJjbXAoc3VidGVzdCwgc3VidGVzdHMt PnN1YnNbaV0ubmFtZSkpCisJCQlyZXR1cm47CisKKwlzdWJ0ZXN0cy0+c2l6ZSsrOworCXN1YnRl c3RzLT5zdWJzID0gcmVhbGxvYyhzdWJ0ZXN0cy0+c3Vicywgc2l6ZW9mKCpzdWJ0ZXN0cy0+c3Vi cykgKiBzdWJ0ZXN0cy0+c2l6ZSk7CisJbWVtc2V0KCZzdWJ0ZXN0cy0+c3Vic1tzdWJ0ZXN0cy0+ c2l6ZSAtIDFdLCAwLCBzaXplb2Yoc3RydWN0IHN1YnRlc3QpKTsKKwlzdWJ0ZXN0cy0+c3Vic1tz dWJ0ZXN0cy0+c2l6ZSAtIDFdLm5hbWUgPSBzdWJ0ZXN0OworfQorCitzdGF0aWMgdm9pZCBmcmVl X3N1YnRlc3Qoc3RydWN0IHN1YnRlc3QgKnN1YnRlc3QpCit7CisJc2l6ZV90IGk7CisKKwlmb3Ig KGkgPSAwOyBpIDwgc3VidGVzdC0+ZHluYW1pY19zaXplOyBpKyspCisJCWZyZWUoc3VidGVzdC0+ ZHluYW1pY19uYW1lc1tpXSk7CisJZnJlZShzdWJ0ZXN0LT5keW5hbWljX25hbWVzKTsKK30KKwor c3RhdGljIHZvaWQgZnJlZV9zdWJ0ZXN0cyhzdHJ1Y3Qgc3VidGVzdF9saXN0ICpzdWJ0ZXN0cykK K3sKKwlzaXplX3QgaTsKKworCWZvciAoaSA9IDA7IGkgPCBzdWJ0ZXN0cy0+c2l6ZTsgaSsrKQor CQlmcmVlX3N1YnRlc3QoJnN1YnRlc3RzLT5zdWJzW2ldKTsKKwlmcmVlKHN1YnRlc3RzLT5zdWJz KTsKK30KKwogLyoKICAqIEEgbG90IG9mIHN0cmluZyBoYW5kbGluZyBoZXJlIG9wZXJhdGVzIG9u IGFuIG1tYXBwZWQgYnVmZmVyLCBhbmQKICAqIHRodXMgd2UgY2FuJ3QgYXNzdW1lIG51bGwtdGVy bWluYXRlZCBzdHJpbmdzLiBCdWZmZXJzIHdpbGwgYmUKQEAgLTc3LDE3ICsxNDUsNiBAQCBzdGF0 aWMgY29uc3QgY2hhciAqbmV4dF9saW5lKGNvbnN0IGNoYXIgKmxpbmUsIGNvbnN0IGNoYXIgKmJ1 ZmVuZCkKIAkJcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBzaXplX3QgY291bnRfbGluZXMoY29u c3QgY2hhciAqYnVmLCBjb25zdCBjaGFyICpidWZlbmQpCi17Ci0Jc2l6ZV90IHJldCA9IDA7Ci0J d2hpbGUgKGJ1ZiA8IGJ1ZmVuZCAmJiAoYnVmID0gbWVtY2hyKGJ1ZiwgJ1xuJywgYnVmZW5kIC0g YnVmKSkgIT0gTlVMTCkgewotCQlyZXQrKzsKLQkJYnVmKys7Ci0JfQotCi0JcmV0dXJuIHJldDsK LX0KLQogc3RhdGljIHZvaWQgYXBwZW5kX2xpbmUoY2hhciAqKmJ1Ziwgc2l6ZV90ICpidWZsZW4s IGNoYXIgKmxpbmUpCiB7CiAJc2l6ZV90IGxpbmVsZW4gPSBzdHJsZW4obGluZSk7CkBAIC0xNDgs NiArMjA1LDcgQEAgc3RhdGljIHZvaWQgcGFyc2VfcmVzdWx0X3N0cmluZyhjb25zdCBjaGFyICpy ZXN1bHRzdHJpbmcsIHNpemVfdCBsZW4sIGNvbnN0IGNoYXIKIH0KIAogc3RhdGljIHZvaWQgcGFy c2Vfc3VidGVzdF9yZXN1bHQoY29uc3QgY2hhciAqc3VidGVzdCwKKwkJCQkgY29uc3QgY2hhciAq cmVzdWx0dGV4dHByZWZpeCwKIAkJCQkgY29uc3QgY2hhciAqKnJlc3VsdCwKIAkJCQkgZG91Ymxl ICp0aW1lLAogCQkJCSBjb25zdCBjaGFyICpsaW5lLApAQCAtMTc1LDYgKzIzMywxMCBAQCBzdGF0 aWMgdm9pZCBwYXJzZV9zdWJ0ZXN0X3Jlc3VsdChjb25zdCBjaGFyICpzdWJ0ZXN0LAogCSAqCiAJ ICogRXhhbXBsZToKIAkgKiBTdWJ0ZXN0IHN1YnRlc3RuYW1lOiBQQVNTICgwLjAwM3MpCisJICoK KwkgKiBGb3IgZHluYW1pYyBzdWJ0ZXN0cyB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXBwbGllcywgYnV0 IHRoZQorCSAqIHN0cmluZyAiU3VidGVzdCAiIGlzICJEeW5hbWljIHN1YnRlc3QgIgorCSAqIGlu c3RlYWQuIChgRFlOQU1JQ19TVUJURVNUX1JFU1VMVGAgZnJvbSBvdXRwdXRfc3RyaW5ncy5oKQog CSAqLwogCiAJaWYgKCFsaW5lKQpAQCAtMTgzLDEzICsyNDUsMTMgQEAgc3RhdGljIHZvaWQgcGFy c2Vfc3VidGVzdF9yZXN1bHQoY29uc3QgY2hhciAqc3VidGVzdCwKIAlsaW5lX2VuZCA9IG1lbWNo cihsaW5lLCAnXG4nLCBidWZlbmQgLSBsaW5lKTsKIAlsaW5lbGVuID0gbGluZV9lbmQgIT0gTlVM TCA/IGxpbmVfZW5kIC0gbGluZSA6IGJ1ZmVuZCAtIGxpbmU7CiAKLQlpZiAoc3RybGVuKFNVQlRF U1RfUkVTVUxUKSArIHN1YnRlc3RsZW4gKyBzdHJsZW4oIjogIikgPiBsaW5lbGVuIHx8Ci0JICAg IHN0cm5jbXAobGluZSArIHN0cmxlbihTVUJURVNUX1JFU1VMVCksIHN1YnRlc3QsIHN1YnRlc3Rs ZW4pKSB7CisJaWYgKHN0cmxlbihyZXN1bHR0ZXh0cHJlZml4KSArIHN1YnRlc3RsZW4gKyBzdHJs ZW4oIjogIikgPiBsaW5lbGVuIHx8CisJICAgIHN0cm5jbXAobGluZSArIHN0cmxlbihyZXN1bHR0 ZXh0cHJlZml4KSwgc3VidGVzdCwgc3VidGVzdGxlbikpIHsKIAkJLyogVGhpcyBpcyBub3QgdGhl IGNvcnJlY3QgcmVzdWx0IGxpbmUgKi8KIAkJcmV0dXJuOwogCX0KIAotCXJlc3VsdHN0cmluZyA9 IGxpbmUgKyBzdHJsZW4oU1VCVEVTVF9SRVNVTFQpICsgc3VidGVzdGxlbiArIHN0cmxlbigiOiAi KTsKKwlyZXN1bHRzdHJpbmcgPSBsaW5lICsgc3RybGVuKHJlc3VsdHRleHRwcmVmaXgpICsgc3Vi dGVzdGxlbiArIHN0cmxlbigiOiAiKTsKIAlwYXJzZV9yZXN1bHRfc3RyaW5nKHJlc3VsdHN0cmlu ZywgbGluZWxlbiAtIChyZXN1bHRzdHJpbmcgLSBsaW5lKSwgcmVzdWx0LCB0aW1lKTsKIH0KIApA QCAtMzA0LDcgKzM2Niw3IEBAIHN0YXRpYyB2b2lkIGZyZWVfbWF0Y2hlcyhzdHJ1Y3QgbWF0Y2hl cyAqbWF0Y2hlcykKIH0KIAogc3RhdGljIGJvb2wgZmlsbF9mcm9tX291dHB1dChpbnQgZmQsIGNv bnN0IGNoYXIgKmJpbmFyeSwgY29uc3QgY2hhciAqa2V5LAotCQkJICAgICBzdHJ1Y3Qgc3VidGVz dHMgKnN1YnRlc3RzLAorCQkJICAgICBzdHJ1Y3Qgc3VidGVzdF9saXN0ICpzdWJ0ZXN0cywKIAkJ CSAgICAgc3RydWN0IGpzb25fb2JqZWN0ICp0ZXN0cykKIHsKIAljaGFyICpidWYsICpidWZlbmQs ICpudWxsY2hyOwpAQCAtMzE2LDYgKzM3OCw4IEBAIHN0YXRpYyBib29sIGZpbGxfZnJvbV9vdXRw dXQoaW50IGZkLCBjb25zdCBjaGFyICpiaW5hcnksIGNvbnN0IGNoYXIgKmtleSwKIAljb25zdCBj aGFyICpuZWVkbGVzW10gPSB7CiAJCVNUQVJUSU5HX1NVQlRFU1QsCiAJCVNVQlRFU1RfUkVTVUxU LAorCQlTVEFSVElOR19EWU5BTUlDX1NVQlRFU1QsCisJCURZTkFNSUNfU1VCVEVTVF9SRVNVTFQs CiAJCU5VTEwKIAl9OwogCXN0cnVjdCBtYXRjaGVzIG1hdGNoZXMgPSB7fTsKQEAgLTM3NSwxMSAr NDM5LDExIEBAIHN0YXRpYyBib29sIGZpbGxfZnJvbV9vdXRwdXQoaW50IGZkLCBjb25zdCBjaGFy ICpiaW5hcnksIGNvbnN0IGNoYXIgKmtleSwKIAkJaW50IGJlZ2luX2xlbjsKIAkJaW50IHJlc3Vs dF9sZW47CiAKLQkJZ2VuZXJhdGVfcGlnbGl0X25hbWUoYmluYXJ5LCBzdWJ0ZXN0cy0+bmFtZXNb aV0sIHBpZ2xpdF9uYW1lLCBzaXplb2YocGlnbGl0X25hbWUpKTsKKwkJZ2VuZXJhdGVfcGlnbGl0 X25hbWUoYmluYXJ5LCBzdWJ0ZXN0cy0+c3Vic1tpXS5uYW1lLCBwaWdsaXRfbmFtZSwgc2l6ZW9m KHBpZ2xpdF9uYW1lKSk7CiAJCWN1cnJlbnRfdGVzdCA9IGdldF9vcl9jcmVhdGVfanNvbl9vYmpl Y3QodGVzdHMsIHBpZ2xpdF9uYW1lKTsKIAotCQliZWdpbl9sZW4gPSBhc3ByaW50ZigmdGhpc19z dWJfYmVnaW4sICIlcyVzXG4iLCBTVEFSVElOR19TVUJURVNULCBzdWJ0ZXN0cy0+bmFtZXNbaV0p OwotCQlyZXN1bHRfbGVuID0gYXNwcmludGYoJnRoaXNfc3ViX3Jlc3VsdCwgIiVzJXM6ICIsIFNV QlRFU1RfUkVTVUxULCBzdWJ0ZXN0cy0+bmFtZXNbaV0pOworCQliZWdpbl9sZW4gPSBhc3ByaW50 ZigmdGhpc19zdWJfYmVnaW4sICIlcyVzXG4iLCBTVEFSVElOR19TVUJURVNULCBzdWJ0ZXN0cy0+ c3Vic1tpXS5uYW1lKTsKKwkJcmVzdWx0X2xlbiA9IGFzcHJpbnRmKCZ0aGlzX3N1Yl9yZXN1bHQs ICIlcyVzOiAiLCBTVUJURVNUX1JFU1VMVCwgc3VidGVzdHMtPnN1YnNbaV0ubmFtZSk7CiAKIAkJ aWYgKGJlZ2luX2xlbiA8IDAgfHwgcmVzdWx0X2xlbiA8IDApIHsKIAkJCWZwcmludGYoc3RkZXJy LCAiRmFpbHVyZSBnZW5lcmF0aW5nIHN0cmluZ3NcbiIpOwpAQCAtNDM4LDggKzUwMiwxMyBAQCBz dGF0aWMgYm9vbCBmaWxsX2Zyb21fb3V0cHV0KGludCBmZCwgY29uc3QgY2hhciAqYmluYXJ5LCBj b25zdCBjaGFyICprZXksCiAJCQkgKiBJbmNvbXBsZXRlIHJlc3VsdC4gSW5jbHVkZSBvdXRwdXQg dXAgdG8gdGhlCiAJCQkgKiBuZXh0IHN0YXJ0aW5nIHN1YnRlc3Qgb3IgcmVzdWx0LgogCQkJICov Ci0JCQlpZiAoYmVnaW5faWR4IDwgbWF0Y2hlcy5zaXplIC0gMSkKLQkJCQllbmQgPSBtYXRjaGVz Lml0ZW1zW2JlZ2luX2lkeCArIDFdLndoZXJlOworCQkJZm9yIChrID0gYmVnaW5faWR4ICsgMTsg ayA8IG1hdGNoZXMuc2l6ZTsgaysrKSB7CisJCQkJaWYgKG1hdGNoZXMuaXRlbXNba10ud2hhdCA9 PSBTVEFSVElOR19TVUJURVNUIHx8CisJCQkJICAgIG1hdGNoZXMuaXRlbXNba10ud2hhdCA9PSBT VUJURVNUX1JFU1VMVCkKKwkJCQkJYnJlYWs7CisJCQl9CisJCQlpZiAoayA8IG1hdGNoZXMuc2l6 ZSkKKwkJCQllbmQgPSBtYXRjaGVzLml0ZW1zW2tdLndoZXJlOwogCQkJZWxzZQogCQkJCWVuZCA9 IGJ1ZmVuZDsKIAkJfSBlbHNlIHsKQEAgLTQ2MCwxMyArNTI5LDEwNCBAQCBzdGF0aWMgYm9vbCBm aWxsX2Zyb21fb3V0cHV0KGludCBmZCwgY29uc3QgY2hhciAqYmluYXJ5LCBjb25zdCBjaGFyICpr ZXksCiAJCX0KIAogCQlpZiAoIWpzb25fb2JqZWN0X29iamVjdF9nZXRfZXgoY3VycmVudF90ZXN0 LCAicmVzdWx0IiwgTlVMTCkpIHsKLQkJCXBhcnNlX3N1YnRlc3RfcmVzdWx0KHN1YnRlc3RzLT5u YW1lc1tpXSwKKwkJCXBhcnNlX3N1YnRlc3RfcmVzdWx0KHN1YnRlc3RzLT5zdWJzW2ldLm5hbWUs CisJCQkJCSAgICAgU1VCVEVTVF9SRVNVTFQsCiAJCQkJCSAgICAgJnJlc3VsdHRleHQsICZ0aW1l LAogCQkJCQkgICAgIHJlc3VsdF9pZHggPCAwID8gTlVMTCA6IG1hdGNoZXMuaXRlbXNbcmVzdWx0 X2lkeF0ud2hlcmUsCiAJCQkJCSAgICAgZW5kKTsKIAkJCXNldF9yZXN1bHQoY3VycmVudF90ZXN0 LCByZXN1bHR0ZXh0KTsKIAkJCXNldF9ydW50aW1lKGN1cnJlbnRfdGVzdCwgdGltZSk7CiAJCX0K KworCQkvKgorCQkgKiBMb29rIGZvciBkeW5hbWljIHN1YnRlc3RzOiBJZiBhbnksIHRoZXkgYXJl IHdpdGhpbgorCQkgKiB0aGUgc3VidGVzdCBvdXRwdXQuCisJCSAqLworCQlpZiAocmVzdWx0X2lk eCA8IDApIHsKKwkJCS8qIElmIHRoZSBzdWJ0ZXN0IGl0c2VsZiBpcyBpbmNvbXBsZXRlLCBzdG9w IGF0IHRoZSBuZXh0IHN0YXJ0IG9mIGEgc3VidGVzdCAqLworCQkJZm9yIChyZXN1bHRfaWR4ID0g YmVnaW5faWR4ICsgMTsKKwkJCSAgICAgcmVzdWx0X2lkeCA8IG1hdGNoZXMuc2l6ZTsKKwkJCSAg ICAgcmVzdWx0X2lkeCsrKSB7CisJCQkJaWYgKG1hdGNoZXMuaXRlbXNbcmVzdWx0X2lkeF0ud2hh dCA9PSBTVEFSVElOR19TVUJURVNUKQorCQkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCWZvciAo ayA9IGJlZ2luX2lkeCArIDE7IGsgPCByZXN1bHRfaWR4OyBrKyspIHsKKwkJCWlmIChtYXRjaGVz Lml0ZW1zW2tdLndoYXQgPT0gU1RBUlRJTkdfRFlOQU1JQ19TVUJURVNUKSB7CisJCQkJc3RydWN0 IGpzb25fb2JqZWN0ICpjdXJyZW50X2R5bmFtaWNfdGVzdCA9IE5VTEw7CisJCQkJaW50IGR5bl9y ZXN1bHRfaWR4ID0gLTE7CisJCQkJY2hhciBkeW5hbWljX25hbWVbMjU2XTsKKwkJCQljaGFyIGR5 bmFtaWNfcGlnbGl0X25hbWVbMjU2XTsKKwkJCQljaGFyICp0aGlzX2R5bl9yZXN1bHQ7CisJCQkJ aW50IGR5bl9yZXN1bHRfbGVuOworCQkJCWNvbnN0IGNoYXIgKmR5bmJlZywgKmR5bmVuZDsKKwkJ CQlpbnQgbjsKKworCQkJCWlmIChzc2NhbmYobWF0Y2hlcy5pdGVtc1trXS53aGVyZSArIHN0cmxl bihTVEFSVElOR19EWU5BTUlDX1NVQlRFU1QpLCAiJXMiLCBkeW5hbWljX25hbWUpICE9IDEpIHsK KwkJCQkJLyogQ2Fubm90IHBhcnNlIG5hbWUsIGp1c3QgaWdub3JlIHRoaXMgb25lICovCisJCQkJ CWNvbnRpbnVlOworCQkJCX0KKworCQkJCWR5bl9yZXN1bHRfbGVuID0gYXNwcmludGYoJnRoaXNf ZHluX3Jlc3VsdCwgIiVzJXM6ICIsIERZTkFNSUNfU1VCVEVTVF9SRVNVTFQsIGR5bmFtaWNfbmFt ZSk7CisJCQkJaWYgKGR5bl9yZXN1bHRfbGVuIDwgMCkKKwkJCQkJY29udGludWU7CisKKwkJCQlm b3IgKG4gPSBrICsgMTsgbiA8IHJlc3VsdF9pZHg7IG4rKykgeworCQkJCQlpZiAobWF0Y2hlcy5p dGVtc1tuXS53aGF0ID09IERZTkFNSUNfU1VCVEVTVF9SRVNVTFQgJiYKKwkJCQkJICAgICFtZW1j bXAobWF0Y2hlcy5pdGVtc1tuXS53aGVyZSwKKwkJCQkJCSAgICB0aGlzX2R5bl9yZXN1bHQsCisJ CQkJCQkgICAgbWluKGR5bl9yZXN1bHRfbGVuLCBidWZlbmQgLSBtYXRjaGVzLml0ZW1zW25dLndo ZXJlKSkpIHsKKwkJCQkJCWR5bl9yZXN1bHRfaWR4ID0gbjsKKwkJCQkJCWJyZWFrOworCQkJCQl9 CisJCQkJfQorCisJCQkJZnJlZSh0aGlzX2R5bl9yZXN1bHQpOworCisJCQkJaWYgKGsgPT0gMCkK KwkJCQkJZHluYmVnID0gYmVnOworCQkJCWVsc2UKKwkJCQkJZHluYmVnID0gbmV4dF9saW5lKG1h dGNoZXMuaXRlbXNbayAtIDFdLndoZXJlLCBlbmQpOworCisJCQkJaWYgKGR5bl9yZXN1bHRfaWR4 IDwgMCkgeworCQkJCQlpZiAoayA8IG1hdGNoZXMuc2l6ZSAtIDEpCisJCQkJCQlkeW5lbmQgPSBt YXRjaGVzLml0ZW1zW2sgKyAxXS53aGVyZTsKKwkJCQkJZWxzZQorCQkJCQkJZHluZW5kID0gZW5k OworCQkJCX0gZWxzZSB7CisJCQkJCWlmIChkeW5fcmVzdWx0X2lkeCA8IG1hdGNoZXMuc2l6ZSAt IDEpCisJCQkJCQlkeW5lbmQgPSBtYXRjaGVzLml0ZW1zW2R5bl9yZXN1bHRfaWR4ICsgMV0ud2hl cmU7CisJCQkJCWVsc2UKKwkJCQkJCWR5bmVuZCA9IGVuZDsKKwkJCQl9CisKKwkJCQlnZW5lcmF0 ZV9waWdsaXRfbmFtZV9mb3JfZHluYW1pYyhwaWdsaXRfbmFtZSwgZHluYW1pY19uYW1lLCBkeW5h bWljX3BpZ2xpdF9uYW1lLCBzaXplb2YoZHluYW1pY19waWdsaXRfbmFtZSkpOworCisJCQkJYWRk X2R5bmFtaWNfc3VidGVzdCgmc3VidGVzdHMtPnN1YnNbaV0sIHN0cmR1cChkeW5hbWljX25hbWUp KTsKKwkJCQljdXJyZW50X2R5bmFtaWNfdGVzdCA9IGdldF9vcl9jcmVhdGVfanNvbl9vYmplY3Qo dGVzdHMsIGR5bmFtaWNfcGlnbGl0X25hbWUpOworCisJCQkJanNvbl9vYmplY3Rfb2JqZWN0X2Fk ZChjdXJyZW50X2R5bmFtaWNfdGVzdCwga2V5LAorCQkJCQkJICAgICAgIGpzb25fb2JqZWN0X25l d19zdHJpbmdfbGVuKGR5bmJlZywgZHluZW5kIC0gZHluYmVnKSk7CisJCQkJaWYgKGlndF92ZXJz aW9uKQorCQkJCQlqc29uX29iamVjdF9vYmplY3RfYWRkKGN1cnJlbnRfZHluYW1pY190ZXN0LCAi aWd0LXZlcnNpb24iLAorCQkJCQkJCSAgICAgICBqc29uX29iamVjdF9uZXdfc3RyaW5nX2xlbihp Z3RfdmVyc2lvbiwKKwkJCQkJCQkJCQkJICBpZ3RfdmVyc2lvbl9sZW4pKTsKKworCQkJCWlmICgh anNvbl9vYmplY3Rfb2JqZWN0X2dldF9leChjdXJyZW50X2R5bmFtaWNfdGVzdCwgInJlc3VsdCIs IE5VTEwpKSB7CisJCQkJCWNvbnN0IGNoYXIgKmR5bnJlc3VsdHRleHQ7CisJCQkJCWRvdWJsZSBk eW50aW1lOworCisJCQkJCXBhcnNlX3N1YnRlc3RfcmVzdWx0KGR5bmFtaWNfbmFtZSwKKwkJCQkJ CQkgICAgIERZTkFNSUNfU1VCVEVTVF9SRVNVTFQsCisJCQkJCQkJICAgICAmZHlucmVzdWx0dGV4 dCwgJmR5bnRpbWUsCisJCQkJCQkJICAgICBkeW5fcmVzdWx0X2lkeCA8IDAgPyBOVUxMIDogbWF0 Y2hlcy5pdGVtc1tkeW5fcmVzdWx0X2lkeF0ud2hlcmUsCisJCQkJCQkJICAgICBkeW5lbmQpOwor CQkJCQlzZXRfcmVzdWx0KGN1cnJlbnRfZHluYW1pY190ZXN0LCBkeW5yZXN1bHR0ZXh0KTsKKwkJ CQkJc2V0X3J1bnRpbWUoY3VycmVudF9keW5hbWljX3Rlc3QsIGR5bnRpbWUpOworCQkJCX0KKwkJ CX0KKwkJfQogCX0KIAogCWZyZWVfbWF0Y2hlcygmbWF0Y2hlcyk7CkBAIC02MTQsMTggKzc3NCwy OCBAQCBzdGF0aWMgdm9pZCBhZGRfZG1lc2coc3RydWN0IGpzb25fb2JqZWN0ICpvYmosCiAKIHN0 YXRpYyB2b2lkIGFkZF9lbXB0eV9kbWVzZ3Nfd2hlcmVfbWlzc2luZyhzdHJ1Y3QganNvbl9vYmpl Y3QgKnRlc3RzLAogCQkJCQkgICBjaGFyICpiaW5hcnksCi0JCQkJCSAgIHN0cnVjdCBzdWJ0ZXN0 cyAqc3VidGVzdHMpCisJCQkJCSAgIHN0cnVjdCBzdWJ0ZXN0X2xpc3QgKnN1YnRlc3RzKQogewog CXN0cnVjdCBqc29uX29iamVjdCAqY3VycmVudF90ZXN0OwogCWNoYXIgcGlnbGl0X25hbWVbMjU2 XTsKLQlzaXplX3QgaTsKKwljaGFyIGR5bmFtaWNfcGlnbGl0X25hbWVbMjU2XTsKKwlzaXplX3Qg aSwgazsKIAogCWZvciAoaSA9IDA7IGkgPCBzdWJ0ZXN0cy0+c2l6ZTsgaSsrKSB7Ci0JCWdlbmVy YXRlX3BpZ2xpdF9uYW1lKGJpbmFyeSwgc3VidGVzdHMtPm5hbWVzW2ldLCBwaWdsaXRfbmFtZSwg c2l6ZW9mKHBpZ2xpdF9uYW1lKSk7CisJCWdlbmVyYXRlX3BpZ2xpdF9uYW1lKGJpbmFyeSwgc3Vi dGVzdHMtPnN1YnNbaV0ubmFtZSwgcGlnbGl0X25hbWUsIHNpemVvZihwaWdsaXRfbmFtZSkpOwog CQljdXJyZW50X3Rlc3QgPSBnZXRfb3JfY3JlYXRlX2pzb25fb2JqZWN0KHRlc3RzLCBwaWdsaXRf bmFtZSk7CiAJCWlmICghanNvbl9vYmplY3Rfb2JqZWN0X2dldF9leChjdXJyZW50X3Rlc3QsICJk bWVzZyIsIE5VTEwpKSB7CiAJCQlhZGRfZG1lc2coY3VycmVudF90ZXN0LCAiIiwgMCwgTlVMTCwg MCk7CiAJCX0KKworCQlmb3IgKGsgPSAwOyBrIDwgc3VidGVzdHMtPnN1YnNbaV0uZHluYW1pY19z aXplOyBrKyspIHsKKwkJCWdlbmVyYXRlX3BpZ2xpdF9uYW1lX2Zvcl9keW5hbWljKHBpZ2xpdF9u YW1lLCBzdWJ0ZXN0cy0+c3Vic1tpXS5keW5hbWljX25hbWVzW2tdLAorCQkJCQkJCSBkeW5hbWlj X3BpZ2xpdF9uYW1lLCBzaXplb2YoZHluYW1pY19waWdsaXRfbmFtZSkpOworCQkJY3VycmVudF90 ZXN0ID0gZ2V0X29yX2NyZWF0ZV9qc29uX29iamVjdCh0ZXN0cywgZHluYW1pY19waWdsaXRfbmFt ZSk7CisJCQlpZiAoIWpzb25fb2JqZWN0X29iamVjdF9nZXRfZXgoY3VycmVudF90ZXN0LCAiZG1l c2ciLCBOVUxMKSkgeworCQkJCWFkZF9kbWVzZyhjdXJyZW50X3Rlc3QsICIiLCAwLCBOVUxMLCAw KTsKKwkJCX0KKwkJfQogCX0KIAogfQpAQCAtNjMzLDE0ICs4MDMsMjAgQEAgc3RhdGljIHZvaWQg YWRkX2VtcHR5X2RtZXNnc193aGVyZV9taXNzaW5nKHN0cnVjdCBqc29uX29iamVjdCAqdGVzdHMs CiBzdGF0aWMgYm9vbCBmaWxsX2Zyb21fZG1lc2coaW50IGZkLAogCQkJICAgIHN0cnVjdCBzZXR0 aW5ncyAqc2V0dGluZ3MsCiAJCQkgICAgY2hhciAqYmluYXJ5LAotCQkJICAgIHN0cnVjdCBzdWJ0 ZXN0cyAqc3VidGVzdHMsCisJCQkgICAgc3RydWN0IHN1YnRlc3RfbGlzdCAqc3VidGVzdHMsCiAJ CQkgICAgc3RydWN0IGpzb25fb2JqZWN0ICp0ZXN0cykKIHsKLQljaGFyICpsaW5lID0gTlVMTCwg Kndhcm5pbmdzID0gTlVMTCwgKmRtZXNnID0gTlVMTDsKLQlzaXplX3QgbGluZWxlbiA9IDAsIHdh cm5pbmdzbGVuID0gMCwgZG1lc2dsZW4gPSAwOworCWNoYXIgKmxpbmUgPSBOVUxMOworCWNoYXIg Kndhcm5pbmdzID0gTlVMTCwgKmR5bmFtaWNfd2FybmluZ3MgPSBOVUxMOworCWNoYXIgKmRtZXNn ID0gTlVMTCwgKmR5bmFtaWNfZG1lc2cgPSBOVUxMOworCXNpemVfdCBsaW5lbGVuID0gMDsKKwlz aXplX3Qgd2FybmluZ3NsZW4gPSAwLCBkeW5hbWljX3dhcm5pbmdzX2xlbiA9IDA7CisJc2l6ZV90 IGRtZXNnbGVuID0gMCwgZHluYW1pY19kbWVzZ19sZW4gPSAwOwogCXN0cnVjdCBqc29uX29iamVj dCAqY3VycmVudF90ZXN0ID0gTlVMTDsKKwlzdHJ1Y3QganNvbl9vYmplY3QgKmN1cnJlbnRfZHlu YW1pY190ZXN0ID0gTlVMTDsKIAlGSUxFICpmID0gZmRvcGVuKGZkLCAiciIpOwogCWNoYXIgcGln bGl0X25hbWVbMjU2XTsKKwljaGFyIGR5bmFtaWNfcGlnbGl0X25hbWVbMjU2XTsKIAlzc2l6ZV90 IHJlYWQ7CiAJc2l6ZV90IGk7CiAJR1JlZ2V4ICpyZTsKQEAgLTY1OSw3ICs4MzUsNyBAQCBzdGF0 aWMgYm9vbCBmaWxsX2Zyb21fZG1lc2coaW50IGZkLAogCQl1bnNpZ25lZCBmbGFnczsKIAkJdW5z aWduZWQgbG9uZyBsb25nIHRzX3VzZWM7CiAJCWNoYXIgY29udGludWF0aW9uOwotCQljaGFyICpt ZXNzYWdlLCAqc3VidGVzdDsKKwkJY2hhciAqbWVzc2FnZSwgKnN1YnRlc3QsICpkeW5hbWljX3N1 YnRlc3Q7CiAKIAkJaWYgKCFwYXJzZV9kbWVzZ19saW5lKGxpbmUsICZmbGFncywgJnRzX3VzZWMs ICZjb250aW51YXRpb24sICZtZXNzYWdlKSkKIAkJCWNvbnRpbnVlOwpAQCAtNjc1LDYgKzg1MSwx NSBAQCBzdGF0aWMgYm9vbCBmaWxsX2Zyb21fZG1lc2coaW50IGZkLAogCQkJCWZyZWUod2Fybmlu Z3MpOwogCQkJCWRtZXNnID0gd2FybmluZ3MgPSBOVUxMOwogCQkJCWRtZXNnbGVuID0gd2Fybmlu Z3NsZW4gPSAwOworCisJCQkJaWYgKGN1cnJlbnRfZHluYW1pY190ZXN0ICE9IE5VTEwpCisJCQkJ CWFkZF9kbWVzZyhjdXJyZW50X2R5bmFtaWNfdGVzdCwgZHluYW1pY19kbWVzZywgZHluYW1pY19k bWVzZ19sZW4sIGR5bmFtaWNfd2FybmluZ3MsIGR5bmFtaWNfd2FybmluZ3NfbGVuKTsKKworCQkJ CWZyZWUoZHluYW1pY19kbWVzZyk7CisJCQkJZnJlZShkeW5hbWljX3dhcm5pbmdzKTsKKwkJCQlk eW5hbWljX2RtZXNnID0gZHluYW1pY193YXJuaW5ncyA9IE5VTEw7CisJCQkJZHluYW1pY19kbWVz Z19sZW4gPSBkeW5hbWljX3dhcm5pbmdzX2xlbiA9IDA7CisJCQkJY3VycmVudF9keW5hbWljX3Rl c3QgPSBOVUxMOwogCQkJfQogCiAJCQlzdWJ0ZXN0ICs9IHN0cmxlbihTVEFSVElOR19TVUJURVNU X0RNRVNHKTsKQEAgLTY4MiwyNCArODY3LDUwIEBAIHN0YXRpYyBib29sIGZpbGxfZnJvbV9kbWVz ZyhpbnQgZmQsCiAJCQljdXJyZW50X3Rlc3QgPSBnZXRfb3JfY3JlYXRlX2pzb25fb2JqZWN0KHRl c3RzLCBwaWdsaXRfbmFtZSk7CiAJCX0KIAorCQlpZiAoY3VycmVudF90ZXN0ICE9IE5VTEwgJiYK KwkJICAgIChkeW5hbWljX3N1YnRlc3QgPSBzdHJzdHIobWVzc2FnZSwgU1RBUlRJTkdfRFlOQU1J Q19TVUJURVNUX0RNRVNHKSkgIT0gTlVMTCkgeworCQkJaWYgKGN1cnJlbnRfZHluYW1pY190ZXN0 ICE9IE5VTEwpIHsKKwkJCQkvKiBEb25lIHdpdGggdGhlIHByZXZpb3VzIGR5bmFtaWMgc3VidGVz dCwgZmlsZSB1cCAqLworCQkJCWFkZF9kbWVzZyhjdXJyZW50X2R5bmFtaWNfdGVzdCwgZHluYW1p Y19kbWVzZywgZHluYW1pY19kbWVzZ19sZW4sIGR5bmFtaWNfd2FybmluZ3MsIGR5bmFtaWNfd2Fy bmluZ3NfbGVuKTsKKworCQkJCWZyZWUoZHluYW1pY19kbWVzZyk7CisJCQkJZnJlZShkeW5hbWlj X3dhcm5pbmdzKTsKKwkJCQlkeW5hbWljX2RtZXNnID0gZHluYW1pY193YXJuaW5ncyA9IE5VTEw7 CisJCQkJZHluYW1pY19kbWVzZ19sZW4gPSBkeW5hbWljX3dhcm5pbmdzX2xlbiA9IDA7CisJCQl9 CisKKwkJCWR5bmFtaWNfc3VidGVzdCArPSBzdHJsZW4oU1RBUlRJTkdfRFlOQU1JQ19TVUJURVNU X0RNRVNHKTsKKwkJCWdlbmVyYXRlX3BpZ2xpdF9uYW1lX2Zvcl9keW5hbWljKHBpZ2xpdF9uYW1l LCBkeW5hbWljX3N1YnRlc3QsIGR5bmFtaWNfcGlnbGl0X25hbWUsIHNpemVvZihkeW5hbWljX3Bp Z2xpdF9uYW1lKSk7CisJCQljdXJyZW50X2R5bmFtaWNfdGVzdCA9IGdldF9vcl9jcmVhdGVfanNv bl9vYmplY3QodGVzdHMsIGR5bmFtaWNfcGlnbGl0X25hbWUpOworCQl9CisKIAkJaWYgKHNldHRp bmdzLT5waWdsaXRfc3R5bGVfZG1lc2cpIHsKIAkJCWlmICgoZmxhZ3MgJiAweDA3KSA8PSBzZXR0 aW5ncy0+ZG1lc2dfd2Fybl9sZXZlbCAmJiBjb250aW51YXRpb24gIT0gJ2MnICYmCiAJCQkgICAg Z19yZWdleF9tYXRjaChyZSwgbWVzc2FnZSwgMCwgTlVMTCkpIHsKIAkJCQlhcHBlbmRfbGluZSgm d2FybmluZ3MsICZ3YXJuaW5nc2xlbiwgZm9ybWF0dGVkKTsKKwkJCQlpZiAoY3VycmVudF90ZXN0 ICE9IE5VTEwpCisJCQkJCWFwcGVuZF9saW5lKCZkeW5hbWljX3dhcm5pbmdzLCAmZHluYW1pY193 YXJuaW5nc19sZW4sIGZvcm1hdHRlZCk7CiAJCQl9CiAJCX0gZWxzZSB7CiAJCQlpZiAoKGZsYWdz ICYgMHgwNykgPD0gc2V0dGluZ3MtPmRtZXNnX3dhcm5fbGV2ZWwgJiYgY29udGludWF0aW9uICE9 ICdjJyAmJgogCQkJICAgICFnX3JlZ2V4X21hdGNoKHJlLCBtZXNzYWdlLCAwLCBOVUxMKSkgewog CQkJCWFwcGVuZF9saW5lKCZ3YXJuaW5ncywgJndhcm5pbmdzbGVuLCBmb3JtYXR0ZWQpOworCQkJ CWlmIChjdXJyZW50X3Rlc3QgIT0gTlVMTCkKKwkJCQkJYXBwZW5kX2xpbmUoJmR5bmFtaWNfd2Fy bmluZ3MsICZkeW5hbWljX3dhcm5pbmdzX2xlbiwgZm9ybWF0dGVkKTsKIAkJCX0KIAkJfQogCQlh cHBlbmRfbGluZSgmZG1lc2csICZkbWVzZ2xlbiwgZm9ybWF0dGVkKTsKKwkJaWYgKGN1cnJlbnRf dGVzdCAhPSBOVUxMKQorCQkJYXBwZW5kX2xpbmUoJmR5bmFtaWNfZG1lc2csICZkeW5hbWljX2Rt ZXNnX2xlbiwgZm9ybWF0dGVkKTsKIAkJZnJlZShmb3JtYXR0ZWQpOwogCX0KIAlmcmVlKGxpbmUp OwogCiAJaWYgKGN1cnJlbnRfdGVzdCAhPSBOVUxMKSB7CiAJCWFkZF9kbWVzZyhjdXJyZW50X3Rl c3QsIGRtZXNnLCBkbWVzZ2xlbiwgd2FybmluZ3MsIHdhcm5pbmdzbGVuKTsKKwkJaWYgKGN1cnJl bnRfZHluYW1pY190ZXN0ICE9IE5VTEwpIHsKKwkJCWFkZF9kbWVzZyhjdXJyZW50X2R5bmFtaWNf dGVzdCwgZHluYW1pY19kbWVzZywgZHluYW1pY19kbWVzZ19sZW4sIGR5bmFtaWNfd2FybmluZ3Ms IGR5bmFtaWNfd2FybmluZ3NfbGVuKTsKKwkJfQogCX0gZWxzZSB7CiAJCS8qCiAJCSAqIERpZG4n dCBnZXQgYW55IHN1YnRlc3QgbWVzc2FnZXMgYXQgYWxsLiBJZiB0aGVyZQpAQCAtNzA3LDcgKzkx OCw3IEBAIHN0YXRpYyBib29sIGZpbGxfZnJvbV9kbWVzZyhpbnQgZmQsCiAJCSAqIHRoZW0uCiAJ CSAqLwogCQlmb3IgKGkgPSAwOyBpIDwgc3VidGVzdHMtPnNpemU7IGkrKykgewotCQkJZ2VuZXJh dGVfcGlnbGl0X25hbWUoYmluYXJ5LCBzdWJ0ZXN0cy0+bmFtZXNbaV0sIHBpZ2xpdF9uYW1lLCBz aXplb2YocGlnbGl0X25hbWUpKTsKKwkJCWdlbmVyYXRlX3BpZ2xpdF9uYW1lKGJpbmFyeSwgc3Vi dGVzdHMtPnN1YnNbaV0ubmFtZSwgcGlnbGl0X25hbWUsIHNpemVvZihwaWdsaXRfbmFtZSkpOwog CQkJY3VycmVudF90ZXN0ID0gZ2V0X29yX2NyZWF0ZV9qc29uX29iamVjdCh0ZXN0cywgcGlnbGl0 X25hbWUpOwogCQkJLyoKIAkJCSAqIERvbid0IGJvdGhlciB3aXRoIHdhcm5pbmdzLCBhbnkgc3Vi dGVzdHMKQEAgLTcyNyw3ICs5MzgsOSBAQCBzdGF0aWMgYm9vbCBmaWxsX2Zyb21fZG1lc2coaW50 IGZkLAogCWFkZF9lbXB0eV9kbWVzZ3Nfd2hlcmVfbWlzc2luZyh0ZXN0cywgYmluYXJ5LCBzdWJ0 ZXN0cyk7CiAKIAlmcmVlKGRtZXNnKTsKKwlmcmVlKGR5bmFtaWNfZG1lc2cpOwogCWZyZWUod2Fy bmluZ3MpOworCWZyZWUoZHluYW1pY193YXJuaW5ncyk7CiAJZ19yZWdleF91bnJlZihyZSk7CiAJ ZmNsb3NlKGYpOwogCXJldHVybiB0cnVlOwpAQCAtNzQ5LDM5ICs5NjIsOSBAQCBzdGF0aWMgY29u c3QgY2hhciAqcmVzdWx0X2Zyb21fZXhpdGNvZGUoaW50IGV4aXRjb2RlKQogCX0KIH0KIAotc3Rh dGljIHZvaWQgYWRkX3N1YnRlc3Qoc3RydWN0IHN1YnRlc3RzICpzdWJ0ZXN0cywgY2hhciAqc3Vi dGVzdCkKLXsKLQlzaXplX3QgbGVuID0gc3RybGVuKHN1YnRlc3QpOwotCXNpemVfdCBpOwotCi0J aWYgKGxlbiA9PSAwKQotCQlyZXR1cm47Ci0KLQlpZiAoc3VidGVzdFtsZW4gLSAxXSA9PSAnXG4n KQotCQlzdWJ0ZXN0W2xlbiAtIDFdID0gJ1wwJzsKLQotCS8qIERvbid0IGFkZCBpZiB3ZSBhbHJl YWR5IGhhdmUgdGhpcyBzdWJ0ZXN0ICovCi0JZm9yIChpID0gMDsgaSA8IHN1YnRlc3RzLT5zaXpl OyBpKyspCi0JCWlmICghc3RyY21wKHN1YnRlc3QsIHN1YnRlc3RzLT5uYW1lc1tpXSkpCi0JCQly ZXR1cm47Ci0KLQlzdWJ0ZXN0cy0+c2l6ZSsrOwotCXN1YnRlc3RzLT5uYW1lcyA9IHJlYWxsb2Mo c3VidGVzdHMtPm5hbWVzLCBzaXplb2YoKnN1YnRlc3RzLT5uYW1lcykgKiBzdWJ0ZXN0cy0+c2l6 ZSk7Ci0Jc3VidGVzdHMtPm5hbWVzW3N1YnRlc3RzLT5zaXplIC0gMV0gPSBzdWJ0ZXN0OwotfQot Ci1zdGF0aWMgdm9pZCBmcmVlX3N1YnRlc3RzKHN0cnVjdCBzdWJ0ZXN0cyAqc3VidGVzdHMpCi17 Ci0Jc2l6ZV90IGk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgc3VidGVzdHMtPnNpemU7IGkrKykKLQkJ ZnJlZShzdWJ0ZXN0cy0+bmFtZXNbaV0pOwotCWZyZWUoc3VidGVzdHMtPm5hbWVzKTsKLX0KLQog c3RhdGljIHZvaWQgZmlsbF9mcm9tX2pvdXJuYWwoaW50IGZkLAogCQkJICAgICAgc3RydWN0IGpv Yl9saXN0X2VudHJ5ICplbnRyeSwKLQkJCSAgICAgIHN0cnVjdCBzdWJ0ZXN0cyAqc3VidGVzdHMs CisJCQkgICAgICBzdHJ1Y3Qgc3VidGVzdF9saXN0ICpzdWJ0ZXN0cywKIAkJCSAgICAgIHN0cnVj dCByZXN1bHRzICpyZXN1bHRzKQogewogCUZJTEUgKmYgPSBmZG9wZW4oZmQsICJyIik7CkBAIC04 MjEsNyArMTAwNCw3IEBAIHN0YXRpYyB2b2lkIGZpbGxfZnJvbV9qb3VybmFsKGludCBmZCwKIAog CQkJaWYgKHN1YnRlc3RzLT5zaXplKSB7CiAJCQkJLyogQXNzaWduIHRoZSB0aW1lb3V0IHRvIHRo ZSBwcmV2aW91c2x5IGFwcGVhcmVkIHN1YnRlc3QgKi8KLQkJCQljaGFyICpsYXN0X3N1YnRlc3Qg PSBzdWJ0ZXN0cy0+bmFtZXNbc3VidGVzdHMtPnNpemUgLSAxXTsKKwkJCQljaGFyICpsYXN0X3N1 YnRlc3QgPSBzdWJ0ZXN0cy0+c3Vic1tzdWJ0ZXN0cy0+c2l6ZSAtIDFdLm5hbWU7CiAJCQkJY2hh ciBwaWdsaXRfbmFtZVsyNTZdOwogCQkJCWNoYXIgKnAgPSBzdHJjaHIobGluZSwgJygnKTsKIAkJ CQlkb3VibGUgdGltZSA9IDAuMDsKQEAgLTg3NCw2ICsxMDU3LDMwIEBAIHN0YXRpYyB2b2lkIGZp bGxfZnJvbV9qb3VybmFsKGludCBmZCwKIAlmY2xvc2UoZik7CiB9CiAKK3N0YXRpYyBib29sIHN0 ZGVycl9jb250YWluc193YXJuaW5ncyhjb25zdCBjaGFyICpiZWcsIGNvbnN0IGNoYXIgKmVuZCkK K3sKKwljb25zdCBjaGFyICpuZWVkbGVzW10gPSB7CisJCVNUQVJUSU5HX1NVQlRFU1QsCisJCVNV QlRFU1RfUkVTVUxULAorCQlTVEFSVElOR19EWU5BTUlDX1NVQlRFU1QsCisJCURZTkFNSUNfU1VC VEVTVF9SRVNVTFQsCisJCU5VTEwKKwl9OworCXN0cnVjdCBtYXRjaGVzIG1hdGNoZXM7CisJc2l6 ZV90IGkgPSAwOworCisJbWF0Y2hlcyA9IGZpbmRfbWF0Y2hlcyhiZWcsIGVuZCwgbmVlZGxlcyk7 CisKKwl3aGlsZSAoaSA8IG1hdGNoZXMuc2l6ZSkgeworCQlpZiAobWF0Y2hlcy5pdGVtc1tpXS53 aGVyZSAhPSBiZWcpCisJCQlyZXR1cm4gdHJ1ZTsKKwkJYmVnID0gbmV4dF9saW5lKGJlZywgZW5k KTsKKwkJaSsrOworCX0KKworCXJldHVybiBmYWxzZTsKK30KKwogc3RhdGljIHZvaWQgb3ZlcnJp ZGVfcmVzdWx0X3NpbmdsZShzdHJ1Y3QganNvbl9vYmplY3QgKm9iaikKIHsKIAljb25zdCBjaGFy ICplcnJ0ZXh0ID0gIiIsICpyZXN1bHQgPSAiIjsKQEAgLTg4OCw3ICsxMDk1LDcgQEAgc3RhdGlj IHZvaWQgb3ZlcnJpZGVfcmVzdWx0X3NpbmdsZShzdHJ1Y3QganNvbl9vYmplY3QgKm9iaikKIAkJ ZG1lc2d3YXJucyA9IHRydWU7CiAKIAlpZiAoIXN0cmNtcChyZXN1bHQsICJwYXNzIikgJiYKLQkg ICAgY291bnRfbGluZXMoZXJydGV4dCwgZXJydGV4dCArIHN0cmxlbihlcnJ0ZXh0KSkgPiAyKSB7 CisJICAgIHN0ZGVycl9jb250YWluc193YXJuaW5ncyhlcnJ0ZXh0LCBlcnJ0ZXh0ICsgc3RybGVu KGVycnRleHQpKSkgewogCQlzZXRfcmVzdWx0KG9iaiwgIndhcm4iKTsKIAkJcmVzdWx0ID0gIndh cm4iOwogCX0KQEAgLTkwMywxMiArMTExMCwxMyBAQCBzdGF0aWMgdm9pZCBvdmVycmlkZV9yZXN1 bHRfc2luZ2xlKHN0cnVjdCBqc29uX29iamVjdCAqb2JqKQogfQogCiBzdGF0aWMgdm9pZCBvdmVy cmlkZV9yZXN1bHRzKGNoYXIgKmJpbmFyeSwKLQkJCSAgICAgc3RydWN0IHN1YnRlc3RzICpzdWJ0 ZXN0cywKKwkJCSAgICAgc3RydWN0IHN1YnRlc3RfbGlzdCAqc3VidGVzdHMsCiAJCQkgICAgIHN0 cnVjdCBqc29uX29iamVjdCAqdGVzdHMpCiB7CiAJc3RydWN0IGpzb25fb2JqZWN0ICpvYmo7CiAJ Y2hhciBwaWdsaXRfbmFtZVsyNTZdOwotCXNpemVfdCBpOworCWNoYXIgZHluYW1pY19waWdsaXRf bmFtZVsyNTZdOworCXNpemVfdCBpLCBrOwogCiAJaWYgKHN1YnRlc3RzLT5zaXplID09IDApIHsK IAkJZ2VuZXJhdGVfcGlnbGl0X25hbWUoYmluYXJ5LCBOVUxMLCBwaWdsaXRfbmFtZSwgc2l6ZW9m KHBpZ2xpdF9uYW1lKSk7CkBAIC05MTgsOSArMTEyNiwxNiBAQCBzdGF0aWMgdm9pZCBvdmVycmlk ZV9yZXN1bHRzKGNoYXIgKmJpbmFyeSwKIAl9CiAKIAlmb3IgKGkgPSAwOyBpIDwgc3VidGVzdHMt PnNpemU7IGkrKykgewotCQlnZW5lcmF0ZV9waWdsaXRfbmFtZShiaW5hcnksIHN1YnRlc3RzLT5u YW1lc1tpXSwgcGlnbGl0X25hbWUsIHNpemVvZihwaWdsaXRfbmFtZSkpOworCQlnZW5lcmF0ZV9w aWdsaXRfbmFtZShiaW5hcnksIHN1YnRlc3RzLT5zdWJzW2ldLm5hbWUsIHBpZ2xpdF9uYW1lLCBz aXplb2YocGlnbGl0X25hbWUpKTsKIAkJb2JqID0gZ2V0X29yX2NyZWF0ZV9qc29uX29iamVjdCh0 ZXN0cywgcGlnbGl0X25hbWUpOwogCQlvdmVycmlkZV9yZXN1bHRfc2luZ2xlKG9iaik7CisKKwkJ Zm9yIChrID0gMDsgayA8IHN1YnRlc3RzLT5zdWJzW2ldLmR5bmFtaWNfc2l6ZTsgaysrKSB7CisJ CQlnZW5lcmF0ZV9waWdsaXRfbmFtZV9mb3JfZHluYW1pYyhwaWdsaXRfbmFtZSwgc3VidGVzdHMt PnN1YnNbaV0uZHluYW1pY19uYW1lc1trXSwKKwkJCQkJCQkgZHluYW1pY19waWdsaXRfbmFtZSwg c2l6ZW9mKGR5bmFtaWNfcGlnbGl0X25hbWUpKTsKKwkJCW9iaiA9IGdldF9vcl9jcmVhdGVfanNv bl9vYmplY3QodGVzdHMsIGR5bmFtaWNfcGlnbGl0X25hbWUpOworCQkJb3ZlcnJpZGVfcmVzdWx0 X3NpbmdsZShvYmopOworCQl9CiAJfQogfQogCkBAIC05NjUsMTMgKzExODAsMTQgQEAgc3RhdGlj IHZvaWQgYWRkX3Jlc3VsdF90b190b3RhbHMoc3RydWN0IGpzb25fb2JqZWN0ICp0b3RhbHMsCiB9 CiAKIHN0YXRpYyB2b2lkIGFkZF90b190b3RhbHMoY29uc3QgY2hhciAqYmluYXJ5LAotCQkJICBz dHJ1Y3Qgc3VidGVzdHMgKnN1YnRlc3RzLAorCQkJICBzdHJ1Y3Qgc3VidGVzdF9saXN0ICpzdWJ0 ZXN0cywKIAkJCSAgc3RydWN0IHJlc3VsdHMgKnJlc3VsdHMpCiB7CiAJc3RydWN0IGpzb25fb2Jq ZWN0ICp0ZXN0LCAqcmVzdWx0b2JqLCAqZW1wdHlzdHJ0b3RhbCwgKnJvb3R0b3RhbCwgKmJpbmFy eXRvdGFsOwogCWNoYXIgcGlnbGl0X25hbWVbMjU2XTsKKwljaGFyIGR5bmFtaWNfcGlnbGl0X25h bWVbMjU2XTsKIAljb25zdCBjaGFyICpyZXN1bHQ7Ci0Jc2l6ZV90IGk7CisJc2l6ZV90IGksIGs7 CiAKIAlnZW5lcmF0ZV9waWdsaXRfbmFtZShiaW5hcnksIE5VTEwsIHBpZ2xpdF9uYW1lLCBzaXpl b2YocGlnbGl0X25hbWUpKTsKIAllbXB0eXN0cnRvdGFsID0gZ2V0X3RvdGFsc19vYmplY3QocmVz dWx0cy0+dG90YWxzLCAiIik7CkBAIC05OTIsNyArMTIwOCw3IEBAIHN0YXRpYyB2b2lkIGFkZF90 b190b3RhbHMoY29uc3QgY2hhciAqYmluYXJ5LAogCX0KIAogCWZvciAoaSA9IDA7IGkgPCBzdWJ0 ZXN0cy0+c2l6ZTsgaSsrKSB7Ci0JCWdlbmVyYXRlX3BpZ2xpdF9uYW1lKGJpbmFyeSwgc3VidGVz dHMtPm5hbWVzW2ldLCBwaWdsaXRfbmFtZSwgc2l6ZW9mKHBpZ2xpdF9uYW1lKSk7CisJCWdlbmVy YXRlX3BpZ2xpdF9uYW1lKGJpbmFyeSwgc3VidGVzdHMtPnN1YnNbaV0ubmFtZSwgcGlnbGl0X25h bWUsIHNpemVvZihwaWdsaXRfbmFtZSkpOwogCQl0ZXN0ID0gZ2V0X29yX2NyZWF0ZV9qc29uX29i amVjdChyZXN1bHRzLT50ZXN0cywgcGlnbGl0X25hbWUpOwogCQlpZiAoIWpzb25fb2JqZWN0X29i amVjdF9nZXRfZXgodGVzdCwgInJlc3VsdCIsICZyZXN1bHRvYmopKSB7CiAJCQlmcHJpbnRmKHN0 ZGVyciwgIldhcm5pbmc6IE5vIHJlc3VsdHMgc2V0IGZvciAlc1xuIiwgcGlnbGl0X25hbWUpOwpA QCAtMTAwMiw2ICsxMjE4LDIxIEBAIHN0YXRpYyB2b2lkIGFkZF90b190b3RhbHMoY29uc3QgY2hh ciAqYmluYXJ5LAogCQlhZGRfcmVzdWx0X3RvX3RvdGFscyhlbXB0eXN0cnRvdGFsLCByZXN1bHQp OwogCQlhZGRfcmVzdWx0X3RvX3RvdGFscyhyb290dG90YWwsIHJlc3VsdCk7CiAJCWFkZF9yZXN1 bHRfdG9fdG90YWxzKGJpbmFyeXRvdGFsLCByZXN1bHQpOworCisJCWZvciAoayA9IDA7IGsgPCBz dWJ0ZXN0cy0+c3Vic1tpXS5keW5hbWljX3NpemU7IGsrKykgeworCQkJZ2VuZXJhdGVfcGlnbGl0 X25hbWVfZm9yX2R5bmFtaWMocGlnbGl0X25hbWUsIHN1YnRlc3RzLT5zdWJzW2ldLmR5bmFtaWNf bmFtZXNba10sCisJCQkJCQkJIGR5bmFtaWNfcGlnbGl0X25hbWUsIHNpemVvZihkeW5hbWljX3Bp Z2xpdF9uYW1lKSk7CisJCQl0ZXN0ID0gZ2V0X29yX2NyZWF0ZV9qc29uX29iamVjdChyZXN1bHRz LT50ZXN0cywgZHluYW1pY19waWdsaXRfbmFtZSk7CisJCQlpZiAoIWpzb25fb2JqZWN0X29iamVj dF9nZXRfZXgodGVzdCwgInJlc3VsdCIsICZyZXN1bHRvYmopKSB7CisJCQkJZnByaW50ZihzdGRl cnIsICJXYXJuaW5nOiBObyByZXN1bHRzIHNldCBmb3IgJXNcbiIsIGR5bmFtaWNfcGlnbGl0X25h bWUpOworCQkJCXJldHVybjsKKwkJCX0KKwkJCXJlc3VsdCA9IGpzb25fb2JqZWN0X2dldF9zdHJp bmcocmVzdWx0b2JqKTsKKwkJCWFkZF9yZXN1bHRfdG9fdG90YWxzKGVtcHR5c3RydG90YWwsIHJl c3VsdCk7CisJCQlhZGRfcmVzdWx0X3RvX3RvdGFscyhyb290dG90YWwsIHJlc3VsdCk7CisJCQlh ZGRfcmVzdWx0X3RvX3RvdGFscyhiaW5hcnl0b3RhbCwgcmVzdWx0KTsKKwkJfQorCiAJfQogfQog CkBAIC0xMDExLDcgKzEyNDIsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZV90ZXN0X2RpcmVjdG9yeShp bnQgZGlyZmQsCiAJCQkJIHN0cnVjdCByZXN1bHRzICpyZXN1bHRzKQogewogCWludCBmZHNbX0Zf TEFTVF07Ci0Jc3RydWN0IHN1YnRlc3RzIHN1YnRlc3RzID0ge307CisJc3RydWN0IHN1YnRlc3Rf bGlzdCBzdWJ0ZXN0cyA9IHt9OwogCWJvb2wgc3RhdHVzID0gdHJ1ZTsKIAogCWlmICghb3Blbl9v dXRwdXRfZmlsZXMoZGlyZmQsIGZkcywgZmFsc2UpKSB7CkBAIC0xMDQ3LDcgKzEyNzgsNyBAQCBz dGF0aWMgdm9pZCB0cnlfYWRkX25vdHJ1bl9yZXN1bHRzKGNvbnN0IHN0cnVjdCBqb2JfbGlzdF9l bnRyeSAqZW50cnksCiAJCQkJICAgY29uc3Qgc3RydWN0IHNldHRpbmdzICpzZXR0aW5ncywKIAkJ CQkgICBzdHJ1Y3QgcmVzdWx0cyAqcmVzdWx0cykKIHsKLQlzdHJ1Y3Qgc3VidGVzdHMgc3VidGVz dHMgPSB7fTsKKwlzdHJ1Y3Qgc3VidGVzdF9saXN0IHN1YnRlc3RzID0ge307CiAJc3RydWN0IGpz b25fb2JqZWN0ICpjdXJyZW50X3Rlc3Q7CiAJc2l6ZV90IGk7CiAKQEAgLTExODQsNyArMTQxNSw3 IEBAIHN0cnVjdCBqc29uX29iamVjdCAqZ2VuZXJhdGVfcmVzdWx0c19qc29uKGludCBkaXJmZCkK IAlpZiAoKGZkID0gb3BlbmF0KGRpcmZkLCAiYWJvcnRlZC50eHQiLCBPX1JET05MWSkpID49IDAp IHsKIAkJY2hhciBidWZbNDA5Nl07CiAJCWNoYXIgcGlnbGl0X25hbWVbXSA9ICJpZ3RAcnVubmVy QGFib3J0ZWQiOwotCQlzdHJ1Y3Qgc3VidGVzdHMgYWJvcnRzdWIgPSB7fTsKKwkJc3RydWN0IHN1 YnRlc3RfbGlzdCBhYm9ydHN1YiA9IHt9OwogCQlzdHJ1Y3QganNvbl9vYmplY3QgKmFib3J0dGVz dCA9IGdldF9vcl9jcmVhdGVfanNvbl9vYmplY3QocmVzdWx0cy50ZXN0cywgcGlnbGl0X25hbWUp OwogCQlzc2l6ZV90IHM7CiAKLS0gCjIuMTkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pZ3QtZGV2