From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id D42B26E35F for ; Wed, 19 Jun 2019 11:51:25 +0000 (UTC) From: Petri Latvala Date: Wed, 19 Jun 2019 14:51:04 +0300 Message-Id: <20190619115107.2908-4-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 3/6] runner/resultgen: Refactor output parsing 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: SW5zdGVhZCBvZiBzZWFyY2hpbmcgYmFjayBhbmQgZm9ydGggZm9yIHByb3BlciBsaW5lcywgZmly c3QgZmluZCBhbGwKbGluZXMgdGhhdCB3ZSBjb3VsZCBiZSBpbnRlcmVzdGVkIGluIHdpdGggb25l IHBhc3MgdGhyb3VnaCB0aGUgb3V0cHV0LAphbmQgdXNlIHRoZSBwb3NpdGlvbnMgb2YgZm91bmQg bGluZXMgdG8gZGVsaW1pdCB0aGUgZXh0cmFjdGVkIG91dHB1dHMuCgpTaWduZWQtb2ZmLWJ5OiBQ ZXRyaSBMYXR2YWxhIDxwZXRyaS5sYXR2YWxhQGludGVsLmNvbT4KLS0tCiBydW5uZXIvcmVzdWx0 Z2VuLmMgfCAyNTkgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAxIGZpbGUgY2hhbmdlZCwgMTM0IGluc2VydGlvbnMoKyksIDEyNSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9ydW5uZXIvcmVzdWx0Z2VuLmMgYi9ydW5uZXIvcmVzdWx0Z2VuLmMKaW5kZXgg N2I0Y2Q1MTkuLmJhZGY2NTAyIDEwMDY0NAotLS0gYS9ydW5uZXIvcmVzdWx0Z2VuLmMKKysrIGIv cnVubmVyL3Jlc3VsdGdlbi5jCkBAIC0xMCw2ICsxMCw3IEBACiAKICNpbmNsdWRlIDxqc29uLmg+ CiAKKyNpbmNsdWRlICJpZ3RfYXV4LmgiCiAjaW5jbHVkZSAiaWd0X2NvcmUuaCIKICNpbmNsdWRl ICJyZXN1bHRnZW4uaCIKICNpbmNsdWRlICJzZXR0aW5ncy5oIgpAQCAtNTksMjggKzYwLDcgQEAg c3RhdGljIGNoYXIgKmZpbmRfbGluZV9zdGFydGluZ193aXRoKGNoYXIgKmhheXN0YWNrLCBjb25z dCBjaGFyICpuZWVkbGUsIGNoYXIgKmUKIAlyZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIGNoYXIg KmZpbmRfbGluZV9zdGFydGluZ193aXRoX2VpdGhlcihjaGFyICpoYXlzdGFjaywKLQkJCQkJICAg IGNvbnN0IGNoYXIgKm5lZWRsZTEsCi0JCQkJCSAgICBjb25zdCBjaGFyICpuZWVkbGUyLAotCQkJ CQkgICAgY2hhciAqZW5kKQotewotCXdoaWxlIChoYXlzdGFjayA8IGVuZCkgewotCQljaGFyICps aW5lX2VuZCA9IG1lbWNocihoYXlzdGFjaywgJ1xuJywgZW5kIC0gaGF5c3RhY2spOwotCQlzaXpl X3QgbGluZWxlbiA9IGxpbmVfZW5kICE9IE5VTEwgPyBsaW5lX2VuZCAtIGhheXN0YWNrIDogZW5k IC0gaGF5c3RhY2s7Ci0JCWlmICgobGluZWxlbiA+PSBzdHJsZW4obmVlZGxlMSkgJiYgIW1lbWNt cChoYXlzdGFjaywgbmVlZGxlMSwgc3RybGVuKG5lZWRsZTEpKSkgfHwKLQkJICAgIChsaW5lbGVu ID49IHN0cmxlbihuZWVkbGUyKSAmJiAhbWVtY21wKGhheXN0YWNrLCBuZWVkbGUyLCBzdHJsZW4o bmVlZGxlMikpKSkKLQkJCXJldHVybiBoYXlzdGFjazsKLQotCQlpZiAobGluZV9lbmQgPT0gTlVM TCkKLQkJCXJldHVybiBOVUxMOwotCi0JCWhheXN0YWNrID0gbGluZV9lbmQgKyAxOwotCX0KLQot CXJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgY2hhciAqbmV4dF9saW5lKGNoYXIgKmxpbmUsIGNo YXIgKmJ1ZmVuZCkKK3N0YXRpYyBjb25zdCBjaGFyICpuZXh0X2xpbmUoY29uc3QgY2hhciAqbGlu ZSwgY29uc3QgY2hhciAqYnVmZW5kKQogewogCWNoYXIgKnJldDsKIApAQCAtOTcsNDUgKzc3LDYg QEAgc3RhdGljIGNoYXIgKm5leHRfbGluZShjaGFyICpsaW5lLCBjaGFyICpidWZlbmQpCiAJCXJl dHVybiBOVUxMOwogfQogCi1zdGF0aWMgY2hhciAqZmluZF9saW5lX2FmdGVyX2xhc3QoY2hhciAq YmVnaW4sCi0JCQkJICBjb25zdCBjaGFyICpuZWVkbGUxLAotCQkJCSAgY29uc3QgY2hhciAqbmVl ZGxlMiwKLQkJCQkgIGNoYXIgKmVuZCkKLXsKLQljaGFyICpvbmUsICp0d287Ci0JY2hhciAqY3Vy cmVudF9wb3MgPSBiZWdpbjsKLQljaGFyICpuZWVkbGUxX25ld2xpbmUgPSBtYWxsb2Moc3RybGVu KG5lZWRsZTEpICsgMik7Ci0JY2hhciAqbmVlZGxlMl9uZXdsaW5lID0gbWFsbG9jKHN0cmxlbihu ZWVkbGUyKSArIDIpOwotCi0JbmVlZGxlMV9uZXdsaW5lWzBdID0gbmVlZGxlMl9uZXdsaW5lWzBd ID0gJ1xuJzsKLQlzdHJjcHkobmVlZGxlMV9uZXdsaW5lICsgMSwgbmVlZGxlMSk7Ci0Jc3RyY3B5 KG5lZWRsZTJfbmV3bGluZSArIDEsIG5lZWRsZTIpOwotCi0Jd2hpbGUgKHRydWUpIHsKLQkJb25l ID0gbWVtbWVtKGN1cnJlbnRfcG9zLCBlbmQgLSBjdXJyZW50X3BvcywgbmVlZGxlMV9uZXdsaW5l LCBzdHJsZW4obmVlZGxlMV9uZXdsaW5lKSk7Ci0JCXR3byA9IG1lbW1lbShjdXJyZW50X3Bvcywg ZW5kIC0gY3VycmVudF9wb3MsIG5lZWRsZTJfbmV3bGluZSwgc3RybGVuKG5lZWRsZTJfbmV3bGlu ZSkpOwotCQlpZiAob25lID09IE5VTEwgJiYgdHdvID09IE5VTEwpCi0JCQlicmVhazsKLQotCQlp ZiAob25lICE9IE5VTEwgJiYgY3VycmVudF9wb3MgPCBvbmUpCi0JCQljdXJyZW50X3BvcyA9IG9u ZTsKLQkJaWYgKHR3byAhPSBOVUxMICYmIGN1cnJlbnRfcG9zIDwgdHdvKQotCQkJY3VycmVudF9w b3MgPSB0d287Ci0KLQkJb25lID0gbmV4dF9saW5lKGN1cnJlbnRfcG9zLCBlbmQpOwotCQlpZiAo b25lICE9IE5VTEwpCi0JCQljdXJyZW50X3BvcyA9IG9uZTsKLQl9Ci0JZnJlZShuZWVkbGUxX25l d2xpbmUpOwotCWZyZWUobmVlZGxlMl9uZXdsaW5lKTsKLQotCW9uZSA9IG1lbWNocihjdXJyZW50 X3BvcywgJ1xuJywgZW5kIC0gY3VycmVudF9wb3MpOwotCWlmIChvbmUgIT0gTlVMTCkKLQkJcmV0 dXJuICsrb25lOwotCi0JcmV0dXJuIGN1cnJlbnRfcG9zOwotfQotCiBzdGF0aWMgc2l6ZV90IGNv dW50X2xpbmVzKGNvbnN0IGNoYXIgKmJ1ZiwgY29uc3QgY2hhciAqYnVmZW5kKQogewogCXNpemVf dCByZXQgPSAwOwpAQCAtMTY2LDcgKzEwNyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgewogCXsg IkNSQVNIIiwgImNyYXNoIiB9LAogCXsgIlRJTUVPVVQiLCAidGltZW91dCIgfSwKIH07Ci1zdGF0 aWMgdm9pZCBwYXJzZV9yZXN1bHRfc3RyaW5nKGNoYXIgKnJlc3VsdHN0cmluZywgc2l6ZV90IGxl biwgY29uc3QgY2hhciAqKnJlc3VsdCwgZG91YmxlICp0aW1lKQorc3RhdGljIHZvaWQgcGFyc2Vf cmVzdWx0X3N0cmluZyhjb25zdCBjaGFyICpyZXN1bHRzdHJpbmcsIHNpemVfdCBsZW4sIGNvbnN0 IGNoYXIgKipyZXN1bHQsIGRvdWJsZSAqdGltZSkKIHsKIAlzaXplX3QgaTsKIAlzaXplX3Qgd29y ZGxlbiA9IDA7CkBAIC0yMDYsMTkgKzE0NywyMCBAQCBzdGF0aWMgdm9pZCBwYXJzZV9yZXN1bHRf c3RyaW5nKGNoYXIgKnJlc3VsdHN0cmluZywgc2l6ZV90IGxlbiwgY29uc3QgY2hhciAqKnJlcwog CX0KIH0KIAotc3RhdGljIHZvaWQgcGFyc2Vfc3VidGVzdF9yZXN1bHQoY2hhciAqc3VidGVzdCwg Y29uc3QgY2hhciAqKnJlc3VsdCwgZG91YmxlICp0aW1lLCBjaGFyICpidWYsIGNoYXIgKmJ1ZmVu ZCkKK3N0YXRpYyB2b2lkIHBhcnNlX3N1YnRlc3RfcmVzdWx0KGNvbnN0IGNoYXIgKnN1YnRlc3Qs CisJCQkJIGNvbnN0IGNoYXIgKipyZXN1bHQsCisJCQkJIGRvdWJsZSAqdGltZSwKKwkJCQkgY29u c3QgY2hhciAqbGluZSwKKwkJCQkgY29uc3QgY2hhciAqYnVmZW5kKQogewotCWNoYXIgKmxpbmU7 Ci0JY2hhciAqbGluZV9lbmQ7Ci0JY2hhciAqcmVzdWx0c3RyaW5nOwotCXNpemVfdCBsaW5lbGVu OworCWNvbnN0IGNoYXIgKnJlc3VsdHN0cmluZzsKIAlzaXplX3Qgc3VidGVzdGxlbiA9IHN0cmxl bihzdWJ0ZXN0KTsKKwljb25zdCBjaGFyICpsaW5lX2VuZDsKKwlzaXplX3QgbGluZWxlbjsKIAot CSpyZXN1bHQgPSBOVUxMOworCSpyZXN1bHQgPSAiaW5jb21wbGV0ZSI7CiAJKnRpbWUgPSAwLjA7 CiAKLQlpZiAoIWJ1ZikgcmV0dXJuOwotCiAJLyoKIAkgKiBUaGUgcmVzdWx0IGxpbmUgc3RydWN0 dXJlIGlzOgogCSAqCkBAIC0yMzUsMTggKzE3NywxNyBAQCBzdGF0aWMgdm9pZCBwYXJzZV9zdWJ0 ZXN0X3Jlc3VsdChjaGFyICpzdWJ0ZXN0LCBjb25zdCBjaGFyICoqcmVzdWx0LCBkb3VibGUgKnRp bQogCSAqIFN1YnRlc3Qgc3VidGVzdG5hbWU6IFBBU1MgKDAuMDAzcykKIAkgKi8KIAotCWxpbmUg PSBmaW5kX2xpbmVfc3RhcnRpbmdfd2l0aChidWYsIFNVQlRFU1RfUkVTVUxULCBidWZlbmQpOwot CWlmICghbGluZSkgewotCQkqcmVzdWx0ID0gImluY29tcGxldGUiOworCWlmICghbGluZSkKIAkJ cmV0dXJuOwotCX0KIAogCWxpbmVfZW5kID0gbWVtY2hyKGxpbmUsICdcbicsIGJ1ZmVuZCAtIGxp bmUpOwogCWxpbmVsZW4gPSBsaW5lX2VuZCAhPSBOVUxMID8gbGluZV9lbmQgLSBsaW5lIDogYnVm ZW5kIC0gbGluZTsKIAogCWlmIChzdHJsZW4oU1VCVEVTVF9SRVNVTFQpICsgc3VidGVzdGxlbiAr IHN0cmxlbigiOiAiKSA+IGxpbmVsZW4gfHwKLQkgICAgc3RybmNtcChsaW5lICsgc3RybGVuKFNV QlRFU1RfUkVTVUxUKSwgc3VidGVzdCwgc3VidGVzdGxlbikpCi0JCXJldHVybiBwYXJzZV9zdWJ0 ZXN0X3Jlc3VsdChzdWJ0ZXN0LCByZXN1bHQsIHRpbWUsIGxpbmUgKyBsaW5lbGVuLCBidWZlbmQp OworCSAgICBzdHJuY21wKGxpbmUgKyBzdHJsZW4oU1VCVEVTVF9SRVNVTFQpLCBzdWJ0ZXN0LCBz dWJ0ZXN0bGVuKSkgeworCQkvKiBUaGlzIGlzIG5vdCB0aGUgY29ycmVjdCByZXN1bHQgbGluZSAq LworCQlyZXR1cm47CisJfQogCiAJcmVzdWx0c3RyaW5nID0gbGluZSArIHN0cmxlbihTVUJURVNU X1JFU1VMVCkgKyBzdWJ0ZXN0bGVuICsgc3RybGVuKCI6ICIpOwogCXBhcnNlX3Jlc3VsdF9zdHJp bmcocmVzdWx0c3RyaW5nLCBsaW5lbGVuIC0gKHJlc3VsdHN0cmluZyAtIGxpbmUpLCByZXN1bHQs IHRpbWUpOwpAQCAtMzA4LDYgKzI0OSw1OSBAQCBzdGF0aWMgdm9pZCBzZXRfcnVudGltZShzdHJ1 Y3QganNvbl9vYmplY3QgKm9iaiwgZG91YmxlIHRpbWUpCiAJCQkgICAgICAganNvbl9vYmplY3Rf bmV3X2RvdWJsZSh0aW1lKSk7CiB9CiAKK3N0cnVjdCBtYXRjaF9pdGVtCit7CisJY29uc3QgY2hh ciAqd2hlcmU7CisJY29uc3QgY2hhciAqd2hhdDsKK307CisKK3N0cnVjdCBtYXRjaGVzCit7CisJ c3RydWN0IG1hdGNoX2l0ZW0gKml0ZW1zOworCXNpemVfdCBzaXplOworfTsKKworc3RhdGljIHZv aWQgbWF0Y2hfYWRkKHN0cnVjdCBtYXRjaGVzICptYXRjaGVzLCBjb25zdCBjaGFyICp3aGVyZSwg Y29uc3QgY2hhciAqd2hhdCkKK3sKKwlzdHJ1Y3QgbWF0Y2hfaXRlbSBuZXdpdGVtID0geyB3aGVy ZSwgd2hhdCB9OworCisJbWF0Y2hlcy0+c2l6ZSsrOworCW1hdGNoZXMtPml0ZW1zID0gcmVhbGxv YyhtYXRjaGVzLT5pdGVtcywgbWF0Y2hlcy0+c2l6ZSAqIHNpemVvZigqbWF0Y2hlcy0+aXRlbXMp KTsKKwltYXRjaGVzLT5pdGVtc1ttYXRjaGVzLT5zaXplIC0gMV0gPSBuZXdpdGVtOworfQorCitz dGF0aWMgc3RydWN0IG1hdGNoZXMgZmluZF9tYXRjaGVzKGNvbnN0IGNoYXIgKmJ1ZiwgY29uc3Qg Y2hhciAqYnVmZW5kLAorCQkJCSAgIGNvbnN0IGNoYXIgKipuZWVkbGVzKQoreworCXN0cnVjdCBt YXRjaGVzIHJldCA9IHt9OworCisJd2hpbGUgKGJ1ZiA8IGJ1ZmVuZCkgeworCQljb25zdCBjaGFy ICoqbmVlZGxlOworCisJCWZvciAobmVlZGxlID0gbmVlZGxlczsgKm5lZWRsZTsgbmVlZGxlKysp IHsKKwkJCWlmIChidWZlbmQgLSBidWYgPCBzdHJsZW4oKm5lZWRsZSkpCisJCQkJY29udGludWU7 CisKKwkJCWlmICghbWVtY21wKGJ1ZiwgKm5lZWRsZSwgc3RybGVuKCpuZWVkbGUpKSkgeworCQkJ CW1hdGNoX2FkZCgmcmV0LCBidWYsICpuZWVkbGUpOworCQkJCWdvdG8gZW5kX2ZpbmQ7CisJCQl9 CisJCX0KKworCWVuZF9maW5kOgorCQlidWYgPSBuZXh0X2xpbmUoYnVmLCBidWZlbmQpOworCQlp ZiAoIWJ1ZikKKwkJCWJyZWFrOworCX0KKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lk IGZyZWVfbWF0Y2hlcyhzdHJ1Y3QgbWF0Y2hlcyAqbWF0Y2hlcykKK3sKKwlmcmVlKG1hdGNoZXMt Pml0ZW1zKTsKK30KKwogc3RhdGljIGJvb2wgZmlsbF9mcm9tX291dHB1dChpbnQgZmQsIGNvbnN0 IGNoYXIgKmJpbmFyeSwgY29uc3QgY2hhciAqa2V5LAogCQkJICAgICBzdHJ1Y3Qgc3VidGVzdHMg KnN1YnRlc3RzLAogCQkJICAgICBzdHJ1Y3QganNvbl9vYmplY3QgKnRlc3RzKQpAQCAtMzE4LDcg KzMxMiwxMyBAQCBzdGF0aWMgYm9vbCBmaWxsX2Zyb21fb3V0cHV0KGludCBmZCwgY29uc3QgY2hh ciAqYmluYXJ5LCBjb25zdCBjaGFyICprZXksCiAJY2hhciAqaWd0X3ZlcnNpb24gPSBOVUxMOwog CXNpemVfdCBpZ3RfdmVyc2lvbl9sZW4gPSAwOwogCXN0cnVjdCBqc29uX29iamVjdCAqY3VycmVu dF90ZXN0ID0gTlVMTDsKLQlzaXplX3QgaTsKKwljb25zdCBjaGFyICpuZWVkbGVzW10gPSB7CisJ CVNUQVJUSU5HX1NVQlRFU1QsCisJCVNVQlRFU1RfUkVTVUxULAorCQlOVUxMCisJfTsKKwlzdHJ1 Y3QgbWF0Y2hlcyBtYXRjaGVzID0ge307CisJc2l6ZV90IGksIGs7CiAKIAlpZiAoZnN0YXQoZmQs ICZzdGF0YnVmKSkKIAkJcmV0dXJuIGZhbHNlOwpAQCAtMzYzLDEwICszNjMsMTMgQEAgc3RhdGlj IGJvb2wgZmlsbF9mcm9tX291dHB1dChpbnQgZmQsIGNvbnN0IGNoYXIgKmJpbmFyeSwgY29uc3Qg Y2hhciAqa2V5LAogCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKKwltYXRjaGVzID0gZmluZF9tYXRjaGVz KGJ1ZiwgYnVmZW5kLCBuZWVkbGVzKTsKKwogCWZvciAoaSA9IDA7IGkgPCBzdWJ0ZXN0cy0+c2l6 ZTsgaSsrKSB7CiAJCWNoYXIgKnRoaXNfc3ViX2JlZ2luLCAqdGhpc19zdWJfcmVzdWx0OworCQlp bnQgYmVnaW5faWR4ID0gLTEsIHJlc3VsdF9pZHggPSAtMTsKIAkJY29uc3QgY2hhciAqcmVzdWx0 dGV4dDsKLQkJY2hhciAqYmVnLCAqZW5kLCAqc3RhcnRsaW5lOworCQljb25zdCBjaGFyICpiZWcs ICplbmQ7CiAJCWRvdWJsZSB0aW1lOwogCQlpbnQgYmVnaW5fbGVuOwogCQlpbnQgcmVzdWx0X2xl bjsKQEAgLTM4Miw2NiArMzg1LDY4IEBAIHN0YXRpYyBib29sIGZpbGxfZnJvbV9vdXRwdXQoaW50 IGZkLCBjb25zdCBjaGFyICpiaW5hcnksIGNvbnN0IGNoYXIgKmtleSwKIAkJCXJldHVybiBmYWxz ZTsKIAkJfQogCi0JCWJlZyA9IGZpbmRfbGluZV9zdGFydGluZ193aXRoKGJ1ZiwgdGhpc19zdWJf YmVnaW4sIGJ1ZmVuZCk7Ci0JCWVuZCA9IGZpbmRfbGluZV9zdGFydGluZ193aXRoKGJ1ZiwgdGhp c19zdWJfcmVzdWx0LCBidWZlbmQpOwotCQlzdGFydGxpbmUgPSBiZWc7CisJCWZvciAoayA9IDA7 IGsgPCBtYXRjaGVzLnNpemU7ICsraykgeworCQkJaWYgKG1hdGNoZXMuaXRlbXNba10ud2hhdCA9 PSBTVEFSVElOR19TVUJURVNUICYmCisJCQkgICAgIW1lbWNtcChtYXRjaGVzLml0ZW1zW2tdLndo ZXJlLAorCQkJCSAgICB0aGlzX3N1Yl9iZWdpbiwKKwkJCQkgICAgbWluKGJlZ2luX2xlbiwgYnVm ZW5kIC0gbWF0Y2hlcy5pdGVtc1trXS53aGVyZSkpKSB7CisJCQkJYmVnID0gbWF0Y2hlcy5pdGVt c1trXS53aGVyZTsKKwkJCQliZWdpbl9pZHggPSBrOworCQkJfQorCQkJaWYgKG1hdGNoZXMuaXRl bXNba10ud2hhdCA9PSBTVUJURVNUX1JFU1VMVCAmJgorCQkJICAgICFtZW1jbXAobWF0Y2hlcy5p dGVtc1trXS53aGVyZSwKKwkJCQkgICAgdGhpc19zdWJfcmVzdWx0LAorCQkJCSAgICBtaW4ocmVz dWx0X2xlbiwgYnVmZW5kIC0gbWF0Y2hlcy5pdGVtc1trXS53aGVyZSkpKSB7CisJCQkJZW5kID0g bWF0Y2hlcy5pdGVtc1trXS53aGVyZTsKKwkJCQlyZXN1bHRfaWR4ID0gazsKKwkJCX0KKwkJfQog CiAJCWZyZWUodGhpc19zdWJfYmVnaW4pOwogCQlmcmVlKHRoaXNfc3ViX3Jlc3VsdCk7CiAKLQkJ aWYgKGJlZyA9PSBOVUxMICYmIGVuZCA9PSBOVUxMKSB7CisJCWlmIChiZWdpbl9pZHggPCAwICYm IHJlc3VsdF9pZHggPCAwKSB7CiAJCQkvKiBObyBvdXRwdXQgYXQgYWxsICovCiAJCQliZWcgPSBi dWZlbmQ7CiAJCQllbmQgPSBidWZlbmQ7Ci0JCX0KLQotCQlpZiAoYmVnID09IE5VTEwpIHsKKwkJ fSBlbHNlIGlmIChiZWdpbl9pZHggPCAwKSB7CiAJCQkvKgotCQkJICogU3VidGVzdCBkaWRuJ3Qg c3RhcnQsIHByb2JhYmx5IHNraXBwZWQgZnJvbQotCQkJICogZml4dHVyZSBhbHJlYWR5LiBTdGFy dCBmcm9tIHRoZSByZXN1bHQKLQkJCSAqIGxpbmUsIGl0IGdldHMgYWRqdXN0ZWQgYmVsb3cuCisJ CQkgKiBTdWJ0ZXN0IGRpZG4ndCBzdGFydCwgYnV0IHdlIGhhdmUgdGhlCisJCQkgKiByZXN1bHQu IFByb2JhYmx5IGJlY2F1c2UgYW4gaWd0X2ZpeHR1cmUKKwkJCSAqIG1hZGUgaXQgZmFpbC9za2lw LgorCQkJICoKKwkJCSAqIFN0YXJ0IHRoZSBvdXRwdXQgcmlnaHQgYWZ0ZXIgdGhlIHByZXZpb3Vz CisJCQkgKiBzdWJ0ZXN0IHJlc3VsdC9zdGFydC4KIAkJCSAqLwotCQkJYmVnID0gZW5kOworCQkJ aWYgKHJlc3VsdF9pZHggPiAwKQorCQkJCWJlZyA9IG5leHRfbGluZShtYXRjaGVzLml0ZW1zW3Jl c3VsdF9pZHggLSAxXS53aGVyZSwgYnVmZW5kKTsKKwkJCWVsc2UKKwkJCQliZWcgPSBidWY7CisJ CX0gZWxzZSB7CisJCQkvKiBTdHJldGNoIG91dHB1dCBiZWdpbm5pbmcgYmFja3dhcmRzICovCisJ CQlpZiAoYmVnaW5faWR4ID09IDApCisJCQkJYmVnID0gYnVmOworCQkJZWxzZQorCQkJCWJlZyA9 IG5leHRfbGluZShtYXRjaGVzLml0ZW1zW2JlZ2luX2lkeCAtIDFdLndoZXJlLCBidWZlbmQpOwog CQl9CiAKLQkJLyogSW5jbHVkZSB0aGUgb3V0cHV0IGFmdGVyIHRoZSBwcmV2aW91cyBzdWJ0ZXN0 IG91dHB1dCAqLwotCQliZWcgPSBmaW5kX2xpbmVfYWZ0ZXJfbGFzdChidWYsCi0JCQkJCSAgIFNU QVJUSU5HX1NVQlRFU1QsCi0JCQkJCSAgIFNVQlRFU1RfUkVTVUxULAotCQkJCQkgICBiZWcpOwot Ci0JCWlmIChlbmQgPT0gTlVMTCkgewotCQkJLyogSW5jb21wbGV0ZSByZXN1bHQuIEZpbmQgdGhl IG5leHQgc3RhcnRpbmcgc3VidGVzdCBvciByZXN1bHQuICovCi0JCQllbmQgPSBuZXh0X2xpbmUo c3RhcnRsaW5lLCBidWZlbmQpOwotCQkJaWYgKGVuZCAhPSBOVUxMKSB7Ci0JCQkJZW5kID0gZmlu ZF9saW5lX3N0YXJ0aW5nX3dpdGhfZWl0aGVyKGVuZCwKLQkJCQkJCQkJICAgICBTVEFSVElOR19T VUJURVNULAotCQkJCQkJCQkgICAgIFNVQlRFU1RfUkVTVUxULAotCQkJCQkJCQkgICAgIGJ1ZmVu ZCk7Ci0JCQl9Ci0JCQlpZiAoZW5kID09IE5VTEwpIHsKLQkJCQllbmQgPSBidWZlbmQ7Ci0JCQl9 Ci0JCX0gZWxzZSB7CisJCWlmIChyZXN1bHRfaWR4IDwgMCAmJiBiZWdpbl9pZHggPCAwKSB7CisJ CQkvKiBObyBvdXRwdXQgYXQgYWxsOiBBbHJlYWR5IGhhbmRsZWQgYWJvdmUgKi8KKwkJfSBlbHNl IGlmIChyZXN1bHRfaWR4IDwgMCkgewogCQkJLyoKLQkJCSAqIE5vdyBwb2ludGluZyB0byB0aGUg bGluZSB3aGVyZSB0aGlzIHN1YidzCi0JCQkgKiByZXN1bHQgaXMuIFdlIG5lZWQgdG8gaW5jbHVk ZSB0aGF0IG9mCi0JCQkgKiBjb3Vyc2UuCisJCQkgKiBJbmNvbXBsZXRlIHJlc3VsdC4gSW5jbHVk ZSBvdXRwdXQgdXAgdG8gdGhlCisJCQkgKiBuZXh0IHN0YXJ0aW5nIHN1YnRlc3Qgb3IgcmVzdWx0 LgogCQkJICovCi0JCQljaGFyICpuZXh0dGVzdCA9IG5leHRfbGluZShlbmQsIGJ1ZmVuZCk7Ci0K LQkJCS8qIFN0cmV0Y2ggb253YXJkcyB1bnRpbCB0aGUgbmV4dCBzdWJ0ZXN0IGJlZ2lucyBvciBl bmRzICovCi0JCQlpZiAobmV4dHRlc3QgIT0gTlVMTCkgewotCQkJCW5leHR0ZXN0ID0gZmluZF9s aW5lX3N0YXJ0aW5nX3dpdGhfZWl0aGVyKG5leHR0ZXN0LAotCQkJCQkJCQkJICBTVEFSVElOR19T VUJURVNULAotCQkJCQkJCQkJICBTVUJURVNUX1JFU1VMVCwKLQkJCQkJCQkJCSAgYnVmZW5kKTsK LQkJCX0KLQkJCWlmIChuZXh0dGVzdCAhPSBOVUxMKSB7Ci0JCQkJZW5kID0gbmV4dHRlc3Q7Ci0J CQl9IGVsc2UgeworCQkJaWYgKGJlZ2luX2lkeCA8IG1hdGNoZXMuc2l6ZSAtIDEpCisJCQkJZW5k ID0gbWF0Y2hlcy5pdGVtc1tiZWdpbl9pZHggKyAxXS53aGVyZTsKKwkJCWVsc2UKKwkJCQllbmQg PSBidWZlbmQ7CisJCX0gZWxzZSB7CisJCQkvKiBTdHJldGNoIG91dHB1dCB0byB0aGUgbmV4dCBz dGFydGluZyBzdWJ0ZXN0IG9yIHJlc3VsdC4gKi8KKwkJCWlmIChyZXN1bHRfaWR4IDwgbWF0Y2hl cy5zaXplIC0gMSkKKwkJCQllbmQgPSBtYXRjaGVzLml0ZW1zW3Jlc3VsdF9pZHggKyAxXS53aGVy ZTsKKwkJCWVsc2UKIAkJCQllbmQgPSBidWZlbmQ7Ci0JCQl9CiAJCX0KIAogCQlqc29uX29iamVj dF9vYmplY3RfYWRkKGN1cnJlbnRfdGVzdCwga2V5LApAQCAtNDU0LDEyICs0NTksMTYgQEAgc3Rh dGljIGJvb2wgZmlsbF9mcm9tX291dHB1dChpbnQgZmQsIGNvbnN0IGNoYXIgKmJpbmFyeSwgY29u c3QgY2hhciAqa2V5LAogCQl9CiAKIAkJaWYgKCFqc29uX29iamVjdF9vYmplY3RfZ2V0X2V4KGN1 cnJlbnRfdGVzdCwgInJlc3VsdCIsIE5VTEwpKSB7Ci0JCQlwYXJzZV9zdWJ0ZXN0X3Jlc3VsdChz dWJ0ZXN0cy0+bmFtZXNbaV0sICZyZXN1bHR0ZXh0LCAmdGltZSwgYmVnLCBlbmQpOworCQkJcGFy c2Vfc3VidGVzdF9yZXN1bHQoc3VidGVzdHMtPm5hbWVzW2ldLAorCQkJCQkgICAgICZyZXN1bHR0 ZXh0LCAmdGltZSwKKwkJCQkJICAgICByZXN1bHRfaWR4IDwgMCA/IE5VTEwgOiBtYXRjaGVzLml0 ZW1zW3Jlc3VsdF9pZHhdLndoZXJlLAorCQkJCQkgICAgIGVuZCk7CiAJCQlzZXRfcmVzdWx0KGN1 cnJlbnRfdGVzdCwgcmVzdWx0dGV4dCk7CiAJCQlzZXRfcnVudGltZShjdXJyZW50X3Rlc3QsIHRp bWUpOwogCQl9CiAJfQogCisJZnJlZV9tYXRjaGVzKCZtYXRjaGVzKTsKIAlyZXR1cm4gdHJ1ZTsK IH0KIAotLSAKMi4xOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=