From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5597A6E378 for ; Wed, 19 Jun 2019 11:51:26 +0000 (UTC) From: Petri Latvala Date: Wed, 19 Jun 2019 14:51:06 +0300 Message-Id: <20190619115107.2908-6-petri.latvala@intel.com> In-Reply-To: <20190619115107.2908-1-petri.latvala@intel.com> References: <20190619115107.2908-1-petri.latvala@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 5/6] 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 fCAzNDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQogNCBmaWxlcyBj aGFuZ2VkLCAzMjEgaW5zZXJ0aW9ucygrKSwgNjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv 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 cmVzdWx0Z2VuLmMgYi9ydW5uZXIvcmVzdWx0Z2VuLmMKaW5kZXggYmFkZjY1MDIuLjMyMmE5NDVh 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 bWluYXRlZCBzdHJpbmdzLiBCdWZmZXJzIHdpbGwgYmUKQEAgLTE0OCw2ICsyMTYsNyBAQCBzdGF0 aWMgdm9pZCBwYXJzZV9yZXN1bHRfc3RyaW5nKGNvbnN0IGNoYXIgKnJlc3VsdHN0cmluZywgc2l6 ZV90IGxlbiwgY29uc3QgY2hhcgogfQogCiBzdGF0aWMgdm9pZCBwYXJzZV9zdWJ0ZXN0X3Jlc3Vs dChjb25zdCBjaGFyICpzdWJ0ZXN0LAorCQkJCSBjb25zdCBjaGFyICpyZXN1bHR0ZXh0cHJlZml4 LAogCQkJCSBjb25zdCBjaGFyICoqcmVzdWx0LAogCQkJCSBkb3VibGUgKnRpbWUsCiAJCQkJIGNv bnN0IGNoYXIgKmxpbmUsCkBAIC0xNzUsNiArMjQ0LDEwIEBAIHN0YXRpYyB2b2lkIHBhcnNlX3N1 YnRlc3RfcmVzdWx0KGNvbnN0IGNoYXIgKnN1YnRlc3QsCiAJICoKIAkgKiBFeGFtcGxlOgogCSAq IFN1YnRlc3Qgc3VidGVzdG5hbWU6IFBBU1MgKDAuMDAzcykKKwkgKgorCSAqIEZvciBkeW5hbWlj IHN1YnRlc3RzIHRoZSBzYW1lIHN0cnVjdHVyZSBhcHBsaWVzLCBidXQgdGhlCisJICogc3RyaW5n ICJTdWJ0ZXN0ICIgaXMgIkR5bmFtaWMgc3VidGVzdCAiCisJICogaW5zdGVhZC4gKGBEWU5BTUlD X1NVQlRFU1RfUkVTVUxUYCBmcm9tIG91dHB1dF9zdHJpbmdzLmgpCiAJICovCiAKIAlpZiAoIWxp bmUpCkBAIC0xODMsMTMgKzI1NiwxMyBAQCBzdGF0aWMgdm9pZCBwYXJzZV9zdWJ0ZXN0X3Jlc3Vs dChjb25zdCBjaGFyICpzdWJ0ZXN0LAogCWxpbmVfZW5kID0gbWVtY2hyKGxpbmUsICdcbicsIGJ1 ZmVuZCAtIGxpbmUpOwogCWxpbmVsZW4gPSBsaW5lX2VuZCAhPSBOVUxMID8gbGluZV9lbmQgLSBs aW5lIDogYnVmZW5kIC0gbGluZTsKIAotCWlmIChzdHJsZW4oU1VCVEVTVF9SRVNVTFQpICsgc3Vi dGVzdGxlbiArIHN0cmxlbigiOiAiKSA+IGxpbmVsZW4gfHwKLQkgICAgc3RybmNtcChsaW5lICsg c3RybGVuKFNVQlRFU1RfUkVTVUxUKSwgc3VidGVzdCwgc3VidGVzdGxlbikpIHsKKwlpZiAoc3Ry bGVuKHJlc3VsdHRleHRwcmVmaXgpICsgc3VidGVzdGxlbiArIHN0cmxlbigiOiAiKSA+IGxpbmVs ZW4gfHwKKwkgICAgc3RybmNtcChsaW5lICsgc3RybGVuKHJlc3VsdHRleHRwcmVmaXgpLCBzdWJ0 ZXN0LCBzdWJ0ZXN0bGVuKSkgewogCQkvKiBUaGlzIGlzIG5vdCB0aGUgY29ycmVjdCByZXN1bHQg bGluZSAqLwogCQlyZXR1cm47CiAJfQogCi0JcmVzdWx0c3RyaW5nID0gbGluZSArIHN0cmxlbihT VUJURVNUX1JFU1VMVCkgKyBzdWJ0ZXN0bGVuICsgc3RybGVuKCI6ICIpOworCXJlc3VsdHN0cmlu ZyA9IGxpbmUgKyBzdHJsZW4ocmVzdWx0dGV4dHByZWZpeCkgKyBzdWJ0ZXN0bGVuICsgc3RybGVu KCI6ICIpOwogCXBhcnNlX3Jlc3VsdF9zdHJpbmcocmVzdWx0c3RyaW5nLCBsaW5lbGVuIC0gKHJl c3VsdHN0cmluZyAtIGxpbmUpLCByZXN1bHQsIHRpbWUpOwogfQogCkBAIC0zMDMsNyArMzc2LDcg QEAgc3RhdGljIHZvaWQgZnJlZV9tYXRjaGVzKHN0cnVjdCBtYXRjaGVzICptYXRjaGVzKQogfQog CiBzdGF0aWMgYm9vbCBmaWxsX2Zyb21fb3V0cHV0KGludCBmZCwgY29uc3QgY2hhciAqYmluYXJ5 LCBjb25zdCBjaGFyICprZXksCi0JCQkgICAgIHN0cnVjdCBzdWJ0ZXN0cyAqc3VidGVzdHMsCisJ CQkgICAgIHN0cnVjdCBzdWJ0ZXN0X2xpc3QgKnN1YnRlc3RzLAogCQkJICAgICBzdHJ1Y3QganNv bl9vYmplY3QgKnRlc3RzKQogewogCWNoYXIgKmJ1ZiwgKmJ1ZmVuZCwgKm51bGxjaHI7CkBAIC0z MTUsNiArMzg4LDggQEAgc3RhdGljIGJvb2wgZmlsbF9mcm9tX291dHB1dChpbnQgZmQsIGNvbnN0 IGNoYXIgKmJpbmFyeSwgY29uc3QgY2hhciAqa2V5LAogCWNvbnN0IGNoYXIgKm5lZWRsZXNbXSA9 IHsKIAkJU1RBUlRJTkdfU1VCVEVTVCwKIAkJU1VCVEVTVF9SRVNVTFQsCisJCVNUQVJUSU5HX0RZ TkFNSUNfU1VCVEVTVCwKKwkJRFlOQU1JQ19TVUJURVNUX1JFU1VMVCwKIAkJTlVMTAogCX07CiAJ c3RydWN0IG1hdGNoZXMgbWF0Y2hlcyA9IHt9OwpAQCAtMzc0LDExICs0NDksMTEgQEAgc3RhdGlj IGJvb2wgZmlsbF9mcm9tX291dHB1dChpbnQgZmQsIGNvbnN0IGNoYXIgKmJpbmFyeSwgY29uc3Qg Y2hhciAqa2V5LAogCQlpbnQgYmVnaW5fbGVuOwogCQlpbnQgcmVzdWx0X2xlbjsKIAotCQlnZW5l cmF0ZV9waWdsaXRfbmFtZShiaW5hcnksIHN1YnRlc3RzLT5uYW1lc1tpXSwgcGlnbGl0X25hbWUs IHNpemVvZihwaWdsaXRfbmFtZSkpOworCQlnZW5lcmF0ZV9waWdsaXRfbmFtZShiaW5hcnksIHN1 YnRlc3RzLT5zdWJzW2ldLm5hbWUsIHBpZ2xpdF9uYW1lLCBzaXplb2YocGlnbGl0X25hbWUpKTsK IAkJY3VycmVudF90ZXN0ID0gZ2V0X29yX2NyZWF0ZV9qc29uX29iamVjdCh0ZXN0cywgcGlnbGl0 X25hbWUpOwogCi0JCWJlZ2luX2xlbiA9IGFzcHJpbnRmKCZ0aGlzX3N1Yl9iZWdpbiwgIiVzJXNc biIsIFNUQVJUSU5HX1NVQlRFU1QsIHN1YnRlc3RzLT5uYW1lc1tpXSk7Ci0JCXJlc3VsdF9sZW4g PSBhc3ByaW50ZigmdGhpc19zdWJfcmVzdWx0LCAiJXMlczogIiwgU1VCVEVTVF9SRVNVTFQsIHN1 YnRlc3RzLT5uYW1lc1tpXSk7CisJCWJlZ2luX2xlbiA9IGFzcHJpbnRmKCZ0aGlzX3N1Yl9iZWdp biwgIiVzJXNcbiIsIFNUQVJUSU5HX1NVQlRFU1QsIHN1YnRlc3RzLT5zdWJzW2ldLm5hbWUpOwor CQlyZXN1bHRfbGVuID0gYXNwcmludGYoJnRoaXNfc3ViX3Jlc3VsdCwgIiVzJXM6ICIsIFNVQlRF U1RfUkVTVUxULCBzdWJ0ZXN0cy0+c3Vic1tpXS5uYW1lKTsKIAogCQlpZiAoYmVnaW5fbGVuIDwg MCB8fCByZXN1bHRfbGVuIDwgMCkgewogCQkJZnByaW50ZihzdGRlcnIsICJGYWlsdXJlIGdlbmVy YXRpbmcgc3RyaW5nc1xuIik7CkBAIC00MzcsOCArNTEyLDEzIEBAIHN0YXRpYyBib29sIGZpbGxf ZnJvbV9vdXRwdXQoaW50IGZkLCBjb25zdCBjaGFyICpiaW5hcnksIGNvbnN0IGNoYXIgKmtleSwK IAkJCSAqIEluY29tcGxldGUgcmVzdWx0LiBJbmNsdWRlIG91dHB1dCB1cCB0byB0aGUKIAkJCSAq IG5leHQgc3RhcnRpbmcgc3VidGVzdCBvciByZXN1bHQuCiAJCQkgKi8KLQkJCWlmIChiZWdpbl9p ZHggPCBtYXRjaGVzLnNpemUgLSAxKQotCQkJCWVuZCA9IG1hdGNoZXMuaXRlbXNbYmVnaW5faWR4 ICsgMV0ud2hlcmU7CisJCQlmb3IgKGsgPSBiZWdpbl9pZHggKyAxOyBrIDwgbWF0Y2hlcy5zaXpl OyBrKyspIHsKKwkJCQlpZiAobWF0Y2hlcy5pdGVtc1trXS53aGF0ID09IFNUQVJUSU5HX1NVQlRF U1QgfHwKKwkJCQkgICAgbWF0Y2hlcy5pdGVtc1trXS53aGF0ID09IFNVQlRFU1RfUkVTVUxUKQor CQkJCQlicmVhazsKKwkJCX0KKwkJCWlmIChrIDwgbWF0Y2hlcy5zaXplKQorCQkJCWVuZCA9IG1h dGNoZXMuaXRlbXNba10ud2hlcmU7CiAJCQllbHNlCiAJCQkJZW5kID0gYnVmZW5kOwogCQl9IGVs c2UgewpAQCAtNDU5LDEzICs1MzksMTA0IEBAIHN0YXRpYyBib29sIGZpbGxfZnJvbV9vdXRwdXQo aW50IGZkLCBjb25zdCBjaGFyICpiaW5hcnksIGNvbnN0IGNoYXIgKmtleSwKIAkJfQogCiAJCWlm ICghanNvbl9vYmplY3Rfb2JqZWN0X2dldF9leChjdXJyZW50X3Rlc3QsICJyZXN1bHQiLCBOVUxM KSkgewotCQkJcGFyc2Vfc3VidGVzdF9yZXN1bHQoc3VidGVzdHMtPm5hbWVzW2ldLAorCQkJcGFy c2Vfc3VidGVzdF9yZXN1bHQoc3VidGVzdHMtPnN1YnNbaV0ubmFtZSwKKwkJCQkJICAgICBTVUJU RVNUX1JFU1VMVCwKIAkJCQkJICAgICAmcmVzdWx0dGV4dCwgJnRpbWUsCiAJCQkJCSAgICAgcmVz dWx0X2lkeCA8IDAgPyBOVUxMIDogbWF0Y2hlcy5pdGVtc1tyZXN1bHRfaWR4XS53aGVyZSwKIAkJ CQkJICAgICBlbmQpOwogCQkJc2V0X3Jlc3VsdChjdXJyZW50X3Rlc3QsIHJlc3VsdHRleHQpOwog CQkJc2V0X3J1bnRpbWUoY3VycmVudF90ZXN0LCB0aW1lKTsKIAkJfQorCisJCS8qCisJCSAqIExv b2sgZm9yIGR5bmFtaWMgc3VidGVzdHM6IElmIGFueSwgdGhleSBhcmUgd2l0aGluCisJCSAqIHRo ZSBzdWJ0ZXN0IG91dHB1dC4KKwkJICovCisJCWlmIChyZXN1bHRfaWR4IDwgMCkgeworCQkJLyog SWYgdGhlIHN1YnRlc3QgaXRzZWxmIGlzIGluY29tcGxldGUsIHN0b3AgYXQgdGhlIG5leHQgc3Rh cnQgb2YgYSBzdWJ0ZXN0ICovCisJCQlmb3IgKHJlc3VsdF9pZHggPSBiZWdpbl9pZHggKyAxOwor CQkJICAgICByZXN1bHRfaWR4IDwgbWF0Y2hlcy5zaXplOworCQkJICAgICByZXN1bHRfaWR4Kysp IHsKKwkJCQlpZiAobWF0Y2hlcy5pdGVtc1tyZXN1bHRfaWR4XS53aGF0ID09IFNUQVJUSU5HX1NV QlRFU1QpCisJCQkJCWJyZWFrOworCQkJfQorCQl9CisKKwkJZm9yIChrID0gYmVnaW5faWR4ICsg MTsgayA8IHJlc3VsdF9pZHg7IGsrKykgeworCQkJaWYgKG1hdGNoZXMuaXRlbXNba10ud2hhdCA9 PSBTVEFSVElOR19EWU5BTUlDX1NVQlRFU1QpIHsKKwkJCQlzdHJ1Y3QganNvbl9vYmplY3QgKmN1 cnJlbnRfZHluYW1pY190ZXN0ID0gTlVMTDsKKwkJCQlpbnQgZHluX3Jlc3VsdF9pZHggPSAtMTsK KwkJCQljaGFyIGR5bmFtaWNfbmFtZVsyNTZdOworCQkJCWNoYXIgZHluYW1pY19waWdsaXRfbmFt ZVsyNTZdOworCQkJCWNoYXIgKnRoaXNfZHluX3Jlc3VsdDsKKwkJCQlpbnQgZHluX3Jlc3VsdF9s ZW47CisJCQkJY29uc3QgY2hhciAqZHluYmVnLCAqZHluZW5kOworCQkJCWludCBuOworCisJCQkJ aWYgKHNzY2FuZihtYXRjaGVzLml0ZW1zW2tdLndoZXJlICsgc3RybGVuKFNUQVJUSU5HX0RZTkFN SUNfU1VCVEVTVCksICIlcyIsIGR5bmFtaWNfbmFtZSkgIT0gMSkgeworCQkJCQkvKiBDYW5ub3Qg cGFyc2UgbmFtZSwganVzdCBpZ25vcmUgdGhpcyBvbmUgKi8KKwkJCQkJY29udGludWU7CisJCQkJ fQorCisJCQkJZHluX3Jlc3VsdF9sZW4gPSBhc3ByaW50ZigmdGhpc19keW5fcmVzdWx0LCAiJXMl czogIiwgRFlOQU1JQ19TVUJURVNUX1JFU1VMVCwgZHluYW1pY19uYW1lKTsKKwkJCQlpZiAoZHlu X3Jlc3VsdF9sZW4gPCAwKQorCQkJCQljb250aW51ZTsKKworCQkJCWZvciAobiA9IGsgKyAxOyBu IDwgcmVzdWx0X2lkeDsgbisrKSB7CisJCQkJCWlmIChtYXRjaGVzLml0ZW1zW25dLndoYXQgPT0g RFlOQU1JQ19TVUJURVNUX1JFU1VMVCAmJgorCQkJCQkgICAgIW1lbWNtcChtYXRjaGVzLml0ZW1z W25dLndoZXJlLAorCQkJCQkJICAgIHRoaXNfZHluX3Jlc3VsdCwKKwkJCQkJCSAgICBtaW4oZHlu X3Jlc3VsdF9sZW4sIGJ1ZmVuZCAtIG1hdGNoZXMuaXRlbXNbbl0ud2hlcmUpKSkgeworCQkJCQkJ ZHluX3Jlc3VsdF9pZHggPSBuOworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9CisKKwkJCQlm cmVlKHRoaXNfZHluX3Jlc3VsdCk7CisKKwkJCQlpZiAoayA9PSAwKQorCQkJCQlkeW5iZWcgPSBi ZWc7CisJCQkJZWxzZQorCQkJCQlkeW5iZWcgPSBuZXh0X2xpbmUobWF0Y2hlcy5pdGVtc1trIC0g MV0ud2hlcmUsIGVuZCk7CisKKwkJCQlpZiAoZHluX3Jlc3VsdF9pZHggPCAwKSB7CisJCQkJCWlm IChrIDwgbWF0Y2hlcy5zaXplIC0gMSkKKwkJCQkJCWR5bmVuZCA9IG1hdGNoZXMuaXRlbXNbayAr IDFdLndoZXJlOworCQkJCQllbHNlCisJCQkJCQlkeW5lbmQgPSBlbmQ7CisJCQkJfSBlbHNlIHsK KwkJCQkJaWYgKGR5bl9yZXN1bHRfaWR4IDwgbWF0Y2hlcy5zaXplIC0gMSkKKwkJCQkJCWR5bmVu ZCA9IG1hdGNoZXMuaXRlbXNbZHluX3Jlc3VsdF9pZHggKyAxXS53aGVyZTsKKwkJCQkJZWxzZQor CQkJCQkJZHluZW5kID0gZW5kOworCQkJCX0KKworCQkJCWdlbmVyYXRlX3BpZ2xpdF9uYW1lX2Zv cl9keW5hbWljKHBpZ2xpdF9uYW1lLCBkeW5hbWljX25hbWUsIGR5bmFtaWNfcGlnbGl0X25hbWUs IHNpemVvZihkeW5hbWljX3BpZ2xpdF9uYW1lKSk7CisKKwkJCQlhZGRfZHluYW1pY19zdWJ0ZXN0 KCZzdWJ0ZXN0cy0+c3Vic1tpXSwgc3RyZHVwKGR5bmFtaWNfbmFtZSkpOworCQkJCWN1cnJlbnRf ZHluYW1pY190ZXN0ID0gZ2V0X29yX2NyZWF0ZV9qc29uX29iamVjdCh0ZXN0cywgZHluYW1pY19w aWdsaXRfbmFtZSk7CisKKwkJCQlqc29uX29iamVjdF9vYmplY3RfYWRkKGN1cnJlbnRfZHluYW1p Y190ZXN0LCBrZXksCisJCQkJCQkgICAgICAganNvbl9vYmplY3RfbmV3X3N0cmluZ19sZW4oZHlu YmVnLCBkeW5lbmQgLSBkeW5iZWcpKTsKKwkJCQlpZiAoaWd0X3ZlcnNpb24pCisJCQkJCWpzb25f b2JqZWN0X29iamVjdF9hZGQoY3VycmVudF9keW5hbWljX3Rlc3QsICJpZ3QtdmVyc2lvbiIsCisJ CQkJCQkJICAgICAgIGpzb25fb2JqZWN0X25ld19zdHJpbmdfbGVuKGlndF92ZXJzaW9uLAorCQkJ CQkJCQkJCQkgIGlndF92ZXJzaW9uX2xlbikpOworCisJCQkJaWYgKCFqc29uX29iamVjdF9vYmpl Y3RfZ2V0X2V4KGN1cnJlbnRfZHluYW1pY190ZXN0LCAicmVzdWx0IiwgTlVMTCkpIHsKKwkJCQkJ Y29uc3QgY2hhciAqZHlucmVzdWx0dGV4dDsKKwkJCQkJZG91YmxlIGR5bnRpbWU7CisKKwkJCQkJ cGFyc2Vfc3VidGVzdF9yZXN1bHQoZHluYW1pY19uYW1lLAorCQkJCQkJCSAgICAgRFlOQU1JQ19T VUJURVNUX1JFU1VMVCwKKwkJCQkJCQkgICAgICZkeW5yZXN1bHR0ZXh0LCAmZHludGltZSwKKwkJ CQkJCQkgICAgIGR5bl9yZXN1bHRfaWR4IDwgMCA/IE5VTEwgOiBtYXRjaGVzLml0ZW1zW2R5bl9y ZXN1bHRfaWR4XS53aGVyZSwKKwkJCQkJCQkgICAgIGR5bmVuZCk7CisJCQkJCXNldF9yZXN1bHQo Y3VycmVudF9keW5hbWljX3Rlc3QsIGR5bnJlc3VsdHRleHQpOworCQkJCQlzZXRfcnVudGltZShj dXJyZW50X2R5bmFtaWNfdGVzdCwgZHludGltZSk7CisJCQkJfQorCQkJfQorCQl9CiAJfQogCiAJ ZnJlZV9tYXRjaGVzKCZtYXRjaGVzKTsKQEAgLTYxMywxOCArNzg0LDI4IEBAIHN0YXRpYyB2b2lk IGFkZF9kbWVzZyhzdHJ1Y3QganNvbl9vYmplY3QgKm9iaiwKIAogc3RhdGljIHZvaWQgYWRkX2Vt cHR5X2RtZXNnc193aGVyZV9taXNzaW5nKHN0cnVjdCBqc29uX29iamVjdCAqdGVzdHMsCiAJCQkJ CSAgIGNoYXIgKmJpbmFyeSwKLQkJCQkJICAgc3RydWN0IHN1YnRlc3RzICpzdWJ0ZXN0cykKKwkJ CQkJICAgc3RydWN0IHN1YnRlc3RfbGlzdCAqc3VidGVzdHMpCiB7CiAJc3RydWN0IGpzb25fb2Jq ZWN0ICpjdXJyZW50X3Rlc3Q7CiAJY2hhciBwaWdsaXRfbmFtZVsyNTZdOwotCXNpemVfdCBpOwor CWNoYXIgZHluYW1pY19waWdsaXRfbmFtZVsyNTZdOworCXNpemVfdCBpLCBrOwogCiAJZm9yIChp ID0gMDsgaSA8IHN1YnRlc3RzLT5zaXplOyBpKyspIHsKLQkJZ2VuZXJhdGVfcGlnbGl0X25hbWUo YmluYXJ5LCBzdWJ0ZXN0cy0+bmFtZXNbaV0sIHBpZ2xpdF9uYW1lLCBzaXplb2YocGlnbGl0X25h bWUpKTsKKwkJZ2VuZXJhdGVfcGlnbGl0X25hbWUoYmluYXJ5LCBzdWJ0ZXN0cy0+c3Vic1tpXS5u YW1lLCBwaWdsaXRfbmFtZSwgc2l6ZW9mKHBpZ2xpdF9uYW1lKSk7CiAJCWN1cnJlbnRfdGVzdCA9 IGdldF9vcl9jcmVhdGVfanNvbl9vYmplY3QodGVzdHMsIHBpZ2xpdF9uYW1lKTsKIAkJaWYgKCFq c29uX29iamVjdF9vYmplY3RfZ2V0X2V4KGN1cnJlbnRfdGVzdCwgImRtZXNnIiwgTlVMTCkpIHsK IAkJCWFkZF9kbWVzZyhjdXJyZW50X3Rlc3QsICIiLCAwLCBOVUxMLCAwKTsKIAkJfQorCisJCWZv ciAoayA9IDA7IGsgPCBzdWJ0ZXN0cy0+c3Vic1tpXS5keW5hbWljX3NpemU7IGsrKykgeworCQkJ Z2VuZXJhdGVfcGlnbGl0X25hbWVfZm9yX2R5bmFtaWMocGlnbGl0X25hbWUsIHN1YnRlc3RzLT5z dWJzW2ldLmR5bmFtaWNfbmFtZXNba10sCisJCQkJCQkJIGR5bmFtaWNfcGlnbGl0X25hbWUsIHNp emVvZihkeW5hbWljX3BpZ2xpdF9uYW1lKSk7CisJCQljdXJyZW50X3Rlc3QgPSBnZXRfb3JfY3Jl YXRlX2pzb25fb2JqZWN0KHRlc3RzLCBkeW5hbWljX3BpZ2xpdF9uYW1lKTsKKwkJCWlmICghanNv bl9vYmplY3Rfb2JqZWN0X2dldF9leChjdXJyZW50X3Rlc3QsICJkbWVzZyIsIE5VTEwpKSB7CisJ CQkJYWRkX2RtZXNnKGN1cnJlbnRfdGVzdCwgIiIsIDAsIE5VTEwsIDApOworCQkJfQorCQl9CiAJ fQogCiB9CkBAIC02MzIsMTQgKzgxMywyMCBAQCBzdGF0aWMgdm9pZCBhZGRfZW1wdHlfZG1lc2dz X3doZXJlX21pc3Npbmcoc3RydWN0IGpzb25fb2JqZWN0ICp0ZXN0cywKIHN0YXRpYyBib29sIGZp bGxfZnJvbV9kbWVzZyhpbnQgZmQsCiAJCQkgICAgc3RydWN0IHNldHRpbmdzICpzZXR0aW5ncywK IAkJCSAgICBjaGFyICpiaW5hcnksCi0JCQkgICAgc3RydWN0IHN1YnRlc3RzICpzdWJ0ZXN0cywK KwkJCSAgICBzdHJ1Y3Qgc3VidGVzdF9saXN0ICpzdWJ0ZXN0cywKIAkJCSAgICBzdHJ1Y3QganNv bl9vYmplY3QgKnRlc3RzKQogewotCWNoYXIgKmxpbmUgPSBOVUxMLCAqd2FybmluZ3MgPSBOVUxM LCAqZG1lc2cgPSBOVUxMOwotCXNpemVfdCBsaW5lbGVuID0gMCwgd2FybmluZ3NsZW4gPSAwLCBk bWVzZ2xlbiA9IDA7CisJY2hhciAqbGluZSA9IE5VTEw7CisJY2hhciAqd2FybmluZ3MgPSBOVUxM LCAqZHluYW1pY193YXJuaW5ncyA9IE5VTEw7CisJY2hhciAqZG1lc2cgPSBOVUxMLCAqZHluYW1p Y19kbWVzZyA9IE5VTEw7CisJc2l6ZV90IGxpbmVsZW4gPSAwOworCXNpemVfdCB3YXJuaW5nc2xl biA9IDAsIGR5bmFtaWNfd2FybmluZ3NfbGVuID0gMDsKKwlzaXplX3QgZG1lc2dsZW4gPSAwLCBk eW5hbWljX2RtZXNnX2xlbiA9IDA7CiAJc3RydWN0IGpzb25fb2JqZWN0ICpjdXJyZW50X3Rlc3Qg PSBOVUxMOworCXN0cnVjdCBqc29uX29iamVjdCAqY3VycmVudF9keW5hbWljX3Rlc3QgPSBOVUxM OwogCUZJTEUgKmYgPSBmZG9wZW4oZmQsICJyIik7CiAJY2hhciBwaWdsaXRfbmFtZVsyNTZdOwor CWNoYXIgZHluYW1pY19waWdsaXRfbmFtZVsyNTZdOwogCXNzaXplX3QgcmVhZDsKIAlzaXplX3Qg aTsKIAlHUmVnZXggKnJlOwpAQCAtNjU4LDcgKzg0NSw3IEBAIHN0YXRpYyBib29sIGZpbGxfZnJv bV9kbWVzZyhpbnQgZmQsCiAJCXVuc2lnbmVkIGZsYWdzOwogCQl1bnNpZ25lZCBsb25nIGxvbmcg dHNfdXNlYzsKIAkJY2hhciBjb250aW51YXRpb247Ci0JCWNoYXIgKm1lc3NhZ2UsICpzdWJ0ZXN0 OworCQljaGFyICptZXNzYWdlLCAqc3VidGVzdCwgKmR5bmFtaWNfc3VidGVzdDsKIAogCQlpZiAo IXBhcnNlX2RtZXNnX2xpbmUobGluZSwgJmZsYWdzLCAmdHNfdXNlYywgJmNvbnRpbnVhdGlvbiwg Jm1lc3NhZ2UpKQogCQkJY29udGludWU7CkBAIC02NzQsNiArODYxLDE1IEBAIHN0YXRpYyBib29s IGZpbGxfZnJvbV9kbWVzZyhpbnQgZmQsCiAJCQkJZnJlZSh3YXJuaW5ncyk7CiAJCQkJZG1lc2cg PSB3YXJuaW5ncyA9IE5VTEw7CiAJCQkJZG1lc2dsZW4gPSB3YXJuaW5nc2xlbiA9IDA7CisKKwkJ CQlpZiAoY3VycmVudF9keW5hbWljX3Rlc3QgIT0gTlVMTCkKKwkJCQkJYWRkX2RtZXNnKGN1cnJl bnRfZHluYW1pY190ZXN0LCBkeW5hbWljX2RtZXNnLCBkeW5hbWljX2RtZXNnX2xlbiwgZHluYW1p Y193YXJuaW5ncywgZHluYW1pY193YXJuaW5nc19sZW4pOworCisJCQkJZnJlZShkeW5hbWljX2Rt ZXNnKTsKKwkJCQlmcmVlKGR5bmFtaWNfd2FybmluZ3MpOworCQkJCWR5bmFtaWNfZG1lc2cgPSBk eW5hbWljX3dhcm5pbmdzID0gTlVMTDsKKwkJCQlkeW5hbWljX2RtZXNnX2xlbiA9IGR5bmFtaWNf d2FybmluZ3NfbGVuID0gMDsKKwkJCQljdXJyZW50X2R5bmFtaWNfdGVzdCA9IE5VTEw7CiAJCQl9 CiAKIAkJCXN1YnRlc3QgKz0gc3RybGVuKFNUQVJUSU5HX1NVQlRFU1RfRE1FU0cpOwpAQCAtNjgx LDI0ICs4NzcsNTAgQEAgc3RhdGljIGJvb2wgZmlsbF9mcm9tX2RtZXNnKGludCBmZCwKIAkJCWN1 cnJlbnRfdGVzdCA9IGdldF9vcl9jcmVhdGVfanNvbl9vYmplY3QodGVzdHMsIHBpZ2xpdF9uYW1l KTsKIAkJfQogCisJCWlmIChjdXJyZW50X3Rlc3QgIT0gTlVMTCAmJgorCQkgICAgKGR5bmFtaWNf c3VidGVzdCA9IHN0cnN0cihtZXNzYWdlLCBTVEFSVElOR19EWU5BTUlDX1NVQlRFU1RfRE1FU0cp KSAhPSBOVUxMKSB7CisJCQlpZiAoY3VycmVudF9keW5hbWljX3Rlc3QgIT0gTlVMTCkgeworCQkJ CS8qIERvbmUgd2l0aCB0aGUgcHJldmlvdXMgZHluYW1pYyBzdWJ0ZXN0LCBmaWxlIHVwICovCisJ CQkJYWRkX2RtZXNnKGN1cnJlbnRfZHluYW1pY190ZXN0LCBkeW5hbWljX2RtZXNnLCBkeW5hbWlj X2RtZXNnX2xlbiwgZHluYW1pY193YXJuaW5ncywgZHluYW1pY193YXJuaW5nc19sZW4pOworCisJ CQkJZnJlZShkeW5hbWljX2RtZXNnKTsKKwkJCQlmcmVlKGR5bmFtaWNfd2FybmluZ3MpOworCQkJ CWR5bmFtaWNfZG1lc2cgPSBkeW5hbWljX3dhcm5pbmdzID0gTlVMTDsKKwkJCQlkeW5hbWljX2Rt ZXNnX2xlbiA9IGR5bmFtaWNfd2FybmluZ3NfbGVuID0gMDsKKwkJCX0KKworCQkJZHluYW1pY19z dWJ0ZXN0ICs9IHN0cmxlbihTVEFSVElOR19EWU5BTUlDX1NVQlRFU1RfRE1FU0cpOworCQkJZ2Vu ZXJhdGVfcGlnbGl0X25hbWVfZm9yX2R5bmFtaWMocGlnbGl0X25hbWUsIGR5bmFtaWNfc3VidGVz dCwgZHluYW1pY19waWdsaXRfbmFtZSwgc2l6ZW9mKGR5bmFtaWNfcGlnbGl0X25hbWUpKTsKKwkJ CWN1cnJlbnRfZHluYW1pY190ZXN0ID0gZ2V0X29yX2NyZWF0ZV9qc29uX29iamVjdCh0ZXN0cywg ZHluYW1pY19waWdsaXRfbmFtZSk7CisJCX0KKwogCQlpZiAoc2V0dGluZ3MtPnBpZ2xpdF9zdHls ZV9kbWVzZykgewogCQkJaWYgKChmbGFncyAmIDB4MDcpIDw9IHNldHRpbmdzLT5kbWVzZ193YXJu X2xldmVsICYmIGNvbnRpbnVhdGlvbiAhPSAnYycgJiYKIAkJCSAgICBnX3JlZ2V4X21hdGNoKHJl LCBtZXNzYWdlLCAwLCBOVUxMKSkgewogCQkJCWFwcGVuZF9saW5lKCZ3YXJuaW5ncywgJndhcm5p bmdzbGVuLCBmb3JtYXR0ZWQpOworCQkJCWlmIChjdXJyZW50X3Rlc3QgIT0gTlVMTCkKKwkJCQkJ YXBwZW5kX2xpbmUoJmR5bmFtaWNfd2FybmluZ3MsICZkeW5hbWljX3dhcm5pbmdzX2xlbiwgZm9y bWF0dGVkKTsKIAkJCX0KIAkJfSBlbHNlIHsKIAkJCWlmICgoZmxhZ3MgJiAweDA3KSA8PSBzZXR0 aW5ncy0+ZG1lc2dfd2Fybl9sZXZlbCAmJiBjb250aW51YXRpb24gIT0gJ2MnICYmCiAJCQkgICAg IWdfcmVnZXhfbWF0Y2gocmUsIG1lc3NhZ2UsIDAsIE5VTEwpKSB7CiAJCQkJYXBwZW5kX2xpbmUo Jndhcm5pbmdzLCAmd2FybmluZ3NsZW4sIGZvcm1hdHRlZCk7CisJCQkJaWYgKGN1cnJlbnRfdGVz dCAhPSBOVUxMKQorCQkJCQlhcHBlbmRfbGluZSgmZHluYW1pY193YXJuaW5ncywgJmR5bmFtaWNf d2FybmluZ3NfbGVuLCBmb3JtYXR0ZWQpOwogCQkJfQogCQl9CiAJCWFwcGVuZF9saW5lKCZkbWVz ZywgJmRtZXNnbGVuLCBmb3JtYXR0ZWQpOworCQlpZiAoY3VycmVudF90ZXN0ICE9IE5VTEwpCisJ CQlhcHBlbmRfbGluZSgmZHluYW1pY19kbWVzZywgJmR5bmFtaWNfZG1lc2dfbGVuLCBmb3JtYXR0 ZWQpOwogCQlmcmVlKGZvcm1hdHRlZCk7CiAJfQogCWZyZWUobGluZSk7CiAKIAlpZiAoY3VycmVu dF90ZXN0ICE9IE5VTEwpIHsKIAkJYWRkX2RtZXNnKGN1cnJlbnRfdGVzdCwgZG1lc2csIGRtZXNn bGVuLCB3YXJuaW5ncywgd2FybmluZ3NsZW4pOworCQlpZiAoY3VycmVudF9keW5hbWljX3Rlc3Qg IT0gTlVMTCkgeworCQkJYWRkX2RtZXNnKGN1cnJlbnRfZHluYW1pY190ZXN0LCBkeW5hbWljX2Rt ZXNnLCBkeW5hbWljX2RtZXNnX2xlbiwgZHluYW1pY193YXJuaW5ncywgZHluYW1pY193YXJuaW5n c19sZW4pOworCQl9CiAJfSBlbHNlIHsKIAkJLyoKIAkJICogRGlkbid0IGdldCBhbnkgc3VidGVz dCBtZXNzYWdlcyBhdCBhbGwuIElmIHRoZXJlCkBAIC03MDYsNyArOTI4LDcgQEAgc3RhdGljIGJv b2wgZmlsbF9mcm9tX2RtZXNnKGludCBmZCwKIAkJICogdGhlbS4KIAkJICovCiAJCWZvciAoaSA9 IDA7IGkgPCBzdWJ0ZXN0cy0+c2l6ZTsgaSsrKSB7Ci0JCQlnZW5lcmF0ZV9waWdsaXRfbmFtZShi aW5hcnksIHN1YnRlc3RzLT5uYW1lc1tpXSwgcGlnbGl0X25hbWUsIHNpemVvZihwaWdsaXRfbmFt ZSkpOworCQkJZ2VuZXJhdGVfcGlnbGl0X25hbWUoYmluYXJ5LCBzdWJ0ZXN0cy0+c3Vic1tpXS5u YW1lLCBwaWdsaXRfbmFtZSwgc2l6ZW9mKHBpZ2xpdF9uYW1lKSk7CiAJCQljdXJyZW50X3Rlc3Qg PSBnZXRfb3JfY3JlYXRlX2pzb25fb2JqZWN0KHRlc3RzLCBwaWdsaXRfbmFtZSk7CiAJCQkvKgog CQkJICogRG9uJ3QgYm90aGVyIHdpdGggd2FybmluZ3MsIGFueSBzdWJ0ZXN0cwpAQCAtNzI2LDcg Kzk0OCw5IEBAIHN0YXRpYyBib29sIGZpbGxfZnJvbV9kbWVzZyhpbnQgZmQsCiAJYWRkX2VtcHR5 X2RtZXNnc193aGVyZV9taXNzaW5nKHRlc3RzLCBiaW5hcnksIHN1YnRlc3RzKTsKIAogCWZyZWUo ZG1lc2cpOworCWZyZWUoZHluYW1pY19kbWVzZyk7CiAJZnJlZSh3YXJuaW5ncyk7CisJZnJlZShk eW5hbWljX3dhcm5pbmdzKTsKIAlnX3JlZ2V4X3VucmVmKHJlKTsKIAlmY2xvc2UoZik7CiAJcmV0 dXJuIHRydWU7CkBAIC03NDgsMzkgKzk3Miw5IEBAIHN0YXRpYyBjb25zdCBjaGFyICpyZXN1bHRf ZnJvbV9leGl0Y29kZShpbnQgZXhpdGNvZGUpCiAJfQogfQogCi1zdGF0aWMgdm9pZCBhZGRfc3Vi dGVzdChzdHJ1Y3Qgc3VidGVzdHMgKnN1YnRlc3RzLCBjaGFyICpzdWJ0ZXN0KQotewotCXNpemVf dCBsZW4gPSBzdHJsZW4oc3VidGVzdCk7Ci0Jc2l6ZV90IGk7Ci0KLQlpZiAobGVuID09IDApCi0J CXJldHVybjsKLQotCWlmIChzdWJ0ZXN0W2xlbiAtIDFdID09ICdcbicpCi0JCXN1YnRlc3RbbGVu IC0gMV0gPSAnXDAnOwotCi0JLyogRG9uJ3QgYWRkIGlmIHdlIGFscmVhZHkgaGF2ZSB0aGlzIHN1 YnRlc3QgKi8KLQlmb3IgKGkgPSAwOyBpIDwgc3VidGVzdHMtPnNpemU7IGkrKykKLQkJaWYgKCFz dHJjbXAoc3VidGVzdCwgc3VidGVzdHMtPm5hbWVzW2ldKSkKLQkJCXJldHVybjsKLQotCXN1YnRl c3RzLT5zaXplKys7Ci0Jc3VidGVzdHMtPm5hbWVzID0gcmVhbGxvYyhzdWJ0ZXN0cy0+bmFtZXMs IHNpemVvZigqc3VidGVzdHMtPm5hbWVzKSAqIHN1YnRlc3RzLT5zaXplKTsKLQlzdWJ0ZXN0cy0+ bmFtZXNbc3VidGVzdHMtPnNpemUgLSAxXSA9IHN1YnRlc3Q7Ci19Ci0KLXN0YXRpYyB2b2lkIGZy ZWVfc3VidGVzdHMoc3RydWN0IHN1YnRlc3RzICpzdWJ0ZXN0cykKLXsKLQlzaXplX3QgaTsKLQot CWZvciAoaSA9IDA7IGkgPCBzdWJ0ZXN0cy0+c2l6ZTsgaSsrKQotCQlmcmVlKHN1YnRlc3RzLT5u YW1lc1tpXSk7Ci0JZnJlZShzdWJ0ZXN0cy0+bmFtZXMpOwotfQotCiBzdGF0aWMgdm9pZCBmaWxs X2Zyb21fam91cm5hbChpbnQgZmQsCiAJCQkgICAgICBzdHJ1Y3Qgam9iX2xpc3RfZW50cnkgKmVu dHJ5LAotCQkJICAgICAgc3RydWN0IHN1YnRlc3RzICpzdWJ0ZXN0cywKKwkJCSAgICAgIHN0cnVj dCBzdWJ0ZXN0X2xpc3QgKnN1YnRlc3RzLAogCQkJICAgICAgc3RydWN0IHJlc3VsdHMgKnJlc3Vs dHMpCiB7CiAJRklMRSAqZiA9IGZkb3BlbihmZCwgInIiKTsKQEAgLTgyMCw3ICsxMDE0LDcgQEAg c3RhdGljIHZvaWQgZmlsbF9mcm9tX2pvdXJuYWwoaW50IGZkLAogCiAJCQlpZiAoc3VidGVzdHMt PnNpemUpIHsKIAkJCQkvKiBBc3NpZ24gdGhlIHRpbWVvdXQgdG8gdGhlIHByZXZpb3VzbHkgYXBw ZWFyZWQgc3VidGVzdCAqLwotCQkJCWNoYXIgKmxhc3Rfc3VidGVzdCA9IHN1YnRlc3RzLT5uYW1l c1tzdWJ0ZXN0cy0+c2l6ZSAtIDFdOworCQkJCWNoYXIgKmxhc3Rfc3VidGVzdCA9IHN1YnRlc3Rz LT5zdWJzW3N1YnRlc3RzLT5zaXplIC0gMV0ubmFtZTsKIAkJCQljaGFyIHBpZ2xpdF9uYW1lWzI1 Nl07CiAJCQkJY2hhciAqcCA9IHN0cmNocihsaW5lLCAnKCcpOwogCQkJCWRvdWJsZSB0aW1lID0g MC4wOwpAQCAtOTAyLDEyICsxMDk2LDEzIEBAIHN0YXRpYyB2b2lkIG92ZXJyaWRlX3Jlc3VsdF9z aW5nbGUoc3RydWN0IGpzb25fb2JqZWN0ICpvYmopCiB9CiAKIHN0YXRpYyB2b2lkIG92ZXJyaWRl X3Jlc3VsdHMoY2hhciAqYmluYXJ5LAotCQkJICAgICBzdHJ1Y3Qgc3VidGVzdHMgKnN1YnRlc3Rz LAorCQkJICAgICBzdHJ1Y3Qgc3VidGVzdF9saXN0ICpzdWJ0ZXN0cywKIAkJCSAgICAgc3RydWN0 IGpzb25fb2JqZWN0ICp0ZXN0cykKIHsKIAlzdHJ1Y3QganNvbl9vYmplY3QgKm9iajsKIAljaGFy IHBpZ2xpdF9uYW1lWzI1Nl07Ci0Jc2l6ZV90IGk7CisJY2hhciBkeW5hbWljX3BpZ2xpdF9uYW1l WzI1Nl07CisJc2l6ZV90IGksIGs7CiAKIAlpZiAoc3VidGVzdHMtPnNpemUgPT0gMCkgewogCQln ZW5lcmF0ZV9waWdsaXRfbmFtZShiaW5hcnksIE5VTEwsIHBpZ2xpdF9uYW1lLCBzaXplb2YocGln bGl0X25hbWUpKTsKQEAgLTkxNyw5ICsxMTEyLDE2IEBAIHN0YXRpYyB2b2lkIG92ZXJyaWRlX3Jl c3VsdHMoY2hhciAqYmluYXJ5LAogCX0KIAogCWZvciAoaSA9IDA7IGkgPCBzdWJ0ZXN0cy0+c2l6 ZTsgaSsrKSB7Ci0JCWdlbmVyYXRlX3BpZ2xpdF9uYW1lKGJpbmFyeSwgc3VidGVzdHMtPm5hbWVz W2ldLCBwaWdsaXRfbmFtZSwgc2l6ZW9mKHBpZ2xpdF9uYW1lKSk7CisJCWdlbmVyYXRlX3BpZ2xp dF9uYW1lKGJpbmFyeSwgc3VidGVzdHMtPnN1YnNbaV0ubmFtZSwgcGlnbGl0X25hbWUsIHNpemVv ZihwaWdsaXRfbmFtZSkpOwogCQlvYmogPSBnZXRfb3JfY3JlYXRlX2pzb25fb2JqZWN0KHRlc3Rz LCBwaWdsaXRfbmFtZSk7CiAJCW92ZXJyaWRlX3Jlc3VsdF9zaW5nbGUob2JqKTsKKworCQlmb3Ig KGsgPSAwOyBrIDwgc3VidGVzdHMtPnN1YnNbaV0uZHluYW1pY19zaXplOyBrKyspIHsKKwkJCWdl bmVyYXRlX3BpZ2xpdF9uYW1lX2Zvcl9keW5hbWljKHBpZ2xpdF9uYW1lLCBzdWJ0ZXN0cy0+c3Vi c1tpXS5keW5hbWljX25hbWVzW2tdLAorCQkJCQkJCSBkeW5hbWljX3BpZ2xpdF9uYW1lLCBzaXpl b2YoZHluYW1pY19waWdsaXRfbmFtZSkpOworCQkJb2JqID0gZ2V0X29yX2NyZWF0ZV9qc29uX29i amVjdCh0ZXN0cywgZHluYW1pY19waWdsaXRfbmFtZSk7CisJCQlvdmVycmlkZV9yZXN1bHRfc2lu Z2xlKG9iaik7CisJCX0KIAl9CiB9CiAKQEAgLTk2NCwxMyArMTE2NiwxNCBAQCBzdGF0aWMgdm9p ZCBhZGRfcmVzdWx0X3RvX3RvdGFscyhzdHJ1Y3QganNvbl9vYmplY3QgKnRvdGFscywKIH0KIAog c3RhdGljIHZvaWQgYWRkX3RvX3RvdGFscyhjb25zdCBjaGFyICpiaW5hcnksCi0JCQkgIHN0cnVj dCBzdWJ0ZXN0cyAqc3VidGVzdHMsCisJCQkgIHN0cnVjdCBzdWJ0ZXN0X2xpc3QgKnN1YnRlc3Rz LAogCQkJICBzdHJ1Y3QgcmVzdWx0cyAqcmVzdWx0cykKIHsKIAlzdHJ1Y3QganNvbl9vYmplY3Qg KnRlc3QsICpyZXN1bHRvYmosICplbXB0eXN0cnRvdGFsLCAqcm9vdHRvdGFsLCAqYmluYXJ5dG90 YWw7CiAJY2hhciBwaWdsaXRfbmFtZVsyNTZdOworCWNoYXIgZHluYW1pY19waWdsaXRfbmFtZVsy NTZdOwogCWNvbnN0IGNoYXIgKnJlc3VsdDsKLQlzaXplX3QgaTsKKwlzaXplX3QgaSwgazsKIAog CWdlbmVyYXRlX3BpZ2xpdF9uYW1lKGJpbmFyeSwgTlVMTCwgcGlnbGl0X25hbWUsIHNpemVvZihw aWdsaXRfbmFtZSkpOwogCWVtcHR5c3RydG90YWwgPSBnZXRfdG90YWxzX29iamVjdChyZXN1bHRz LT50b3RhbHMsICIiKTsKQEAgLTk5MSw3ICsxMTk0LDcgQEAgc3RhdGljIHZvaWQgYWRkX3RvX3Rv dGFscyhjb25zdCBjaGFyICpiaW5hcnksCiAJfQogCiAJZm9yIChpID0gMDsgaSA8IHN1YnRlc3Rz LT5zaXplOyBpKyspIHsKLQkJZ2VuZXJhdGVfcGlnbGl0X25hbWUoYmluYXJ5LCBzdWJ0ZXN0cy0+ bmFtZXNbaV0sIHBpZ2xpdF9uYW1lLCBzaXplb2YocGlnbGl0X25hbWUpKTsKKwkJZ2VuZXJhdGVf cGlnbGl0X25hbWUoYmluYXJ5LCBzdWJ0ZXN0cy0+c3Vic1tpXS5uYW1lLCBwaWdsaXRfbmFtZSwg c2l6ZW9mKHBpZ2xpdF9uYW1lKSk7CiAJCXRlc3QgPSBnZXRfb3JfY3JlYXRlX2pzb25fb2JqZWN0 KHJlc3VsdHMtPnRlc3RzLCBwaWdsaXRfbmFtZSk7CiAJCWlmICghanNvbl9vYmplY3Rfb2JqZWN0 X2dldF9leCh0ZXN0LCAicmVzdWx0IiwgJnJlc3VsdG9iaikpIHsKIAkJCWZwcmludGYoc3RkZXJy LCAiV2FybmluZzogTm8gcmVzdWx0cyBzZXQgZm9yICVzXG4iLCBwaWdsaXRfbmFtZSk7CkBAIC0x MDAxLDYgKzEyMDQsMjEgQEAgc3RhdGljIHZvaWQgYWRkX3RvX3RvdGFscyhjb25zdCBjaGFyICpi aW5hcnksCiAJCWFkZF9yZXN1bHRfdG9fdG90YWxzKGVtcHR5c3RydG90YWwsIHJlc3VsdCk7CiAJ CWFkZF9yZXN1bHRfdG9fdG90YWxzKHJvb3R0b3RhbCwgcmVzdWx0KTsKIAkJYWRkX3Jlc3VsdF90 b190b3RhbHMoYmluYXJ5dG90YWwsIHJlc3VsdCk7CisKKwkJZm9yIChrID0gMDsgayA8IHN1YnRl c3RzLT5zdWJzW2ldLmR5bmFtaWNfc2l6ZTsgaysrKSB7CisJCQlnZW5lcmF0ZV9waWdsaXRfbmFt ZV9mb3JfZHluYW1pYyhwaWdsaXRfbmFtZSwgc3VidGVzdHMtPnN1YnNbaV0uZHluYW1pY19uYW1l c1trXSwKKwkJCQkJCQkgZHluYW1pY19waWdsaXRfbmFtZSwgc2l6ZW9mKGR5bmFtaWNfcGlnbGl0 X25hbWUpKTsKKwkJCXRlc3QgPSBnZXRfb3JfY3JlYXRlX2pzb25fb2JqZWN0KHJlc3VsdHMtPnRl c3RzLCBkeW5hbWljX3BpZ2xpdF9uYW1lKTsKKwkJCWlmICghanNvbl9vYmplY3Rfb2JqZWN0X2dl dF9leCh0ZXN0LCAicmVzdWx0IiwgJnJlc3VsdG9iaikpIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwg Ildhcm5pbmc6IE5vIHJlc3VsdHMgc2V0IGZvciAlc1xuIiwgZHluYW1pY19waWdsaXRfbmFtZSk7 CisJCQkJcmV0dXJuOworCQkJfQorCQkJcmVzdWx0ID0ganNvbl9vYmplY3RfZ2V0X3N0cmluZyhy ZXN1bHRvYmopOworCQkJYWRkX3Jlc3VsdF90b190b3RhbHMoZW1wdHlzdHJ0b3RhbCwgcmVzdWx0 KTsKKwkJCWFkZF9yZXN1bHRfdG9fdG90YWxzKHJvb3R0b3RhbCwgcmVzdWx0KTsKKwkJCWFkZF9y ZXN1bHRfdG9fdG90YWxzKGJpbmFyeXRvdGFsLCByZXN1bHQpOworCQl9CisKIAl9CiB9CiAKQEAg LTEwMTAsNyArMTIyOCw3IEBAIHN0YXRpYyBib29sIHBhcnNlX3Rlc3RfZGlyZWN0b3J5KGludCBk aXJmZCwKIAkJCQkgc3RydWN0IHJlc3VsdHMgKnJlc3VsdHMpCiB7CiAJaW50IGZkc1tfRl9MQVNU XTsKLQlzdHJ1Y3Qgc3VidGVzdHMgc3VidGVzdHMgPSB7fTsKKwlzdHJ1Y3Qgc3VidGVzdF9saXN0 IHN1YnRlc3RzID0ge307CiAJYm9vbCBzdGF0dXMgPSB0cnVlOwogCiAJaWYgKCFvcGVuX291dHB1 dF9maWxlcyhkaXJmZCwgZmRzLCBmYWxzZSkpIHsKQEAgLTEwNDYsNyArMTI2NCw3IEBAIHN0YXRp YyB2b2lkIHRyeV9hZGRfbm90cnVuX3Jlc3VsdHMoY29uc3Qgc3RydWN0IGpvYl9saXN0X2VudHJ5 ICplbnRyeSwKIAkJCQkgICBjb25zdCBzdHJ1Y3Qgc2V0dGluZ3MgKnNldHRpbmdzLAogCQkJCSAg IHN0cnVjdCByZXN1bHRzICpyZXN1bHRzKQogewotCXN0cnVjdCBzdWJ0ZXN0cyBzdWJ0ZXN0cyA9 IHt9OworCXN0cnVjdCBzdWJ0ZXN0X2xpc3Qgc3VidGVzdHMgPSB7fTsKIAlzdHJ1Y3QganNvbl9v YmplY3QgKmN1cnJlbnRfdGVzdDsKIAlzaXplX3QgaTsKIApAQCAtMTE4Myw3ICsxNDAxLDcgQEAg c3RydWN0IGpzb25fb2JqZWN0ICpnZW5lcmF0ZV9yZXN1bHRzX2pzb24oaW50IGRpcmZkKQogCWlm ICgoZmQgPSBvcGVuYXQoZGlyZmQsICJhYm9ydGVkLnR4dCIsIE9fUkRPTkxZKSkgPj0gMCkgewog CQljaGFyIGJ1Zls0MDk2XTsKIAkJY2hhciBwaWdsaXRfbmFtZVtdID0gImlndEBydW5uZXJAYWJv cnRlZCI7Ci0JCXN0cnVjdCBzdWJ0ZXN0cyBhYm9ydHN1YiA9IHt9OworCQlzdHJ1Y3Qgc3VidGVz dF9saXN0IGFib3J0c3ViID0ge307CiAJCXN0cnVjdCBqc29uX29iamVjdCAqYWJvcnR0ZXN0ID0g Z2V0X29yX2NyZWF0ZV9qc29uX29iamVjdChyZXN1bHRzLnRlc3RzLCBwaWdsaXRfbmFtZSk7CiAJ CXNzaXplX3QgczsKIAotLSAKMi4xOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2lndC1kZXY=