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 4ADF673028 for ; Mon, 26 Jul 2021 20:01:52 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Mon, 26 Jul 2021 22:00:23 +0200 Message-Id: <20210726200026.4815-50-zbigniew.kempczynski@intel.com> In-Reply-To: <20210726200026.4815-1-zbigniew.kempczynski@intel.com> References: <20210726200026.4815-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v3 49/52] tests/perf_pmu: Adopt to use allocator 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: Rm9yIG5ld2VyIGdlbnMgd2UncmUgbm90IGFibGUgdG8gcmVseSBvbiByZWxvY2F0aW9ucy4gQWRv cHQgdG8gdXNlCm9mZnNldHMgYWNxdWlyZWQgZnJvbSB0aGUgYWxsb2NhdG9yLgoKU2lnbmVkLW9m Zi1ieTogWmJpZ25pZXcgS2VtcGN6ecWEc2tpIDx6Ymlnbmlldy5rZW1wY3p5bnNraUBpbnRlbC5j b20+CkNjOiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+ CkNjOiBQZXRyaSBMYXR2YWxhIDxwZXRyaS5sYXR2YWxhQGludGVsLmNvbT4KQ2M6IEFzaHV0b3No IERpeGl0IDxhc2h1dG9zaC5kaXhpdEBpbnRlbC5jb20+Ci0tLQogdGVzdHMvaTkxNS9wZXJmX3Bt dS5jIHwgMTQ3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogMSBm aWxlIGNoYW5nZWQsIDEwNyBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS90ZXN0cy9pOTE1L3BlcmZfcG11LmMgYi90ZXN0cy9pOTE1L3BlcmZfcG11LmMKaW5kZXgg MTBkYzNiZjJmLi45MjRmMzlkMWEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvcGVyZl9wbXUuYwor KysgYi90ZXN0cy9pOTE1L3BlcmZfcG11LmMKQEAgLTE3NCwxMCArMTc0LDExIEBAIHN0YXRpYyB1 bnNpZ25lZCBpbnQgbWVhc3VyZWRfdXNsZWVwKHVuc2lnbmVkIGludCB1c2VjKQogI2RlZmluZSBG TEFHX0hBTkcgKDMyKQogI2RlZmluZSBURVNUX1MzICg2NCkKIAotc3RhdGljIGlndF9zcGluX3Qg KiBfX3NwaW5fcG9sbChpbnQgZmQsIGNvbnN0IGludGVsX2N0eF90ICpjdHgsCi0JCQkJY29uc3Qg c3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQorc3RhdGljIGlndF9zcGluX3QgKl9f c3Bpbl9wb2xsKGludCBmZCwgdWludDY0X3QgYWhuZCwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCwK KwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiB7CiAJ c3RydWN0IGlndF9zcGluX2ZhY3Rvcnkgb3B0cyA9IHsKKwkJLmFobmQgPSBhaG5kLAogCQkuY3R4 ID0gY3R4LAogCQkuZW5naW5lID0gZS0+ZmxhZ3MsCiAJfTsKQEAgLTIxNywyNSArMjE4LDI2IEBA IHN0YXRpYyB1bnNpZ25lZCBsb25nIF9fc3Bpbl93YWl0KGludCBmZCwgaWd0X3NwaW5fdCAqc3Bp bikKIAlyZXR1cm4gaWd0X25zZWNfZWxhcHNlZCgmc3RhcnQpOwogfQogCi1zdGF0aWMgaWd0X3Nw aW5fdCAqIF9fc3Bpbl9zeW5jKGludCBmZCwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCwKLQkJCQlj b25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCitzdGF0aWMgaWd0X3NwaW5f dCAqX19zcGluX3N5bmMoaW50IGZkLCB1aW50NjRfdCBhaG5kLCBjb25zdCBpbnRlbF9jdHhfdCAq Y3R4LAorCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkK IHsKLQlpZ3Rfc3Bpbl90ICpzcGluID0gX19zcGluX3BvbGwoZmQsIGN0eCwgZSk7CisJaWd0X3Nw aW5fdCAqc3BpbiA9IF9fc3Bpbl9wb2xsKGZkLCBhaG5kLCBjdHgsIGUpOwogCiAJX19zcGluX3dh aXQoZmQsIHNwaW4pOwogCiAJcmV0dXJuIHNwaW47CiB9CiAKLXN0YXRpYyBpZ3Rfc3Bpbl90ICog c3Bpbl9zeW5jKGludCBmZCwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCwKLQkJCSAgICAgIGNvbnN0 IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKK3N0YXRpYyBpZ3Rfc3Bpbl90ICpz cGluX3N5bmMoaW50IGZkLCB1aW50NjRfdCBhaG5kLCBjb25zdCBpbnRlbF9jdHhfdCAqY3R4LAor CQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCiB7CiAJaWd0 X3JlcXVpcmVfZ2VtKGZkKTsKIAotCXJldHVybiBfX3NwaW5fc3luYyhmZCwgY3R4LCBlKTsKKwly ZXR1cm4gX19zcGluX3N5bmMoZmQsIGFobmQsIGN0eCwgZSk7CiB9CiAKLXN0YXRpYyBpZ3Rfc3Bp bl90ICogc3Bpbl9zeW5jX2ZsYWdzKGludCBmZCwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCwgdW5z aWduZWQgaW50IGZsYWdzKQorc3RhdGljIGlndF9zcGluX3QgKnNwaW5fc3luY19mbGFncyhpbnQg ZmQsIHVpbnQ2NF90IGFobmQsCisJCQkJICAgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCwgdW5zaWdu ZWQgaW50IGZsYWdzKQogewogCXN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiBlID0geyB9 OwogCkBAIC0yNDQsNyArMjQ2LDcgQEAgc3RhdGljIGlndF9zcGluX3QgKiBzcGluX3N5bmNfZmxh Z3MoaW50IGZkLCBjb25zdCBpbnRlbF9jdHhfdCAqY3R4LCB1bnNpZ25lZCBpbnQKIAkJICAgICAo STkxNV9FWEVDX0JTRCB8IEk5MTVfRVhFQ19CU0RfUklORzIpID8gMSA6IDA7CiAJZS5mbGFncyA9 IGZsYWdzOwogCi0JcmV0dXJuIHNwaW5fc3luYyhmZCwgY3R4LCAmZSk7CisJcmV0dXJuIHNwaW5f c3luYyhmZCwgYWhuZCwgY3R4LCAmZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGVuZF9zcGluKGludCBm ZCwgaWd0X3NwaW5fdCAqc3BpbiwgdW5zaWduZWQgaW50IGZsYWdzKQpAQCAtMjg2LDExICsyODgs MTIgQEAgc2luZ2xlKGludCBnZW1fZmQsIGNvbnN0IGludGVsX2N0eF90ICpjdHgsCiAJaWd0X3Nw aW5fdCAqc3BpbjsKIAl1aW50NjRfdCB2YWw7CiAJaW50IGZkOworCXVpbnQ2NF90IGFobmQgPSBn ZXRfcmVsb2NfYWhuZChnZW1fZmQsIGN0eC0+aWQpOwogCiAJZmQgPSBvcGVuX3BtdShnZW1fZmQs IEk5MTVfUE1VX0VOR0lORV9CVVNZKGUtPmNsYXNzLCBlLT5pbnN0YW5jZSkpOwogCiAJaWYgKGZs YWdzICYgVEVTVF9CVVNZKQotCQlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgY3R4LCBlKTsKKwkJ c3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIGFobmQsIGN0eCwgZSk7CiAJZWxzZQogCQlzcGluID0g TlVMTDsKIApAQCAtMzIxLDYgKzMyNCw3IEBAIHNpbmdsZShpbnQgZ2VtX2ZkLCBjb25zdCBpbnRl bF9jdHhfdCAqY3R4LAogCiAJaWd0X3NwaW5fZnJlZShnZW1fZmQsIHNwaW4pOwogCWNsb3NlKGZk KTsKKwlwdXRfYWhuZChhaG5kKTsKIAogCWdlbV9xdWllc2NlbnRfZ3B1KGdlbV9mZCk7CiB9CkBA IC0zMzMsNiArMzM3LDcgQEAgYnVzeV9zdGFydChpbnQgZ2VtX2ZkLCBjb25zdCBpbnRlbF9jdHhf dCAqY3R4LAogCXVpbnQ2NF90IHZhbCwgdHNbMl07CiAJaWd0X3NwaW5fdCAqc3BpbjsKIAlpbnQg ZmQ7CisJdWludDY0X3QgYWhuZCA9IGdldF9yZWxvY19haG5kKGdlbV9mZCwgY3R4LT5pZCk7CiAK IAkvKgogCSAqIERlZmVhdCB0aGUgYnVzeSBzdGF0cyBkZWxheWVkIGRpc2FibGUsIHdlIG5lZWQg dG8gZ3VhcmFudGVlIHdlIGFyZQpAQCAtMzQwLDcgKzM0NSw3IEBAIGJ1c3lfc3RhcnQoaW50IGdl bV9mZCwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCwKIAkgKi8KIAlzbGVlcCgyKTsKIAotCXNwaW4g PSBfX3NwaW5fc3luYyhnZW1fZmQsIGN0eCwgZSk7CisJc3BpbiA9IF9fc3Bpbl9zeW5jKGdlbV9m ZCwgYWhuZCwgY3R4LCBlKTsKIAogCWZkID0gb3Blbl9wbXUoZ2VtX2ZkLCBJOTE1X1BNVV9FTkdJ TkVfQlVTWShlLT5jbGFzcywgZS0+aW5zdGFuY2UpKTsKIApAQCAtMzUxLDYgKzM1Niw3IEBAIGJ1 c3lfc3RhcnQoaW50IGdlbV9mZCwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCwKIAogCWlndF9zcGlu X2ZyZWUoZ2VtX2ZkLCBzcGluKTsKIAljbG9zZShmZCk7CisJcHV0X2FobmQoYWhuZCk7CiAKIAlh c3NlcnRfd2l0aGluX2Vwc2lsb24odmFsLCB0c1sxXSAtIHRzWzBdLCB0b2xlcmFuY2UpOwogCWdl bV9xdWllc2NlbnRfZ3B1KGdlbV9mZCk7CkBAIC0zNzAsOCArMzc2LDEwIEBAIGJ1c3lfZG91Ymxl X3N0YXJ0KGludCBnZW1fZmQsIGNvbnN0IGludGVsX2N0eF90ICpjdHgsCiAJaWd0X3NwaW5fdCAq c3BpblsyXTsKIAljb25zdCBpbnRlbF9jdHhfdCAqdG1wX2N0eDsKIAlpbnQgZmQ7CisJdWludDY0 X3QgYWhuZCA9IGdldF9yZWxvY19haG5kKGdlbV9mZCwgY3R4LT5pZCksIGFobmROOwogCiAJdG1w X2N0eCA9IGludGVsX2N0eF9jcmVhdGUoZ2VtX2ZkLCAmY3R4LT5jZmcpOworCWFobmROID0gZ2V0 X3JlbG9jX2FobmQoZ2VtX2ZkLCB0bXBfY3R4LT5pZCk7CiAKIAkvKgogCSAqIERlZmVhdCB0aGUg YnVzeSBzdGF0cyBkZWxheWVkIGRpc2FibGUsIHdlIG5lZWQgdG8gZ3VhcmFudGVlIHdlIGFyZQpA QCAtMzg0LDkgKzM5MiwxMCBAQCBidXN5X2RvdWJsZV9zdGFydChpbnQgZ2VtX2ZkLCBjb25zdCBp bnRlbF9jdHhfdCAqY3R4LAogCSAqIHJlLXN1Ym1pc3Npb24gaW4gZXhlY2xpc3RzIG1vZGUuIE1h a2Ugc3VyZSBidXN5bmVzcyBpcyBjb3JyZWN0bHkKIAkgKiByZXBvcnRlZCB3aXRoIHRoZSBlbmdp bmUgYnVzeSwgYW5kIGFmdGVyIHRoZSBlbmdpbmUgd2VudCBpZGxlLgogCSAqLwotCXNwaW5bMF0g PSBfX3NwaW5fc3luYyhnZW1fZmQsIGN0eCwgZSk7CisJc3BpblswXSA9IF9fc3Bpbl9zeW5jKGdl bV9mZCwgYWhuZCwgY3R4LCBlKTsKIAl1c2xlZXAoNTAwZTMpOwogCXNwaW5bMV0gPSBfX2lndF9z cGluX25ldyhnZW1fZmQsCisJCQkJIC5haG5kID0gYWhuZE4sCiAJCQkJIC5jdHggPSB0bXBfY3R4 LAogCQkJCSAuZW5naW5lID0gZS0+ZmxhZ3MpOwogCkBAIC00MTksNiArNDI4LDggQEAgYnVzeV9k b3VibGVfc3RhcnQoaW50IGdlbV9mZCwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCwKIAljbG9zZShm ZCk7CiAKIAlpbnRlbF9jdHhfZGVzdHJveShnZW1fZmQsIHRtcF9jdHgpOworCXB1dF9haG5kKGFo bmQpOworCXB1dF9haG5kKGFobmROKTsKIAogCWFzc2VydF93aXRoaW5fZXBzaWxvbih2YWwsIHRz WzFdIC0gdHNbMF0sIHRvbGVyYW5jZSk7CiAJaWd0X2Fzc2VydF9lcSh2YWwyLCAwKTsKQEAgLTQ1 Nyw2ICs0NjgsNyBAQCBidXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBpbnRlbF9jdHhf dCAqY3R4LAogCWludCBmZFtudW1fZW5naW5lc107CiAJdW5zaWduZWQgbG9uZyBzbGVwdDsKIAlp Z3Rfc3Bpbl90ICpzcGluOworCXVpbnQ2NF90IGFobmQgPSBnZXRfcmVsb2NfYWhuZChnZW1fZmQs IGN0eC0+aWQpOwogCiAJaSA9IDA7CiAJZmRbMF0gPSAtMTsKQEAgLTQ3Miw3ICs0ODQsNyBAQCBi dXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBpbnRlbF9jdHhfdCAqY3R4LAogCiAJaWd0 X2Fzc2VydF9lcShpLCBudW1fZW5naW5lcyk7CiAKLQlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwg Y3R4LCBlKTsKKwlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgYWhuZCwgY3R4LCBlKTsKIAlwbXVf cmVhZF9tdWx0aShmZFswXSwgbnVtX2VuZ2luZXMsIHR2YWxbMF0pOwogCXNsZXB0ID0gbWVhc3Vy ZWRfdXNsZWVwKGJhdGNoX2R1cmF0aW9uX25zIC8gMTAwMCk7CiAJaWYgKGZsYWdzICYgVEVTVF9U UkFJTElOR19JRExFKQpAQCAtNDgzLDYgKzQ5NSw3IEBAIGJ1c3lfY2hlY2tfYWxsKGludCBnZW1f ZmQsIGNvbnN0IGludGVsX2N0eF90ICpjdHgsCiAJaWd0X3NwaW5fZnJlZShnZW1fZmQsIHNwaW4p OwogCWZvciAoaSA9IDA7IGkgPCBudW1fZW5naW5lczsgaSsrKQogCQljbG9zZShmZFtpXSk7CisJ cHV0X2FobmQoYWhuZCk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2VuZ2luZXM7IGkrKykKIAkJ dmFsW2ldID0gdHZhbFsxXVtpXSAtIHR2YWxbMF1baV07CkBAIC01MjQsNiArNTM3LDcgQEAgbW9z dF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBpbnRlbF9jdHhfdCAqY3R4LAogCXVu c2lnbmVkIGxvbmcgc2xlcHQ7CiAJaWd0X3NwaW5fdCAqc3BpbiA9IE5VTEw7CiAJdW5zaWduZWQg aW50IGlkbGVfaWR4LCBpOworCXVpbnQ2NF90IGFobmQgPSBnZXRfcmVsb2NfYWhuZChnZW1fZmQs IGN0eC0+aWQpOwogCiAJaSA9IDA7CiAJZm9yX2VhY2hfY3R4X2VuZ2luZShnZW1fZmQsIGN0eCwg ZV8pIHsKQEAgLTUzMiw3ICs1NDYsNyBAQCBtb3N0X2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQs IGNvbnN0IGludGVsX2N0eF90ICpjdHgsCiAJCWVsc2UgaWYgKHNwaW4pCiAJCQlfX3N1Ym1pdF9z cGluKGdlbV9mZCwgc3BpbiwgZV8sIDY0KTsKIAkJZWxzZQotCQkJc3BpbiA9IF9fc3Bpbl9wb2xs KGdlbV9mZCwgY3R4LCBlXyk7CisJCQlzcGluID0gX19zcGluX3BvbGwoZ2VtX2ZkLCBhaG5kLCBj dHgsIGVfKTsKIAogCQl2YWxbaSsrXSA9IEk5MTVfUE1VX0VOR0lORV9CVVNZKGVfLT5jbGFzcywg ZV8tPmluc3RhbmNlKTsKIAl9CkBAIC01NTYsNiArNTcwLDcgQEAgbW9zdF9idXN5X2NoZWNrX2Fs bChpbnQgZ2VtX2ZkLCBjb25zdCBpbnRlbF9jdHhfdCAqY3R4LAogCWlndF9zcGluX2ZyZWUoZ2Vt X2ZkLCBzcGluKTsKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2VuZ2luZXM7IGkrKykKIAkJY2xvc2Uo ZmRbaV0pOworCXB1dF9haG5kKGFobmQpOwogCiAJZm9yIChpID0gMDsgaSA8IG51bV9lbmdpbmVz OyBpKyspCiAJCXZhbFtpXSA9IHR2YWxbMV1baV0gLSB0dmFsWzBdW2ldOwpAQCAtNTgzLDEzICs1 OTgsMTQgQEAgYWxsX2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IGludGVsX2N0eF90 ICpjdHgsCiAJdW5zaWduZWQgbG9uZyBzbGVwdDsKIAlpZ3Rfc3Bpbl90ICpzcGluID0gTlVMTDsK IAl1bnNpZ25lZCBpbnQgaTsKKwl1aW50NjRfdCBhaG5kID0gZ2V0X3JlbG9jX2FobmQoZ2VtX2Zk LCBjdHgtPmlkKTsKIAogCWkgPSAwOwogCWZvcl9lYWNoX2N0eF9lbmdpbmUoZ2VtX2ZkLCBjdHgs IGUpIHsKIAkJaWYgKHNwaW4pCiAJCQlfX3N1Ym1pdF9zcGluKGdlbV9mZCwgc3BpbiwgZSwgNjQp OwogCQllbHNlCi0JCQlzcGluID0gX19zcGluX3BvbGwoZ2VtX2ZkLCBjdHgsIGUpOworCQkJc3Bp biA9IF9fc3Bpbl9wb2xsKGdlbV9mZCwgYWhuZCwgY3R4LCBlKTsKIAogCQl2YWxbaSsrXSA9IEk5 MTVfUE1VX0VOR0lORV9CVVNZKGUtPmNsYXNzLCBlLT5pbnN0YW5jZSk7CiAJfQpAQCAtNjEyLDYg KzYyOCw3IEBAIGFsbF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBpbnRlbF9jdHhf dCAqY3R4LAogCWlndF9zcGluX2ZyZWUoZ2VtX2ZkLCBzcGluKTsKIAlmb3IgKGkgPSAwOyBpIDwg bnVtX2VuZ2luZXM7IGkrKykKIAkJY2xvc2UoZmRbaV0pOworCXB1dF9haG5kKGFobmQpOwogCiAJ Zm9yIChpID0gMDsgaSA8IG51bV9lbmdpbmVzOyBpKyspCiAJCXZhbFtpXSA9IHR2YWxbMV1baV0g LSB0dmFsWzBdW2ldOwpAQCAtNjMxLDYgKzY0OCw3IEBAIG5vX3NlbWEoaW50IGdlbV9mZCwgY29u c3QgaW50ZWxfY3R4X3QgKmN0eCwKIAlpZ3Rfc3Bpbl90ICpzcGluOwogCXVpbnQ2NF90IHZhbFsy XVsyXTsKIAlpbnQgZmRbMl07CisJdWludDY0X3QgYWhuZCA9IGdldF9yZWxvY19haG5kKGdlbV9m ZCwgY3R4LT5pZCk7CiAKIAlmZFswXSA9IG9wZW5fZ3JvdXAoZ2VtX2ZkLCBJOTE1X1BNVV9FTkdJ TkVfU0VNQShlLT5jbGFzcywgZS0+aW5zdGFuY2UpLAogCQkJICAgLTEpOwpAQCAtNjM4LDcgKzY1 Niw3IEBAIG5vX3NlbWEoaW50IGdlbV9mZCwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCwKIAkJCSAg IGZkWzBdKTsKIAogCWlmIChmbGFncyAmIFRFU1RfQlVTWSkKLQkJc3BpbiA9IHNwaW5fc3luYyhn ZW1fZmQsIGN0eCwgZSk7CisJCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCBhaG5kLCBjdHgsIGUp OwogCWVsc2UKIAkJc3BpbiA9IE5VTEw7CiAKQEAgLTY1Nyw2ICs2NzUsNyBAQCBub19zZW1hKGlu dCBnZW1fZmQsIGNvbnN0IGludGVsX2N0eF90ICpjdHgsCiAJfQogCWNsb3NlKGZkWzBdKTsKIAlj bG9zZShmZFsxXSk7CisJcHV0X2FobmQoYWhuZCk7CiAKIAlhc3NlcnRfd2l0aGluX2Vwc2lsb24o dmFsWzBdWzBdLCAwLjBmLCB0b2xlcmFuY2UpOwogCWFzc2VydF93aXRoaW5fZXBzaWxvbih2YWxb MF1bMV0sIDAuMGYsIHRvbGVyYW5jZSk7CkBAIC02ODIsNiArNzAxLDggQEAgc2VtYV93YWl0KGlu dCBnZW1fZmQsIGNvbnN0IGludGVsX2N0eF90ICpjdHgsCiAJdWludDMyX3QgYmF0Y2hbMTZdOwog CXVpbnQ2NF90IHZhbFsyXSwgdHNbMl07CiAJaW50IGZkOworCXVpbnQ2NF90IGFobmQgPSBnZXRf cmVsb2NfYWhuZChnZW1fZmQsIGN0eC0+aWQpOworCXVpbnQ2NF90IG9ial9vZmZzZXQsIGJiX29m ZnNldDsKIAogCWlndF9yZXF1aXJlKGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGdlbV9m ZCkpID49IDgpOwogCkBAIC02OTMsMTkgKzcxNCwyMSBAQCBzZW1hX3dhaXQoaW50IGdlbV9mZCwg Y29uc3QgaW50ZWxfY3R4X3QgKmN0eCwKIAogCWJiX2hhbmRsZSA9IGdlbV9jcmVhdGUoZ2VtX2Zk LCA0MDk2KTsKIAlvYmpfaGFuZGxlID0gZ2VtX2NyZWF0ZShnZW1fZmQsIDQwOTYpOworCWJiX29m ZnNldCA9IGdldF9vZmZzZXQoYWhuZCwgYmJfaGFuZGxlLCA0MDk2LCAwKTsKKwlvYmpfb2Zmc2V0 ID0gZ2V0X29mZnNldChhaG5kLCBvYmpfaGFuZGxlLCA0MDk2LCAwKTsKIAogCW9ial9wdHIgPSBn ZW1fbW1hcF9fd2MoZ2VtX2ZkLCBvYmpfaGFuZGxlLCAwLCA0MDk2LCBQUk9UX1dSSVRFKTsKIAog CWJhdGNoWzBdID0gTUlfU1RPUkVfRFdPUkRfSU1NOwotCWJhdGNoWzFdID0gc2l6ZW9mKCpvYmpf cHRyKTsKLQliYXRjaFsyXSA9IDA7CisJYmF0Y2hbMV0gPSBvYmpfb2Zmc2V0ICsgc2l6ZW9mKCpv YmpfcHRyKTsKKwliYXRjaFsyXSA9IChvYmpfb2Zmc2V0ICsgc2l6ZW9mKCpvYmpfcHRyKSkgPj4g MzI7CiAJYmF0Y2hbM10gPSAxOwogCWJhdGNoWzRdID0gTUlfU0VNQVBIT1JFX1dBSVQgfAogCQkg ICBNSV9TRU1BUEhPUkVfUE9MTCB8CiAJCSAgIE1JX1NFTUFQSE9SRV9TQURfR1RFX1NERDsKIAli YXRjaFs1XSA9IDE7Ci0JYmF0Y2hbNl0gPSAweDA7Ci0JYmF0Y2hbN10gPSAweDA7CisJYmF0Y2hb Nl0gPSBvYmpfb2Zmc2V0OworCWJhdGNoWzddID0gb2JqX29mZnNldCA+PiAzMjsKIAliYXRjaFs4 XSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CiAKIAlnZW1fd3JpdGUoZ2VtX2ZkLCBiYl9oYW5kbGUs IDAsIGJhdGNoLCBzaXplb2YoYmF0Y2gpKTsKQEAgLTcyMyw3ICs3NDYsNyBAQCBzZW1hX3dhaXQo aW50IGdlbV9mZCwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCwKIAlvYmpbMF0uaGFuZGxlID0gb2Jq X2hhbmRsZTsKIAogCW9ialsxXS5oYW5kbGUgPSBiYl9oYW5kbGU7Ci0Jb2JqWzFdLnJlbG9jYXRp b25fY291bnQgPSAyOworCW9ialsxXS5yZWxvY2F0aW9uX2NvdW50ID0gIWFobmQgPyAyIDogMDsK IAlvYmpbMV0ucmVsb2NzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihyZWxvYyk7CiAKIAllYi5idWZm ZXJfY291bnQgPSAyOwpAQCAtNzMxLDYgKzc1NCwxMyBAQCBzZW1hX3dhaXQoaW50IGdlbV9mZCwg Y29uc3QgaW50ZWxfY3R4X3QgKmN0eCwKIAllYi5mbGFncyA9IGUtPmZsYWdzOwogCWViLnJzdmQx ID0gY3R4LT5pZDsKIAorCWlmIChhaG5kKSB7CisJCW9ialswXS5mbGFncyB8PSBFWEVDX09CSkVD VF9QSU5ORUQgfCBFWEVDX09CSkVDVF9XUklURTsKKwkJb2JqWzBdLm9mZnNldCA9IG9ial9vZmZz ZXQ7CisJCW9ialsxXS5mbGFncyB8PSBFWEVDX09CSkVDVF9QSU5ORUQ7CisJCW9ialsxXS5vZmZz ZXQgPSBiYl9vZmZzZXQ7CisJfQorCiAJLyoqCiAJICogU3RhcnQgdGhlIHNlbWFwaG9yZSB3YWl0 IFBNVSBhbmQgYWZ0ZXIgc29tZSBrbm93biB0aW1lIGxldCB0aGUgYWJvdmUKIAkgKiBzZW1hcGhv cmUgd2FpdCBjb21tYW5kIGZpbmlzaC4gVGhlbiBjaGVjayB0aGF0IHRoZSBQTVUgaXMgcmVwb3J0 aW5nCkBAIC03NjYsMTIgKzc5NiwxNCBAQCBzZW1hX3dhaXQoaW50IGdlbV9mZCwgY29uc3QgaW50 ZWxfY3R4X3QgKmN0eCwKIAlnZW1fY2xvc2UoZ2VtX2ZkLCBvYmpfaGFuZGxlKTsKIAlnZW1fY2xv c2UoZ2VtX2ZkLCBiYl9oYW5kbGUpOwogCWNsb3NlKGZkKTsKKwlwdXRfYWhuZChhaG5kKTsKIAog CWFzc2VydF93aXRoaW5fZXBzaWxvbih2YWxbMV0gLSB2YWxbMF0sIHNsZXB0LCB0b2xlcmFuY2Up OwogfQogCiBzdGF0aWMgdWludDMyX3QKLWNyZWF0ZV9zZW1hKGludCBnZW1fZmQsIHN0cnVjdCBk cm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVsb2MpCitjcmVhdGVfc2VtYShpbnQgZ2Vt X2ZkLCB1aW50NjRfdCBhaG5kLAorCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25f ZW50cnkgKnJlbG9jLCBfX3U2NCAqcG9mZnNldCkKIHsKIAl1aW50MzJfdCBjc1tdID0gewogCQkv KiBSZXNldCBvdXIgc2VtYXBob3JlIHdhaXQgKi8KQEAgLTc4OCw3ICs4MjAsMTIgQEAgY3JlYXRl X3NlbWEoaW50IGdlbV9mZCwgc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5ICpy ZWxvYykKIAogCQlNSV9CQVRDSF9CVUZGRVJfRU5ECiAJfTsKLQl1aW50MzJfdCBoYW5kbGUgPSBn ZW1fY3JlYXRlKGdlbV9mZCwgNDA5Nik7CisJdWludDMyX3QgaGFuZGxlOworCisJaWd0X2Fzc2Vy dChwb2Zmc2V0KTsKKworCWhhbmRsZSA9IGdlbV9jcmVhdGUoZ2VtX2ZkLCA0MDk2KTsKKwkqcG9m ZnNldCA9IGdldF9vZmZzZXQoYWhuZCwgaGFuZGxlLCA0MDk2LCAwKTsKIAogCW1lbXNldChyZWxv YywgMCwgMiAqIHNpemVvZigqcmVsb2MpKTsKIAlyZWxvY1swXS50YXJnZXRfaGFuZGxlID0gaGFu ZGxlOwpAQCAtNzk2LDEyICs4MzMsMTkgQEAgY3JlYXRlX3NlbWEoaW50IGdlbV9mZCwgc3RydWN0 IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5ICpyZWxvYykKIAlyZWxvY1sxXS50YXJnZXRf aGFuZGxlID0gaGFuZGxlOwogCXJlbG9jWzFdLm9mZnNldCA9IDY0ICsgNiAqIHNpemVvZih1aW50 MzJfdCk7CiAKKwlpZiAoYWhuZCkgeworCQljc1sxXSA9ICpwb2Zmc2V0OworCQljc1syXSA9ICpw b2Zmc2V0ID4+IDMyOworCQljc1s2XSA9ICpwb2Zmc2V0OworCQljc1s3XSA9ICpwb2Zmc2V0ID4+ IDMyOworCX0KKwogCWdlbV93cml0ZShnZW1fZmQsIGhhbmRsZSwgNjQsIGNzLCBzaXplb2YoY3Mp KTsKIAlyZXR1cm4gaGFuZGxlOwogfQogCiBzdGF0aWMgdm9pZAotX19zZW1hX2J1c3koaW50IGdl bV9mZCwgaW50IHBtdSwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCwKK19fc2VtYV9idXN5KGludCBn ZW1fZmQsIHVpbnQ2NF90IGFobmQsIGludCBwbXUsIGNvbnN0IGludGVsX2N0eF90ICpjdHgsCiAJ ICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAkgICAgaW50IHNl bWFfcGN0LAogCSAgICBpbnQgYnVzeV9wY3QpCkBAIC04MTQsOCArODU4LDggQEAgX19zZW1hX2J1 c3koaW50IGdlbV9mZCwgaW50IHBtdSwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCwKIAl1aW50NjRf dCBzdGFydFsyXSwgdmFsWzJdOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRy eSByZWxvY1syXTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmogPSB7Ci0J CS5oYW5kbGUgPSBjcmVhdGVfc2VtYShnZW1fZmQsIHJlbG9jKSwKLQkJLnJlbG9jYXRpb25fY291 bnQgPSAyLAorCQkuaGFuZGxlID0gY3JlYXRlX3NlbWEoZ2VtX2ZkLCBhaG5kLCByZWxvYywgJm9i ai5vZmZzZXQpLAorCQkucmVsb2NhdGlvbl9jb3VudCA9ICFhaG5kID8gMiA6IDAsCiAJCS5yZWxv Y3NfcHRyID0gdG9fdXNlcl9wb2ludGVyKHJlbG9jKSwKIAl9OwogCXN0cnVjdCBkcm1faTkxNV9n ZW1fZXhlY2J1ZmZlcjIgZWIgPSB7CkBAIC04MzUsNyArODc5LDcgQEAgX19zZW1hX2J1c3koaW50 IGdlbV9mZCwgaW50IHBtdSwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCwKIAogCW1hcCA9IGdlbV9t bWFwX193YyhnZW1fZmQsIG9iai5oYW5kbGUsIDAsIDQwOTYsIFBST1RfV1JJVEUpOwogCWdlbV9l eGVjYnVmKGdlbV9mZCwgJmViKTsKLQlzcGluID0gaWd0X3NwaW5fbmV3KGdlbV9mZCwgLmN0eCA9 IGN0eCwgLmVuZ2luZSA9IGUtPmZsYWdzKTsKKwlzcGluID0gaWd0X3NwaW5fbmV3KGdlbV9mZCwg LmFobmQgPSBhaG5kLCAuY3R4ID0gY3R4LCAuZW5naW5lID0gZS0+ZmxhZ3MpOwogCiAJLyogV2Fp dCB1bnRpbCB0aGUgYmF0Y2ggaXMgZXhlY3V0ZWQgYW5kIHRoZSBzZW1hcGhvcmUgaXMgYnVzeS13 YWl0aW5nICovCiAJd2hpbGUgKCFSRUFEX09OQ0UoKm1hcCkgJiYgZ2VtX2JvX2J1c3koZ2VtX2Zk LCBvYmouaGFuZGxlKSkKQEAgLTg4MCw2ICs5MjQsNyBAQCBzZW1hX2J1c3koaW50IGdlbV9mZCwg Y29uc3QgaW50ZWxfY3R4X3QgKmN0eCwKIAkgIHVuc2lnbmVkIGludCBmbGFncykKIHsKIAlpbnQg ZmRbMl07CisJdWludDY0X3QgYWhuZCA9IGdldF9yZWxvY19haG5kKGdlbV9mZCwgY3R4LT5pZCk7 CiAKIAlpZ3RfcmVxdWlyZShpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChnZW1fZmQpKSA+ PSA4KTsKIApAQCAtODg4LDEyICs5MzMsMTMgQEAgc2VtYV9idXN5KGludCBnZW1fZmQsIGNvbnN0 IGludGVsX2N0eF90ICpjdHgsCiAJZmRbMV0gPSBvcGVuX2dyb3VwKGdlbV9mZCwgSTkxNV9QTVVf RU5HSU5FX0JVU1koZS0+Y2xhc3MsIGUtPmluc3RhbmNlKSwKIAkJCSAgIGZkWzBdKTsKIAotCV9f c2VtYV9idXN5KGdlbV9mZCwgZmRbMF0sIGN0eCwgZSwgNTAsIDEwMCk7Ci0JX19zZW1hX2J1c3ko Z2VtX2ZkLCBmZFswXSwgY3R4LCBlLCAyNSwgNTApOwotCV9fc2VtYV9idXN5KGdlbV9mZCwgZmRb MF0sIGN0eCwgZSwgNzUsIDc1KTsKKwlfX3NlbWFfYnVzeShnZW1fZmQsIGFobmQsIGZkWzBdLCBj dHgsIGUsIDUwLCAxMDApOworCV9fc2VtYV9idXN5KGdlbV9mZCwgYWhuZCwgZmRbMF0sIGN0eCwg ZSwgMjUsIDUwKTsKKwlfX3NlbWFfYnVzeShnZW1fZmQsIGFobmQsIGZkWzBdLCBjdHgsIGUsIDc1 LCA3NSk7CiAKIAljbG9zZShmZFswXSk7CiAJY2xvc2UoZmRbMV0pOworCXB1dF9haG5kKGFobmQp OwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0X2F3YWtlKGludCBpOTE1LCBjb25zdCBpbnRlbF9jdHhf dCAqY3R4KQpAQCAtOTAyLDEzICs5NDgsMTQgQEAgc3RhdGljIHZvaWQgdGVzdF9hd2FrZShpbnQg aTkxNSwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCkKIAl1bnNpZ25lZCBsb25nIHNsZXB0OwogCXVp bnQ2NF90IHZhbDsKIAlpbnQgZmQ7CisJdWludDY0X3QgYWhuZCA9IGdldF9yZWxvY19haG5kKGk5 MTUsIGN0eC0+aWQpOwogCiAJZmQgPSBwZXJmX2k5MTVfb3BlbihpOTE1LCBJOTE1X1BNVV9TT0ZU V0FSRV9HVF9BV0FLRV9USU1FKTsKIAlpZ3Rfc2tpcF9vbihmZCA8IDApOwogCiAJLyogQ2hlY2sg dGhhdCBlYWNoIGVuZ2luZSBpcyBjYXB0dXJlZCBieSB0aGUgR1Qgd2FrZXJlZiAqLwogCWZvcl9l YWNoX2N0eF9lbmdpbmUoaTkxNSwgY3R4LCBlKSB7Ci0JCWlndF9zcGluX25ldyhpOTE1LCAuY3R4 ID0gY3R4LCAuZW5naW5lID0gZS0+ZmxhZ3MpOworCQlpZ3Rfc3Bpbl9uZXcoaTkxNSwgLmFobmQg PSBhaG5kLCAuY3R4ID0gY3R4LCAuZW5naW5lID0gZS0+ZmxhZ3MpOwogCiAJCXZhbCA9IHBtdV9y ZWFkX3NpbmdsZShmZCk7CiAJCXNsZXB0ID0gbWVhc3VyZWRfdXNsZWVwKGJhdGNoX2R1cmF0aW9u X25zIC8gMTAwMCk7CkBAIC05MjAsNyArOTY3LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9hd2FrZShp bnQgaTkxNSwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCkKIAogCS8qIEFuZCB0aGF0IHRoZSB0b3Rh bCBHVCB3YWtlcmVmIG1hdGNoZXMgd2FsbHRpbWUgbm90IHN1bW1hdGlvbiAqLwogCWZvcl9lYWNo X2N0eF9lbmdpbmUoaTkxNSwgY3R4LCBlKQotCQlpZ3Rfc3Bpbl9uZXcoaTkxNSwgLmN0eCA9IGN0 eCwgLmVuZ2luZSA9IGUtPmZsYWdzKTsKKwkJaWd0X3NwaW5fbmV3KGk5MTUsIC5haG5kID0gYWhu ZCwgLmN0eCA9IGN0eCwgLmVuZ2luZSA9IGUtPmZsYWdzKTsKIAogCXZhbCA9IHBtdV9yZWFkX3Np bmdsZShmZCk7CiAJc2xlcHQgPSBtZWFzdXJlZF91c2xlZXAoYmF0Y2hfZHVyYXRpb25fbnMgLyAx MDAwKTsKQEAgLTkzMSw2ICs5NzgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2F3YWtlKGludCBpOTE1 LCBjb25zdCBpbnRlbF9jdHhfdCAqY3R4KQogCiAJaWd0X2ZyZWVfc3BpbnMoaTkxNSk7CiAJY2xv c2UoZmQpOworCXB1dF9haG5kKGFobmQpOwogfQogCiAjZGVmaW5lICAgTUlfV0FJVF9GT1JfUElQ RV9DX1ZCTEFOSyAoMTw8MjEpCkBAIC0xMTQ3LDYgKzExOTUsNyBAQCBtdWx0aV9jbGllbnQoaW50 IGdlbV9mZCwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCwKIAl1aW50NjRfdCB2YWxbMl0sIHRzWzJd LCBwZXJmX3NsZXB0WzJdOwogCWlndF9zcGluX3QgKnNwaW47CiAJaW50IGZkWzJdOworCXVpbnQ2 NF90IGFobmQgPSBnZXRfcmVsb2NfYWhuZChnZW1fZmQsIGN0eC0+aWQpOwogCiAJZ2VtX3F1aWVz Y2VudF9ncHUoZ2VtX2ZkKTsKIApAQCAtMTE1OSw3ICsxMjA4LDcgQEAgbXVsdGlfY2xpZW50KGlu dCBnZW1fZmQsIGNvbnN0IGludGVsX2N0eF90ICpjdHgsCiAJICovCiAJZmRbMV0gPSBvcGVuX3Bt dShnZW1fZmQsIGNvbmZpZyk7CiAKLQlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgY3R4LCBlKTsK KwlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgYWhuZCwgY3R4LCBlKTsKIAogCXZhbFswXSA9IHZh bFsxXSA9IF9fcG11X3JlYWRfc2luZ2xlKGZkWzBdLCAmdHNbMF0pOwogCXNsZXB0WzFdID0gbWVh c3VyZWRfdXNsZWVwKGJhdGNoX2R1cmF0aW9uX25zIC8gMTAwMCk7CkBAIC0xMTc3LDYgKzEyMjYs NyBAQCBtdWx0aV9jbGllbnQoaW50IGdlbV9mZCwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCwKIAln ZW1fc3luYyhnZW1fZmQsIHNwaW4tPmhhbmRsZSk7CiAJaWd0X3NwaW5fZnJlZShnZW1fZmQsIHNw aW4pOwogCWNsb3NlKGZkWzBdKTsKKwlwdXRfYWhuZChhaG5kKTsKIAogCWFzc2VydF93aXRoaW5f ZXBzaWxvbih2YWxbMF0sIHBlcmZfc2xlcHRbMF0sIHRvbGVyYW5jZSk7CiAJYXNzZXJ0X3dpdGhp bl9lcHNpbG9uKHZhbFsxXSwgcGVyZl9zbGVwdFsxXSwgdG9sZXJhbmNlKTsKQEAgLTEyNDAsNiAr MTI5MCw3IEBAIHN0YXRpYyB2b2lkIGNwdV9ob3RwbHVnKGludCBnZW1fZmQpCiAJaW50IGZkLCBy ZXQ7CiAJaW50IGN1ciA9IDA7CiAJY2hhciBidWY7CisJdWludDY0X3QgYWhuZCA9IGdldF9yZWxv Y19haG5kKGdlbV9mZCwgMCk7CiAKIAlpZ3RfcmVxdWlyZShjcHUwX2hvdHBsdWdfc3VwcG9ydCgp KTsKIApAQCAtMTI1MCw4ICsxMzAxLDEwIEBAIHN0YXRpYyB2b2lkIGNwdV9ob3RwbHVnKGludCBn ZW1fZmQpCiAJICogQ3JlYXRlIHR3byBzcGlubmVycyBzbyB0ZXN0IGNhbiBlbnN1cmUgc2hvcnRl ciBnYXBzIGluIGVuZ2luZQogCSAqIGJ1c3luZXNzIGFzIGl0IGlzIHRlcm1pbmF0aW5nIG9uZSBh bmQgcmUtc3RhcnRpbmcgdGhlIG90aGVyLgogCSAqLwotCXNwaW5bMF0gPSBpZ3Rfc3Bpbl9uZXco Z2VtX2ZkLCAuZW5naW5lID0gSTkxNV9FWEVDX0RFRkFVTFQpOwotCXNwaW5bMV0gPSBfX2lndF9z cGluX25ldyhnZW1fZmQsIC5lbmdpbmUgPSBJOTE1X0VYRUNfREVGQVVMVCk7CisJc3BpblswXSA9 IGlndF9zcGluX25ldyhnZW1fZmQsIC5haG5kID0gYWhuZCwKKwkJCSAgICAgICAuZW5naW5lID0g STkxNV9FWEVDX0RFRkFVTFQpOworCXNwaW5bMV0gPSBfX2lndF9zcGluX25ldyhnZW1fZmQsIC5h aG5kID0gYWhuZCwKKwkJCQkgLmVuZ2luZSA9IEk5MTVfRVhFQ19ERUZBVUxUKTsKIAogCXZhbCA9 IF9fcG11X3JlYWRfc2luZ2xlKGZkLCAmdHNbMF0pOwogCkBAIC0xMzM0LDcgKzEzODcsNyBAQCBz dGF0aWMgdm9pZCBjcHVfaG90cGx1ZyhpbnQgZ2VtX2ZkKQogCQkJYnJlYWs7CiAKIAkJaWd0X3Nw aW5fZnJlZShnZW1fZmQsIHNwaW5bY3VyXSk7Ci0JCXNwaW5bY3VyXSA9IF9faWd0X3NwaW5fbmV3 KGdlbV9mZCwKKwkJc3BpbltjdXJdID0gX19pZ3Rfc3Bpbl9uZXcoZ2VtX2ZkLCAuYWhuZCA9IGFo bmQsCiAJCQkJCSAgIC5lbmdpbmUgPSBJOTE1X0VYRUNfREVGQVVMVCk7CiAJCWN1ciBePSAxOwog CX0KQEAgLTEzNDgsNiArMTQwMSw3IEBAIHN0YXRpYyB2b2lkIGNwdV9ob3RwbHVnKGludCBnZW1f ZmQpCiAJaWd0X3dhaXRjaGlsZHJlbigpOwogCWNsb3NlKGZkKTsKIAljbG9zZShsaW5rWzBdKTsK KwlwdXRfYWhuZChhaG5kKTsKIAogCS8qIFNraXAgaWYgY2hpbGQgc2lnbmFscyBhIHByb2JsZW0g d2l0aCBvZmZsaW5pbmcgYSBDUFUuICovCiAJaWd0X3NraXBfb24oYnVmID09ICdzJyk7CkBAIC0x MzcyLDYgKzE0MjYsNyBAQCB0ZXN0X2ludGVycnVwdHMoaW50IGdlbV9mZCkKIAl1aW50NjRfdCBp ZGxlLCBidXN5OwogCWludCBmZW5jZV9mZDsKIAlpbnQgZmQ7CisJdWludDY0X3QgYWhuZCA9IGdl dF9yZWxvY19haG5kKGdlbV9mZCwgMCk7CiAKIAlnZW1fcXVpZXNjZW50X2dwdShnZW1fZmQpOwog CkBAIC0xMzgwLDYgKzE0MzUsNyBAQCB0ZXN0X2ludGVycnVwdHMoaW50IGdlbV9mZCkKIAkvKiBR dWV1ZSBzcGlubmluZyBiYXRjaGVzLiAqLwogCWZvciAoaW50IGkgPSAwOyBpIDwgdGFyZ2V0OyBp KyspIHsKIAkJc3BpbltpXSA9IF9faWd0X3NwaW5fbmV3KGdlbV9mZCwKKwkJCQkJIC5haG5kID0g YWhuZCwKIAkJCQkJIC5lbmdpbmUgPSBJOTE1X0VYRUNfREVGQVVMVCwKIAkJCQkJIC5mbGFncyA9 IElHVF9TUElOX0ZFTkNFX09VVCk7CiAJCWlmIChpID09IDApIHsKQEAgLTE0MTgsNiArMTQ3NCw3 IEBAIHRlc3RfaW50ZXJydXB0cyhpbnQgZ2VtX2ZkKQogCS8qIEZyZWUgYmF0Y2hlcy4gKi8KIAlm b3IgKGludCBpID0gMDsgaSA8IHRhcmdldDsgaSsrKQogCQlpZ3Rfc3Bpbl9mcmVlKGdlbV9mZCwg c3BpbltpXSk7CisJcHV0X2FobmQoYWhuZCk7CiAKIAkvKiBDaGVjayBhdCBsZWFzdCBhcyBtYW55 IGludGVycnVwdHMgaGFzIGJlZW4gZ2VuZXJhdGVkLiAqLwogCWJ1c3kgPSBwbXVfcmVhZF9zaW5n bGUoZmQpIC0gaWRsZTsKQEAgLTE0MzUsNiArMTQ5Miw3IEBAIHRlc3RfaW50ZXJydXB0c19zeW5j KGludCBnZW1fZmQpCiAJc3RydWN0IHBvbGxmZCBwZmQ7CiAJdWludDY0X3QgaWRsZSwgYnVzeTsK IAlpbnQgZmQ7CisJdWludDY0X3QgYWhuZCA9IGdldF9yZWxvY19haG5kKGdlbV9mZCwgMCk7CiAK IAlnZW1fcXVpZXNjZW50X2dwdShnZW1fZmQpOwogCkBAIC0xNDQzLDYgKzE1MDEsNyBAQCB0ZXN0 X2ludGVycnVwdHNfc3luYyhpbnQgZ2VtX2ZkKQogCS8qIFF1ZXVlIHNwaW5uaW5nIGJhdGNoZXMu ICovCiAJZm9yIChpbnQgaSA9IDA7IGkgPCB0YXJnZXQ7IGkrKykKIAkJc3BpbltpXSA9IF9faWd0 X3NwaW5fbmV3KGdlbV9mZCwKKwkJCQkJIC5haG5kID0gYWhuZCwKIAkJCQkJIC5mbGFncyA9IElH VF9TUElOX0ZFTkNFX09VVCk7CiAKIAkvKiBXYWl0IGZvciBpZGxlIHN0YXRlLiAqLwpAQCAtMTQ2 Nyw2ICsxNTI2LDcgQEAgdGVzdF9pbnRlcnJ1cHRzX3N5bmMoaW50IGdlbV9mZCkKIAkvKiBDaGVj ayBhdCBsZWFzdCBhcyBtYW55IGludGVycnVwdHMgaGFzIGJlZW4gZ2VuZXJhdGVkLiAqLwogCWJ1 c3kgPSBwbXVfcmVhZF9zaW5nbGUoZmQpIC0gaWRsZTsKIAljbG9zZShmZCk7CisJcHV0X2FobmQo YWhuZCk7CiAKIAlpZ3RfYXNzZXJ0X2x0ZSh0YXJnZXQsIGJ1c3kpOwogfQpAQCAtMTQ3OSw2ICsx NTM5LDcgQEAgdGVzdF9mcmVxdWVuY3koaW50IGdlbV9mZCkKIAlkb3VibGUgbWluWzJdLCBtYXhb Ml07CiAJaWd0X3NwaW5fdCAqc3BpbjsKIAlpbnQgZmRbMl0sIHN5c2ZzOworCXVpbnQ2NF90IGFo bmQgPSBnZXRfcmVsb2NfYWhuZChnZW1fZmQsIDApOwogCiAJc3lzZnMgPSBpZ3Rfc3lzZnNfb3Bl bihnZW1fZmQpOwogCWlndF9yZXF1aXJlKHN5c2ZzID49IDApOwpAQCAtMTUwNiw3ICsxNTY3LDcg QEAgdGVzdF9mcmVxdWVuY3koaW50IGdlbV9mZCkKIAlpZ3RfcmVxdWlyZShpZ3Rfc3lzZnNfZ2V0 X3UzMihzeXNmcywgImd0X2Jvb3N0X2ZyZXFfbWh6IikgPT0gbWluX2ZyZXEpOwogCiAJZ2VtX3F1 aWVzY2VudF9ncHUoZ2VtX2ZkKTsgLyogSWRsZSB0byBiZSBzdXJlIHRoZSBjaGFuZ2UgdGFrZXMg ZWZmZWN0ICovCi0Jc3BpbiA9IHNwaW5fc3luY19mbGFncyhnZW1fZmQsIDAsIEk5MTVfRVhFQ19E RUZBVUxUKTsKKwlzcGluID0gc3Bpbl9zeW5jX2ZsYWdzKGdlbV9mZCwgYWhuZCwgMCwgSTkxNV9F WEVDX0RFRkFVTFQpOwogCiAJc2xlcHQgPSBwbXVfcmVhZF9tdWx0aShmZFswXSwgMiwgc3RhcnQp OwogCW1lYXN1cmVkX3VzbGVlcChiYXRjaF9kdXJhdGlvbl9ucyAvIDEwMDApOwpAQCAtMTUzMiw3 ICsxNTkzLDcgQEAgdGVzdF9mcmVxdWVuY3koaW50IGdlbV9mZCkKIAlpZ3RfcmVxdWlyZShpZ3Rf c3lzZnNfZ2V0X3UzMihzeXNmcywgImd0X21pbl9mcmVxX21oeiIpID09IG1heF9mcmVxKTsKIAog CWdlbV9xdWllc2NlbnRfZ3B1KGdlbV9mZCk7Ci0Jc3BpbiA9IHNwaW5fc3luY19mbGFncyhnZW1f ZmQsIDAsIEk5MTVfRVhFQ19ERUZBVUxUKTsKKwlzcGluID0gc3Bpbl9zeW5jX2ZsYWdzKGdlbV9m ZCwgYWhuZCwgMCwgSTkxNV9FWEVDX0RFRkFVTFQpOwogCiAJc2xlcHQgPSBwbXVfcmVhZF9tdWx0 aShmZFswXSwgMiwgc3RhcnQpOwogCW1lYXN1cmVkX3VzbGVlcChiYXRjaF9kdXJhdGlvbl9ucyAv IDEwMDApOwpAQCAtMTU1Myw2ICsxNjE0LDcgQEAgdGVzdF9mcmVxdWVuY3koaW50IGdlbV9mZCkK IAkJCSBtaW5fZnJlcSwgaWd0X3N5c2ZzX2dldF91MzIoc3lzZnMsICJndF9taW5fZnJlcV9taHoi KSk7CiAJY2xvc2UoZmRbMF0pOwogCWNsb3NlKGZkWzFdKTsKKwlwdXRfYWhuZChhaG5kKTsKIAog CWlndF9pbmZvKCJNaW4gZnJlcXVlbmN5OiByZXF1ZXN0ZWQgJS4xZiwgYWN0dWFsICUuMWZcbiIs CiAJCSBtaW5bMF0sIG1pblsxXSk7CkBAIC0xODM5LDkgKzE5MDEsMTMgQEAgYWNjdXJhY3koaW50 IGdlbV9mZCwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCwKIAkJfTsKIAkJdWludDY0X3QgdG90YWxf YnVzeV9ucyA9IDAsIHRvdGFsX25zID0gMDsKIAkJaWd0X3NwaW5fdCAqc3BpbjsKKwkJdWludDY0 X3QgYWhuZDsKKworCQlpbnRlbF9hbGxvY2F0b3JfaW5pdCgpOworCQlhaG5kID0gZ2V0X3JlbG9j X2FobmQoZ2VtX2ZkLCAwKTsKIAogCQkvKiBBbGxvY2F0ZSBvdXIgc3BpbiBiYXRjaCBhbmQgaWRs ZSBpdC4gKi8KLQkJc3BpbiA9IGlndF9zcGluX25ldyhnZW1fZmQsIC5jdHggPSBjdHgsIC5lbmdp bmUgPSBlLT5mbGFncyk7CisJCXNwaW4gPSBpZ3Rfc3Bpbl9uZXcoZ2VtX2ZkLCAuYWhuZCA9IGFo bmQsIC5jdHggPSBjdHgsIC5lbmdpbmUgPSBlLT5mbGFncyk7CiAJCWlndF9zcGluX2VuZChzcGlu KTsKIAkJZ2VtX3N5bmMoZ2VtX2ZkLCBzcGluLT5oYW5kbGUpOwogCkBAIC0xOTEyLDYgKzE5Nzgs NyBAQCBhY2N1cmFjeShpbnQgZ2VtX2ZkLCBjb25zdCBpbnRlbF9jdHhfdCAqY3R4LAogCQl9CiAK IAkJaWd0X3NwaW5fZnJlZShnZW1fZmQsIHNwaW4pOworCQlwdXRfYWhuZChhaG5kKTsKIAl9CiAK IAlmZCA9IG9wZW5fcG11KGdlbV9mZCwgSTkxNV9QTVVfRU5HSU5FX0JVU1koZS0+Y2xhc3MsIGUt Pmluc3RhbmNlKSk7Ci0tIAoyLjI2LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aWd0LWRldgo=