From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8E6E289D5E for ; Fri, 10 May 2019 12:33:53 +0000 (UTC) From: Maarten Lankhorst Date: Fri, 10 May 2019 14:33:49 +0200 Message-Id: <20190510123349.5072-2-maarten.lankhorst@linux.intel.com> In-Reply-To: <20190510123349.5072-1-maarten.lankhorst@linux.intel.com> References: <20190510123349.5072-1-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 2/2] tests/kms_chamelium: Fix *-cmp-random and *-crc-random tests, v4. 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 List-ID: VGhlIHJhbmRvbSB0ZXN0cyBhbGxvd2VkIHBvdGVudGlhbGx5IGludmFsaWQgdGhpbmdzOgotIDF4 MSBmYidzIHRvIGJlIGNyZWF0ZWQuIEZvcmNlIGEgbWluaW11bSBvZiAzMiBvbiBZVVYgc28gYSBz Y2FsZWQKICBwbGFuYXIgZm9ybWF0IHBsYW5lIHdpbGwgYmUgYXQgbGVhc3QgMTZ4MTYuIFRoaXMg d2lsbCBmaXgKICBzY2FsZWQvcGxhbmFyIGZvcm1hdCBzdXBwb3J0IGluIGk5MTUgYW5kIGF2b2lk IGEgZGl2IGJ5IHplcm8gd2hlbgogIGNhbGN1bGF0aW5nIGEgdmFsdWUgbW9kdWxvIGgvMiBhbmQg dy8yLgotIERvd25zY2FsaW5nIHRvIGFueSBhbW91bnQsIHJlc3RyaWN0IGl0IHRvIDJ4IHRvIG1h a2UgdGhlIHRlc3QgcGFzcy4KLSBTb21lIGh3IG1heSBub3QgYWxsb3cgc2NhbGluZywgaW4gdGhv c2UgY2FzZXMgd2Ugc2hvdWxkIGZhbGxiYWNrCiAgdG8gbm8gc2NhbGluZyBhdCBhbGwuCi0gQXR0 ZW1wdGluZyB0byBjb25maWd1cmUgYSBtaW5pbXVtIG9mIDQgcGxhbmVzLCBpbnN0ZWFkIG9mIGEg bWF4aW11bS4KICBUaGlzIGZhaWxzIHdpdGggYSBudWxsIHBvaW50ZXIgZGVyZWYgaWYgdGhlIGh3 IGRvZXNuJ3QgaGF2ZSA0CiAgY29uZmlndXJhYmxlIG92ZXJsYXkgcGxhbmVzLgoKQ2hhbmdlcyBz aW5jZSB2MToKLSBFbmZvcmNlIGEgbWluaW11bSBkaXNwbGF5ZWQgc2l6ZSBvZiAxNngxNiBmb3Ig aW50ZWwgb25seSwKICBvdGhlcndpc2UgaXQncyAxeDEuCi0gRml4IGNvbW1lbnRzLgpDaGFuZ2Vz IHNpbmNlIHYyOgotIEZpeCBjb21tZW50cyBoYXJkZXIuCi0gUGljayBhIHJhbmRvbSBmb3JtYXQg YW5kIGl0cyBtb2RpZmllciBmcm9tIHRoZSBwbGFuZSBpdHNlbGYsCiAgaW5zdGVhZCBvZiB1c2lu ZyBpZ3RfZm9ybWF0X2FycmF5X2ZpbGwoKS4gVGhpcyB3aWxsIGNhdXNlIHRoZSB0ZXN0CiAgdG8g dXNlIGFsbCB2YWxpZCBjb21iaW5hdGlvbnMgb2YgbW9kaWZpZXJzIGFuZCBmb3JtYXRzLgotIFNl dCBtaW5pbXVtIGRpbWVuc2lvbiB0byA4IGZvciAheXV2LCBhbmQgMTYgZm9yIFlVVi4KLSBHZW5l cmF0ZSBmb3JtYXQgLyBtb2RpZmllciBiZWZvcmUKQ2hhbmdlcyBzaW5jZSB2MzoKLSBSZWJhc2Uu CgpDYzogUGF1bCBLb2NpYWxrb3dza2kgPHBhdWwua29jaWFsa293c2tpQGJvb3RsaW4uY29tPgpT aWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXgu aW50ZWwuY29tPgpBY2tlZC1ieTogU2ltb24gU2VyIDxzaW1vbi5zZXJAaW50ZWwuY29tPgotLS0K IHRlc3RzL2ttc19jaGFtZWxpdW0uYyB8IDMxNyArKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxOTIgaW5zZXJ0aW9ucygrKSwgMTI1IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19jaGFtZWxpdW0uYyBiL3Rlc3RzL2tt c19jaGFtZWxpdW0uYwppbmRleCA1MDJmMWVmYTA3MjcuLmM4NGFkOGE2ZjViNiAxMDA2NDQKLS0t IGEvdGVzdHMva21zX2NoYW1lbGl1bS5jCisrKyBiL3Rlc3RzL2ttc19jaGFtZWxpdW0uYwpAQCAt MTA4MywxNyArMTA4Myw0NyBAQCB0ZXN0X2Rpc3BsYXlfYXVkaW8oZGF0YV90ICpkYXRhLCBzdHJ1 Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQsCiB9CiAKIAotc3RhdGljIHZvaWQgc2VsZWN0X3RpbGVk X21vZGlmaWVyKGlndF9wbGFuZV90ICpwbGFuZSwgdWludDMyX3Qgd2lkdGgsCitzdGF0aWMgdm9p ZCByYW5kb21pemVfcGxhbmVfc3RyaWRlKGRhdGFfdCAqZGF0YSwKKwkJCQkgICB1aW50MzJfdCB3 aWR0aCwgdWludDMyX3QgaGVpZ2h0LAorCQkJCSAgIHVpbnQzMl90IGZvcm1hdCwgdWludDY0X3Qg bW9kaWZpZXIsCisJCQkJICAgc2l6ZV90ICpzdHJpZGUpCit7CisJc2l6ZV90IHN0cmlkZV9taW47 CisJdWludDMyX3QgbWF4X3RpbGVfdyA9IDQsIHRpbGVfdywgdGlsZV9oOworCWludCBpOworCXN0 cnVjdCBpZ3RfZmIgZHVtbXk7CisKKwlzdHJpZGVfbWluID0gd2lkdGggKiBpZ3RfZm9ybWF0X3Bs YW5lX2JwcChmb3JtYXQsIDApIC8gODsKKworCS8qIFJhbmRvbWl6ZSB0aGUgc3RyaWRlIHRvIGxl c3MgdGhhbiB0d2ljZSB0aGUgbWluaW11bS4gKi8KKwkqc3RyaWRlID0gKHJhbmQoKSAlIHN0cmlk ZV9taW4pICsgc3RyaWRlX21pbjsKKworCS8qCisJICogQ3JlYXRlIGEgZHVtbXkgRkIgdG8gZGV0 ZXJtaW5lIGJwcCBmb3IgZWFjaCBwbGFuZSwgYW5kIGNhbGN1bGF0ZQorCSAqIHRoZSBtYXhpbXVt IHRpbGUgd2lkdGggZnJvbSB0aGF0LgorCSAqLworCWlndF9jcmVhdGVfZmIoZGF0YS0+ZHJtX2Zk LCA2NCwgNjQsIGZvcm1hdCwgbW9kaWZpZXIsICZkdW1teSk7CisJZm9yIChpID0gMDsgaSA8IGR1 bW15Lm51bV9wbGFuZXM7IGkrKykgeworCQlpZ3RfZ2V0X2ZiX3RpbGVfc2l6ZShkYXRhLT5kcm1f ZmQsIG1vZGlmaWVyLCBkdW1teS5wbGFuZV9icHBbaV0sICZ0aWxlX3csICZ0aWxlX2gpOworCisJ CWlmICh0aWxlX3cgPiBtYXhfdGlsZV93KQorCQkJbWF4X3RpbGVfdyA9IHRpbGVfdzsKKwl9CisJ aWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZkdW1teSk7CisKKwkvKgorCSAqIFBpeG1hbiBy ZXF1aXJlcyB0aGUgc3RyaWRlIHRvIGJlIGFsaWduZWQgdG8gMzItYml0cywgd2hpY2ggaXMKKwkg KiByZWZsZWN0ZWQgaW4gdGhlIGluaXRpYWwgdmFsdWUgb2YgbWF4X3RpbGVfdyBhbmQgdGhlIGh3 CisJICogbWF5IHJlcXVpcmUgYSBtdWx0aXBsZSBvZiB0aWxlIHdpZHRoLCBjaG9vc2UgYmlnZ2Vz dCBvZiB0aGUgMi4KKwkgKi8KKwkqc3RyaWRlID0gQUxJR04oKnN0cmlkZSwgbWF4X3RpbGVfdyk7 Cit9CisKK3N0YXRpYyB2b2lkIHVwZGF0ZV90aWxlZF9tb2RpZmllcihpZ3RfcGxhbmVfdCAqcGxh bmUsIHVpbnQzMl90IHdpZHRoLAogCQkJCSAgdWludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3Jt YXQsCiAJCQkJICB1aW50NjRfdCAqbW9kaWZpZXIpCiB7Ci0JaWYgKGlndF9wbGFuZV9oYXNfZm9y bWF0X21vZChwbGFuZSwgZm9ybWF0LAotCQkJCSAgICAgRFJNX0ZPUk1BVF9NT0RfQlJPQURDT01f VkM0X1RfVElMRUQpKSB7Ci0JCWlndF9kZWJ1ZygiU2VsZWN0aW5nIFZDNCBULXRpbGluZ1xuIik7 Ci0KLQkJKm1vZGlmaWVyID0gRFJNX0ZPUk1BVF9NT0RfQlJPQURDT01fVkM0X1RfVElMRUQ7Ci0J fSBlbHNlIGlmIChpZ3RfcGxhbmVfaGFzX2Zvcm1hdF9tb2QocGxhbmUsIGZvcm1hdCwKLQkJCQkJ ICAgIERSTV9GT1JNQVRfTU9EX0JST0FEQ09NX1NBTkQyNTYpKSB7CisJaWYgKCptb2RpZmllciA9 PSBEUk1fRk9STUFUX01PRF9CUk9BRENPTV9TQU5EMjU2KSB7CiAJCS8qIFJhbmRvbWl6ZSB0aGUg Y29sdW1uIGhlaWdodCB0byBsZXNzIHRoYW4gdHdpY2UgdGhlIG1pbmltdW0uICovCiAJCXNpemVf dCBjb2x1bW5faGVpZ2h0ID0gKHJhbmQoKSAlIGhlaWdodCkgKyBoZWlnaHQ7CiAKQEAgLTExMDEs OTAgKzExMzEsODQgQEAgc3RhdGljIHZvaWQgc2VsZWN0X3RpbGVkX21vZGlmaWVyKGlndF9wbGFu ZV90ICpwbGFuZSwgdWludDMyX3Qgd2lkdGgsCiAJCQkgIGNvbHVtbl9oZWlnaHQpOwogCiAJCSpt b2RpZmllciA9IERSTV9GT1JNQVRfTU9EX0JST0FEQ09NX1NBTkQyNTZfQ09MX0hFSUdIVChjb2x1 bW5faGVpZ2h0KTsKLQl9IGVsc2UgewotCQkqbW9kaWZpZXIgPSBEUk1fRk9STUFUX01PRF9MSU5F QVI7CiAJfQogfQogCi1zdGF0aWMgdm9pZCByYW5kb21pemVfcGxhbmVfZm9ybWF0X3N0cmlkZShp Z3RfcGxhbmVfdCAqcGxhbmUsCi0JCQkJCSAgdWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdo dCwKLQkJCQkJICB1aW50MzJfdCAqZm9ybWF0LCB1aW50NjRfdCAqbW9kaWZpZXIsCi0JCQkJCSAg c2l6ZV90ICpzdHJpZGUsIGJvb2wgYWxsb3dfeXV2KQorc3RhdGljIHZvaWQgcmFuZG9taXplX3Bs YW5lX3NldHVwKGRhdGFfdCAqZGF0YSwgaWd0X3BsYW5lX3QgKnBsYW5lLAorCQkJCSAgZHJtTW9k ZU1vZGVJbmZvICptb2RlLAorCQkJCSAgdWludDMyX3QgKndpZHRoLCB1aW50MzJfdCAqaGVpZ2h0 LAorCQkJCSAgdWludDMyX3QgKmZvcm1hdCwgdWludDY0X3QgKm1vZGlmaWVyLAorCQkJCSAgYm9v bCBhbGxvd195dXYpCiB7Ci0Jc2l6ZV90IHN0cmlkZV9taW47Ci0JdWludDMyX3QgKmZvcm1hdHNf YXJyYXk7Ci0JdW5zaWduZWQgaW50IGZvcm1hdHNfY291bnQ7CisJaW50IG1pbl9kaW07CisJdWlu dDMyX3QgaWR4W3BsYW5lLT5mb3JtYXRfbW9kX2NvdW50XTsKIAl1bnNpZ25lZCBpbnQgY291bnQg PSAwOwogCXVuc2lnbmVkIGludCBpOwotCWJvb2wgdGlsZWQ7Ci0JaW50IGluZGV4OwotCi0JaWd0 X2Zvcm1hdF9hcnJheV9maWxsKCZmb3JtYXRzX2FycmF5LCAmZm9ybWF0c19jb3VudCwgYWxsb3df eXV2KTsKIAogCS8qIEZpcnN0IHBhc3MgdG8gY291bnQgdGhlIHN1cHBvcnRlZCBmb3JtYXRzLiAq LwotCWZvciAoaSA9IDA7IGkgPCBmb3JtYXRzX2NvdW50OyBpKyspCi0JCWlmIChpZ3RfcGxhbmVf aGFzX2Zvcm1hdF9tb2QocGxhbmUsIGZvcm1hdHNfYXJyYXlbaV0sCi0JCQkJCSAgICAgRFJNX0ZP Uk1BVF9NT0RfTElORUFSKSkKLQkJCWNvdW50Kys7CisJZm9yIChpID0gMDsgaSA8IHBsYW5lLT5m b3JtYXRfbW9kX2NvdW50OyBpKyspCisJCWlmIChpZ3RfZmJfc3VwcG9ydGVkX2Zvcm1hdChwbGFu ZS0+Zm9ybWF0c1tpXSkgJiYKKwkJICAgIChhbGxvd195dXYgfHwgIWlndF9mb3JtYXRfaXNfeXV2 KHBsYW5lLT5mb3JtYXRzW2ldKSkpCisJCQlpZHhbY291bnQrK10gPSBpOwogCiAJaWd0X2Fzc2Vy dChjb3VudCA+IDApOwogCi0JaW5kZXggPSByYW5kKCkgJSBjb3VudDsKKwlpID0gaWR4W3JhbmQo KSAlIGNvdW50XTsKKwkqZm9ybWF0ID0gcGxhbmUtPmZvcm1hdHNbaV07CisJKm1vZGlmaWVyID0g cGxhbmUtPm1vZGlmaWVyc1tpXTsKIAotCS8qIFNlY29uZCBwYXNzIHRvIGdldCB0aGUgaW5kZXgt dGggc3VwcG9ydGVkIGZvcm1hdC4gKi8KLQlmb3IgKGkgPSAwOyBpIDwgZm9ybWF0c19jb3VudDsg aSsrKSB7Ci0JCWlmICghaWd0X3BsYW5lX2hhc19mb3JtYXRfbW9kKHBsYW5lLCBmb3JtYXRzX2Fy cmF5W2ldLAotCQkJCQkgICAgICBEUk1fRk9STUFUX01PRF9MSU5FQVIpKQotCQkJY29udGludWU7 CisJdXBkYXRlX3RpbGVkX21vZGlmaWVyKHBsYW5lLCAqd2lkdGgsICpoZWlnaHQsICpmb3JtYXQs IG1vZGlmaWVyKTsKIAotCQlpZiAoIWluZGV4LS0pIHsKLQkJCSpmb3JtYXQgPSBmb3JtYXRzX2Fy cmF5W2ldOwotCQkJYnJlYWs7Ci0JCX0KLQl9Ci0KLQlmcmVlKGZvcm1hdHNfYXJyYXkpOwotCi0J aWd0X2Fzc2VydChpbmRleCA8IDApOwotCi0Jc3RyaWRlX21pbiA9IHdpZHRoICogaWd0X2Zvcm1h dF9wbGFuZV9icHAoKmZvcm1hdCwgMCkgLyA4OworCS8qCisJICogUmFuZG9taXplIHdpZHRoIGFu ZCBoZWlnaHQgaW4gdGhlIG1vZGUgZGltZW5zaW9ucyByYW5nZS4KKwkgKgorCSAqIFJlc3RyaWN0 IHRvIGEgbWluIG9mIDIgKiBtaW5fZGltLCB0aGlzIHdheSBzcmNfdy9oIGFyZSBhbHdheXMgYXQK KwkgKiBsZWFzdCBtaW5fZGltLCBiZWNhdXNlIHNyY193ID0gd2lkdGggLSAocmFuZCAlIHcgLyAy KS4KKwkgKgorCSAqIFVzZSBhIG1pbmltdW0gZGltZW5zaW9uIG9mIDE2IGZvciBZVVYsIGJlY2F1 c2UgcGxhbmFyIFlVVgorCSAqIHN1YnNhbXBsZXMgdGhlIFVWIHBsYW5lLgorCSAqLworCW1pbl9k aW0gPSBpZ3RfZm9ybWF0X2lzX3l1digqZm9ybWF0KSA/IDE2IDogODsKIAotCS8qIFJhbmRvbWl6 ZSB0aGUgc3RyaWRlIHRvIGxlc3MgdGhhbiB0d2ljZSB0aGUgbWluaW11bS4gKi8KLQkqc3RyaWRl ID0gKHJhbmQoKSAlIHN0cmlkZV9taW4pICsgc3RyaWRlX21pbjsKKwkqd2lkdGggPSBtYXgoKHJh bmQoKSAlIG1vZGUtPmhkaXNwbGF5KSArIDEsIDIgKiBtaW5fZGltKTsKKwkqaGVpZ2h0ID0gbWF4 KChyYW5kKCkgJSBtb2RlLT52ZGlzcGxheSkgKyAxLCAyICogbWluX2RpbSk7Cit9CiAKLQkvKiBQ aXhtYW4gcmVxdWlyZXMgdGhlIHN0cmlkZSB0byBiZSBhbGlnbmVkIHRvIDMyLWJ5dGUgd29yZHMu ICovCi0JKnN0cmlkZSA9IEFMSUdOKCpzdHJpZGUsIHNpemVvZih1aW50MzJfdCkpOworc3RhdGlj IHZvaWQgY29uZmlndXJlX3BsYW5lKGlndF9wbGFuZV90ICpwbGFuZSwgdWludDMyX3Qgc3JjX3cs IHVpbnQzMl90IHNyY19oLAorCQkJICAgIHVpbnQzMl90IHNyY194LCB1aW50MzJfdCBzcmNfeSwg dWludDMyX3QgY3J0Y193LAorCQkJICAgIHVpbnQzMl90IGNydGNfaCwgaW50MzJfdCBjcnRjX3gs IGludDMyX3QgY3J0Y195LAorCQkJICAgIHN0cnVjdCBpZ3RfZmIgKmZiKQoreworCWlndF9wbGFu ZV9zZXRfZmIocGxhbmUsIGZiKTsKIAotCS8qIFJhbmRvbWl6ZSB0aGUgdXNlIG9mIGEgdGlsZWQg bW9kZSB3aXRoIGEgMS80IHByb2JhYmlsaXR5LiAqLwotCXRpbGVkID0gKChyYW5kKCkgJSA0KSA9 PSAwKTsKKwlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKHBsYW5lLCBjcnRjX3gsIGNydGNfeSk7CisJ aWd0X3BsYW5lX3NldF9zaXplKHBsYW5lLCBjcnRjX3csIGNydGNfaCk7CiAKLQlpZiAodGlsZWQp Ci0JCXNlbGVjdF90aWxlZF9tb2RpZmllcihwbGFuZSwgd2lkdGgsIGhlaWdodCwgKmZvcm1hdCwg bW9kaWZpZXIpOwotCWVsc2UKLQkJKm1vZGlmaWVyID0gRFJNX0ZPUk1BVF9NT0RfTElORUFSOwor CWlndF9mYl9zZXRfcG9zaXRpb24oZmIsIHBsYW5lLCBzcmNfeCwgc3JjX3kpOworCWlndF9mYl9z ZXRfc2l6ZShmYiwgcGxhbmUsIHNyY193LCBzcmNfaCk7CiB9CiAKLXN0YXRpYyB2b2lkIHJhbmRv bWl6ZV9wbGFuZV9kaW1lbnNpb25zKGRybU1vZGVNb2RlSW5mbyAqbW9kZSwKLQkJCQkgICAgICAg dWludDMyX3QgKndpZHRoLCB1aW50MzJfdCAqaGVpZ2h0LAotCQkJCSAgICAgICB1aW50MzJfdCAq c3JjX3csIHVpbnQzMl90ICpzcmNfaCwKLQkJCQkgICAgICAgdWludDMyX3QgKnNyY194LCB1aW50 MzJfdCAqc3JjX3ksCi0JCQkJICAgICAgIHVpbnQzMl90ICpjcnRjX3csIHVpbnQzMl90ICpjcnRj X2gsCi0JCQkJICAgICAgIGludDMyX3QgKmNydGNfeCwgaW50MzJfdCAqY3J0Y195LAotCQkJCSAg ICAgICBib29sIGFsbG93X3NjYWxpbmcpCitzdGF0aWMgdm9pZCByYW5kb21pemVfcGxhbmVfY29v cmRpbmF0ZXMoZGF0YV90ICpkYXRhLCBpZ3RfcGxhbmVfdCAqcGxhbmUsCisJCQkJCWRybU1vZGVN b2RlSW5mbyAqbW9kZSwKKwkJCQkJc3RydWN0IGlndF9mYiAqZmIsCisJCQkJCXVpbnQzMl90ICpz cmNfdywgdWludDMyX3QgKnNyY19oLAorCQkJCQl1aW50MzJfdCAqc3JjX3gsIHVpbnQzMl90ICpz cmNfeSwKKwkJCQkJdWludDMyX3QgKmNydGNfdywgdWludDMyX3QgKmNydGNfaCwKKwkJCQkJaW50 MzJfdCAqY3J0Y194LCBpbnQzMl90ICpjcnRjX3ksCisJCQkJCWJvb2wgYWxsb3dfc2NhbGluZykK IHsKKwlib29sIGlzX3l1diA9IGlndF9mb3JtYXRfaXNfeXV2KGZiLT5kcm1fZm9ybWF0KTsKKwl1 aW50MzJfdCB3aWR0aCA9IGZiLT53aWR0aCwgaGVpZ2h0ID0gZmItPmhlaWdodDsKIAlkb3VibGUg cmF0aW87Ci0KLQkvKiBSYW5kb21pemUgd2lkdGggYW5kIGhlaWdodCBpbiB0aGUgbW9kZSBkaW1l bnNpb25zIHJhbmdlLiAqLwotCSp3aWR0aCA9IChyYW5kKCkgJSBtb2RlLT5oZGlzcGxheSkgKyAx OwotCSpoZWlnaHQgPSAocmFuZCgpICUgbW9kZS0+dmRpc3BsYXkpICsgMTsKKwlpbnQgcmV0Owog CiAJLyogUmFuZG9taXplIHNvdXJjZSBvZmZzZXQgaW4gdGhlIGZpcnN0IGhhbGYgb2YgdGhlIG9y aWdpbmFsIHNpemUuICovCi0JKnNyY194ID0gcmFuZCgpICUgKCp3aWR0aCAvIDIpOwotCSpzcmNf eSA9IHJhbmQoKSAlICgqaGVpZ2h0IC8gMik7CisJKnNyY194ID0gcmFuZCgpICUgKHdpZHRoIC8g Mik7CisJKnNyY195ID0gcmFuZCgpICUgKGhlaWdodCAvIDIpOwogCiAJLyogVGhlIHNvdXJjZSBz aXplIG9ubHkgaW5jbHVkZXMgdGhlIGFjdGl2ZSBzb3VyY2UgYXJlYS4gKi8KLQkqc3JjX3cgPSAq d2lkdGggLSAqc3JjX3g7Ci0JKnNyY19oID0gKmhlaWdodCAtICpzcmNfeTsKKwkqc3JjX3cgPSB3 aWR0aCAtICpzcmNfeDsKKwkqc3JjX2ggPSBoZWlnaHQgLSAqc3JjX3k7CiAKIAlpZiAoYWxsb3df c2NhbGluZykgewogCQkqY3J0Y193ID0gKHJhbmQoKSAlIG1vZGUtPmhkaXNwbGF5KSArIDE7CkBA IC0xMTk0LDE3ICsxMjE4LDIyIEBAIHN0YXRpYyB2b2lkIHJhbmRvbWl6ZV9wbGFuZV9kaW1lbnNp b25zKGRybU1vZGVNb2RlSW5mbyAqbW9kZSwKIAkJICogRG9uJ3QgYm90aGVyIHdpdGggc2NhbGlu ZyBpZiBkaW1lbnNpb25zIGFyZSBxdWl0ZSBjbG9zZSBpbgogCQkgKiBvcmRlciB0byBnZXQgbm9u LXNjYWxpbmcgY2FzZXMgbW9yZSBmcmVxdWVudGx5LiBBbHNvIGxpbWl0CiAJCSAqIHNjYWxpbmcg dG8gM3ggdG8gYXZvaWQgYWdyZXNzaXZlIGZpbHRlcmluZyB0aGF0IG1ha2VzCi0JCSAqIGNvbXBh cmlzb24gbGVzcyByZWxpYWJsZS4KKwkJICogY29tcGFyaXNvbiBsZXNzIHJlbGlhYmxlLCBhbmQg ZG9uJ3QgZ28gYWJvdmUgMnggZG93bnNhbXBsaW5nCisJCSAqIHRvIGF2b2lkIHBvc3NpYmxlIGh3 IGxpbWl0YXRpb25zLgogCQkgKi8KIAogCQlyYXRpbyA9ICgoZG91YmxlKSAqY3J0Y193IC8gKnNy Y193KTsKLQkJaWYgKHJhdGlvID4gMC44ICYmIHJhdGlvIDwgMS4yKQorCQlpZiAocmF0aW8gPCAw LjUpCisJCQkqc3JjX3cgPSAqY3J0Y193ICogMjsKKwkJZWxzZSBpZiAocmF0aW8gPiAwLjggJiYg cmF0aW8gPCAxLjIpCiAJCQkqY3J0Y193ID0gKnNyY193OwogCQllbHNlIGlmIChyYXRpbyA+IDMu MCkKIAkJCSpjcnRjX3cgPSAqc3JjX3cgKiAzOwogCiAJCXJhdGlvID0gKChkb3VibGUpICpjcnRj X2ggLyAqc3JjX2gpOwotCQlpZiAocmF0aW8gPiAwLjggJiYgcmF0aW8gPCAxLjIpCisJCWlmIChy YXRpbyA8IDAuNSkKKwkJCSpzcmNfaCA9ICpjcnRjX2ggKiAyOworCQllbHNlIGlmIChyYXRpbyA+ IDAuOCAmJiByYXRpbyA8IDEuMikKIAkJCSpjcnRjX2ggPSAqc3JjX2g7CiAJCWVsc2UgaWYgKHJh dGlvID4gMy4wKQogCQkJKmNydGNfaCA9ICpzcmNfaCAqIDM7CkBAIC0xMjE5LDggKzEyNDgsMTUg QEAgc3RhdGljIHZvaWQgcmFuZG9taXplX3BsYW5lX2RpbWVuc2lvbnMoZHJtTW9kZU1vZGVJbmZv ICptb2RlLAogCQkgKiBzY2FsZWQgY2xpcHBpbmcgbWF5IHJlc3VsdCBpbiBkZWNpbWFsIGRpbWVu c2lvbnMsIHRoYXQgbW9zdAogCQkgKiBkcml2ZXJzIGRvbid0IHN1cHBvcnQuCiAJCSAqLwotCQkq Y3J0Y194ID0gcmFuZCgpICUgKG1vZGUtPmhkaXNwbGF5IC0gKmNydGNfdyk7Ci0JCSpjcnRjX3kg PSByYW5kKCkgJSAobW9kZS0+dmRpc3BsYXkgLSAqY3J0Y19oKTsKKwkJaWYgKCpjcnRjX3cgPCBt b2RlLT5oZGlzcGxheSkKKwkJCSpjcnRjX3ggPSByYW5kKCkgJSAobW9kZS0+aGRpc3BsYXkgLSAq Y3J0Y193KTsKKwkJZWxzZQorCQkJKmNydGNfeCA9IDA7CisKKwkJaWYgKCpjcnRjX2ggPCBtb2Rl LT52ZGlzcGxheSkKKwkJCSpjcnRjX3kgPSByYW5kKCkgJSAobW9kZS0+dmRpc3BsYXkgLSAqY3J0 Y19oKTsKKwkJZWxzZQorCQkJKmNydGNfeSA9IDA7CiAJfSBlbHNlIHsKIAkJLyoKIAkJICogUmFu ZG9taXplIHRoZSBvbi1jcnRjIHBvc2l0aW9uIGFuZCBhbGxvdyB0aGUgcGxhbmUgdG8gZ28KQEAg LTEyMjksNiArMTI2NSw2MiBAQCBzdGF0aWMgdm9pZCByYW5kb21pemVfcGxhbmVfZGltZW5zaW9u cyhkcm1Nb2RlTW9kZUluZm8gKm1vZGUsCiAJCSpjcnRjX3ggPSAocmFuZCgpICUgbW9kZS0+aGRp c3BsYXkpIC0gKmNydGNfdyAvIDI7CiAJCSpjcnRjX3kgPSAocmFuZCgpICUgbW9kZS0+dmRpc3Bs YXkpIC0gKmNydGNfaCAvIDI7CiAJfQorCisJY29uZmlndXJlX3BsYW5lKHBsYW5lLCAqc3JjX3cs ICpzcmNfaCwgKnNyY194LCAqc3JjX3ksCisJCQkqY3J0Y193LCAqY3J0Y19oLCAqY3J0Y194LCAq Y3J0Y195LCBmYik7CisJcmV0ID0gaWd0X2Rpc3BsYXlfdHJ5X2NvbW1pdF9hdG9taWMoJmRhdGEt PmRpc3BsYXksCisJCQkJCSAgICBEUk1fTU9ERV9BVE9NSUNfVEVTVF9PTkxZIHwKKwkJCQkJICAg IERSTV9NT0RFX0FUT01JQ19BTExPV19NT0RFU0VULAorCQkJCQkgICAgTlVMTCk7CisJaWYgKCFy ZXQpCisJCXJldHVybjsKKworCS8qIENvb3JkaW5hdGVzIGFyZSBsb2dnZWQgaW4gdGhlIGR1bXBl ZCBkZWJ1ZyBsb2csIHNvIG9ubHkgcmVwb3J0IHcvaCBvbiBmYWlsdXJlIGhlcmUuICovCisJaWd0 X2Fzc2VydF9mKHJldCAhPSAtRU5PU1BDLCJGYWlsdXJlIGluIHRlc3RjYXNlLCBpbnZhbGlkIGNv b3JkaW5hdGVzIG9uIGEgJXV4JXUgZmJcbiIsIHdpZHRoLCBoZWlnaHQpOworCisJLyogTWFrZSBZ VVYgY29vcmRpbmF0ZXMgYSBtdWx0aXBsZSBvZiAyIGFuZCByZXRyeSB0aGUgbWF0aC4gKi8KKwlp ZiAoaXNfeXV2KSB7CisJCSpzcmNfeCAmPSB+MTsKKwkJKnNyY195ICY9IH4xOworCQkqc3JjX3cg Jj0gfjE7CisJCSpzcmNfaCAmPSB+MTsKKwkJLyogVG8gaGFuZGxlIDE6MSBzY2FsaW5nLCBjbGVh ciBjcnRjX3cvaCB0b28uICovCisJCSpjcnRjX3cgJj0gfjE7CisJCSpjcnRjX2ggJj0gfjE7CisK KwkJaWYgKCpjcnRjX3ggPCAwICYmICgqY3J0Y194ICYgMSkpCisJCQkoKmNydGNfeCkrKzsKKwkJ ZWxzZQorCQkJKmNydGNfeCAmPSB+MTsKKworCQkvKiBJZiBuZWdhdGl2ZSwgcm91bmQgdXAgdG8g MCBpbnN0ZWFkIG9mIGRvd24gKi8KKwkJaWYgKCpjcnRjX3kgPCAwICYmICgqY3J0Y195ICYgMSkp CisJCQkoKmNydGNfeSkrKzsKKwkJZWxzZQorCQkJKmNydGNfeSAmPSB+MTsKKworCQljb25maWd1 cmVfcGxhbmUocGxhbmUsICpzcmNfdywgKnNyY19oLCAqc3JjX3gsICpzcmNfeSwgKmNydGNfdywK KwkJCQkqY3J0Y19oLCAqY3J0Y194LCAqY3J0Y195LCBmYik7CisJCXJldCA9IGlndF9kaXNwbGF5 X3RyeV9jb21taXRfYXRvbWljKCZkYXRhLT5kaXNwbGF5LAorCQkJCQkJRFJNX01PREVfQVRPTUlD X1RFU1RfT05MWSB8CisJCQkJCQlEUk1fTU9ERV9BVE9NSUNfQUxMT1dfTU9ERVNFVCwKKwkJCQkJ CU5VTEwpOworCQlpZiAoIXJldCkKKwkJCXJldHVybjsKKwl9CisKKwlpZ3RfYXNzZXJ0KCFyZXQg fHwgYWxsb3dfc2NhbGluZyk7CisJaWd0X2luZm8oIlNjYWxpbmcgcmF0aW8gJWcgLyAlZyBmYWls ZWQsIHRyeWluZyB3aXRob3V0IHNjYWxpbmcuXG4iLAorCQkgICgoZG91YmxlKSAqY3J0Y193IC8g KnNyY193KSwgKChkb3VibGUpICpjcnRjX2ggLyAqc3JjX2gpKTsKKworCSpjcnRjX3cgPSAqc3Jj X3c7CisJKmNydGNfaCA9ICpzcmNfaDsKKworCWNvbmZpZ3VyZV9wbGFuZShwbGFuZSwgKnNyY193 LCAqc3JjX2gsICpzcmNfeCwgKnNyY195LCAqY3J0Y193LAorCQkJKmNydGNfaCwgKmNydGNfeCwg KmNydGNfeSwgZmIpOworCWlndF9kaXNwbGF5X2NvbW1pdF9hdG9taWMoJmRhdGEtPmRpc3BsYXks CisJCQkJICBEUk1fTU9ERV9BVE9NSUNfVEVTVF9PTkxZIHwKKwkJCQkgIERSTV9NT0RFX0FUT01J Q19BTExPV19NT0RFU0VULCBOVUxMKTsKIH0KIAogc3RhdGljIHZvaWQgYmxpdF9wbGFuZV9jYWly byhkYXRhX3QgKmRhdGEsIGNhaXJvX3N1cmZhY2VfdCAqcmVzdWx0LApAQCAtMTI4NywyMCArMTM3 OSw2IEBAIHN0YXRpYyB2b2lkIGJsaXRfcGxhbmVfY2Fpcm8oZGF0YV90ICpkYXRhLCBjYWlyb19z dXJmYWNlX3QgKnJlc3VsdCwKIAljYWlyb19kZXN0cm95KGNyKTsKIH0KIAotc3RhdGljIHZvaWQg Y29uZmlndXJlX3BsYW5lKGlndF9wbGFuZV90ICpwbGFuZSwgdWludDMyX3Qgc3JjX3csIHVpbnQz Ml90IHNyY19oLAotCQkJICAgIHVpbnQzMl90IHNyY194LCB1aW50MzJfdCBzcmNfeSwgdWludDMy X3QgY3J0Y193LAotCQkJICAgIHVpbnQzMl90IGNydGNfaCwgaW50MzJfdCBjcnRjX3gsIGludDMy X3QgY3J0Y195LAotCQkJICAgIHN0cnVjdCBpZ3RfZmIgKmZiKQotewotCWlndF9wbGFuZV9zZXRf ZmIocGxhbmUsIGZiKTsKLQotCWlndF9wbGFuZV9zZXRfcG9zaXRpb24ocGxhbmUsIGNydGNfeCwg Y3J0Y195KTsKLQlpZ3RfcGxhbmVfc2V0X3NpemUocGxhbmUsIGNydGNfdywgY3J0Y19oKTsKLQot CWlndF9mYl9zZXRfcG9zaXRpb24oZmIsIHBsYW5lLCBzcmNfeCwgc3JjX3kpOwotCWlndF9mYl9z ZXRfc2l6ZShmYiwgcGxhbmUsIHNyY193LCBzcmNfaCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHByZXBh cmVfcmFuZG9taXplZF9wbGFuZShkYXRhX3QgKmRhdGEsCiAJCQkJICAgICBkcm1Nb2RlTW9kZUlu Zm8gKm1vZGUsCiAJCQkJICAgICBpZ3RfcGxhbmVfdCAqcGxhbmUsCkBAIC0xMzIxLDUxICsxMzk5 LDQ5IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfcmFuZG9taXplZF9wbGFuZShkYXRhX3QgKmRhdGEs CiAJYm9vbCB0aWxlZDsKIAlpbnQgZmJfaWQ7CiAKLQlyYW5kb21pemVfcGxhbmVfZGltZW5zaW9u cyhtb2RlLCAmb3ZlcmxheV9mYl93LCAmb3ZlcmxheV9mYl9oLAotCQkJCSAgICZvdmVybGF5X3Ny Y193LCAmb3ZlcmxheV9zcmNfaCwKLQkJCQkgICAmb3ZlcmxheV9zcmNfeCwgJm92ZXJsYXlfc3Jj X3ksCi0JCQkJICAgJm92ZXJsYXlfY3J0Y193LCAmb3ZlcmxheV9jcnRjX2gsCi0JCQkJICAgJm92 ZXJsYXlfY3J0Y194LCAmb3ZlcmxheV9jcnRjX3ksCi0JCQkJICAgYWxsb3dfc2NhbGluZyk7CisJ cmFuZG9taXplX3BsYW5lX3NldHVwKGRhdGEsIHBsYW5lLCBtb2RlLCAmb3ZlcmxheV9mYl93LCAm b3ZlcmxheV9mYl9oLAorCQkJICAgICAgJmZvcm1hdCwgJm1vZGlmaWVyLCBhbGxvd195dXYpOwog Ci0JaWd0X2RlYnVnKCJQbGFuZSAlZDogZnJhbWVidWZmZXIgc2l6ZSAlZHglZFxuIiwgaW5kZXgs Ci0JCSAgb3ZlcmxheV9mYl93LCBvdmVybGF5X2ZiX2gpOwotCWlndF9kZWJ1ZygiUGxhbmUgJWQ6 IG9uLWNydGMgc2l6ZSAlZHglZFxuIiwgaW5kZXgsCi0JCSAgb3ZlcmxheV9jcnRjX3csIG92ZXJs YXlfY3J0Y19oKTsKLQlpZ3RfZGVidWcoIlBsYW5lICVkOiBvbi1jcnRjIHBvc2l0aW9uICVkeCVk XG4iLCBpbmRleCwKLQkJICBvdmVybGF5X2NydGNfeCwgb3ZlcmxheV9jcnRjX3kpOwotCWlndF9k ZWJ1ZygiUGxhbmUgJWQ6IGluLWZyYW1lYnVmZmVyIHNpemUgJWR4JWRcbiIsIGluZGV4LAotCQkg IG92ZXJsYXlfc3JjX3csIG92ZXJsYXlfc3JjX2gpOwotCWlndF9kZWJ1ZygiUGxhbmUgJWQ6IGlu LWZyYW1lYnVmZmVyIHBvc2l0aW9uICVkeCVkXG4iLCBpbmRleCwKLQkJICBvdmVybGF5X3NyY194 LCBvdmVybGF5X3NyY195KTsKKwl0aWxlZCA9IChtb2RpZmllciAhPSBMT0NBTF9EUk1fRk9STUFU X01PRF9OT05FKTsKKwlpZ3RfZGVidWcoIlBsYW5lICVkOiBmcmFtZWJ1ZmZlciBzaXplICVkeCVk ICVzIGZvcm1hdCAoJXMpXG4iLAorCQkgIGluZGV4LCBvdmVybGF5X2ZiX3csIG92ZXJsYXlfZmJf aCwKKwkJICBpZ3RfZm9ybWF0X3N0cihmb3JtYXQpLCB0aWxlZCA/ICJ0aWxlZCIgOiAibGluZWFy Iik7CiAKIAkvKiBHZXQgYSBwYXR0ZXJuIGZyYW1lYnVmZmVyIGZvciB0aGUgb3ZlcmxheSBwbGFu ZS4gKi8KIAlmYl9pZCA9IGNoYW1lbGl1bV9nZXRfcGF0dGVybl9mYihkYXRhLCBvdmVybGF5X2Zi X3csIG92ZXJsYXlfZmJfaCwKIAkJCQkJIERSTV9GT1JNQVRfWFJHQjg4ODgsIDMyLCAmcGF0dGVy bl9mYik7CiAJaWd0X2Fzc2VydChmYl9pZCA+IDApOwogCi0JcmFuZG9taXplX3BsYW5lX2Zvcm1h dF9zdHJpZGUocGxhbmUsIG92ZXJsYXlfZmJfdywgb3ZlcmxheV9mYl9oLAotCQkJCSAgICAgICZm b3JtYXQsICZtb2RpZmllciwgJnN0cmlkZSwgYWxsb3dfeXV2KTsKKwlyYW5kb21pemVfcGxhbmVf c3RyaWRlKGRhdGEsIG92ZXJsYXlfZmJfdywgb3ZlcmxheV9mYl9oLAorCQkJICAgICAgIGZvcm1h dCwgbW9kaWZpZXIsICZzdHJpZGUpOwogCi0JdGlsZWQgPSAobW9kaWZpZXIgIT0gTE9DQUxfRFJN X0ZPUk1BVF9NT0RfTk9ORSk7Ci0KLQlpZ3RfZGVidWcoIlBsYW5lICVkOiAlcyBmb3JtYXQgKCVz KSB3aXRoIHN0cmlkZSAlbGRcbiIsIGluZGV4LAotCQkgIGlndF9mb3JtYXRfc3RyKGZvcm1hdCks IHRpbGVkID8gInRpbGVkIiA6ICJsaW5lYXIiLCBzdHJpZGUpOworCWlndF9kZWJ1ZygiUGxhbmUg JWQ6IHN0cmlkZSAlbGRcbiIsIGluZGV4LCBzdHJpZGUpOwogCiAJZmJfaWQgPSBpZ3RfZmJfY29u dmVydF93aXRoX3N0cmlkZShvdmVybGF5X2ZiLCAmcGF0dGVybl9mYiwgZm9ybWF0LAogCQkJCQkg ICBtb2RpZmllciwgc3RyaWRlKTsKIAlpZ3RfYXNzZXJ0KGZiX2lkID4gMCk7CiAKKwlyYW5kb21p emVfcGxhbmVfY29vcmRpbmF0ZXMoZGF0YSwgcGxhbmUsIG1vZGUsIG92ZXJsYXlfZmIsCisJCQkJ ICAgICZvdmVybGF5X3NyY193LCAmb3ZlcmxheV9zcmNfaCwKKwkJCQkgICAgJm92ZXJsYXlfc3Jj X3gsICZvdmVybGF5X3NyY195LAorCQkJCSAgICAmb3ZlcmxheV9jcnRjX3csICZvdmVybGF5X2Ny dGNfaCwKKwkJCQkgICAgJm92ZXJsYXlfY3J0Y194LCAmb3ZlcmxheV9jcnRjX3ksCisJCQkJICAg IGFsbG93X3NjYWxpbmcpOworCisJaWd0X2RlYnVnKCJQbGFuZSAlZDogaW4tZnJhbWVidWZmZXIg c2l6ZSAlZHglZFxuIiwgaW5kZXgsCisJCSAgb3ZlcmxheV9zcmNfdywgb3ZlcmxheV9zcmNfaCk7 CisJaWd0X2RlYnVnKCJQbGFuZSAlZDogaW4tZnJhbWVidWZmZXIgcG9zaXRpb24gJWR4JWRcbiIs IGluZGV4LAorCQkgIG92ZXJsYXlfc3JjX3gsIG92ZXJsYXlfc3JjX3kpOworCWlndF9kZWJ1Zygi UGxhbmUgJWQ6IG9uLWNydGMgc2l6ZSAlZHglZFxuIiwgaW5kZXgsCisJCSAgb3ZlcmxheV9jcnRj X3csIG92ZXJsYXlfY3J0Y19oKTsKKwlpZ3RfZGVidWcoIlBsYW5lICVkOiBvbi1jcnRjIHBvc2l0 aW9uICVkeCVkXG4iLCBpbmRleCwKKwkJICBvdmVybGF5X2NydGNfeCwgb3ZlcmxheV9jcnRjX3kp OworCiAJYmxpdF9wbGFuZV9jYWlybyhkYXRhLCByZXN1bHRfc3VyZmFjZSwgb3ZlcmxheV9zcmNf dywgb3ZlcmxheV9zcmNfaCwKIAkJCSBvdmVybGF5X3NyY194LCBvdmVybGF5X3NyY195LAogCQkJ IG92ZXJsYXlfY3J0Y193LCBvdmVybGF5X2NydGNfaCwKIAkJCSBvdmVybGF5X2NydGNfeCwgb3Zl cmxheV9jcnRjX3ksICZwYXR0ZXJuX2ZiKTsKIAotCWNvbmZpZ3VyZV9wbGFuZShwbGFuZSwgb3Zl cmxheV9zcmNfdywgb3ZlcmxheV9zcmNfaCwKLQkJCW92ZXJsYXlfc3JjX3gsIG92ZXJsYXlfc3Jj X3ksCi0JCQlvdmVybGF5X2NydGNfdywgb3ZlcmxheV9jcnRjX2gsCi0JCQlvdmVybGF5X2NydGNf eCwgb3ZlcmxheV9jcnRjX3ksIG92ZXJsYXlfZmIpOwotCiAJLyogUmVtb3ZlIHRoZSBvcmlnaW5h bCBwYXR0ZXJuIGZyYW1lYnVmZmVyLiAqLwogCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAm cGF0dGVybl9mYik7CiB9CkBAIC0xNDQxLDcgKzE1MTcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Rp c3BsYXlfcGxhbmVzX3JhbmRvbShkYXRhX3QgKmRhdGEsCiAJCWlndF9vdXRwdXRfY291bnRfcGxh bmVfdHlwZShvdXRwdXQsIERSTV9QTEFORV9UWVBFX09WRVJMQVkpOwogCiAJLyogTGltaXQgdGhl IG51bWJlciBvZiBwbGFuZXMgdG8gYSByZWFzb25hYmxlIHNjZW5lLiAqLwotCW92ZXJsYXlfcGxh bmVzX21heCA9IG1heChvdmVybGF5X3BsYW5lc19tYXgsIDQpOworCW92ZXJsYXlfcGxhbmVzX21h eCA9IG1pbihvdmVybGF5X3BsYW5lc19tYXgsIDQpOwogCiAJb3ZlcmxheV9wbGFuZXNfY291bnQg PSAocmFuZCgpICUgb3ZlcmxheV9wbGFuZXNfbWF4KSArIDE7CiAJaWd0X2RlYnVnKCJVc2luZyAl ZCBvdmVybGF5IHBsYW5lc1xuIiwgb3ZlcmxheV9wbGFuZXNfY291bnQpOwpAQCAtMTQ5NCwxNyAr MTU3MCw4IEBAIHN0YXRpYyB2b2lkIHRlc3RfZGlzcGxheV9wbGFuZXNfcmFuZG9tKGRhdGFfdCAq ZGF0YSwKIAkJY2hhbWVsaXVtX2Rlc3Ryb3lfZnJhbWVfZHVtcChkdW1wKTsKIAl9CiAKLQlmb3Ig KGkgPSAwOyBpIDwgb3ZlcmxheV9wbGFuZXNfY291bnQ7IGkrKykgewotCQlzdHJ1Y3QgaWd0X2Zi ICpvdmVybGF5X2ZiID0gJm92ZXJsYXlfZmJzW2ldOwotCQlpZ3RfcGxhbmVfdCAqcGxhbmU7Ci0K LQkJcGxhbmUgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlX2luZGV4KG91dHB1dCwKLQkJCQkJ CQlEUk1fUExBTkVfVFlQRV9PVkVSTEFZLAotCQkJCQkJCWkpOwotCQlpZ3RfYXNzZXJ0KHBsYW5l KTsKLQotCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgb3ZlcmxheV9mYik7Ci0JfQorCWZv ciAoaSA9IDA7IGkgPCBvdmVybGF5X3BsYW5lc19jb3VudDsgaSsrKQorCQlpZ3RfcmVtb3ZlX2Zi KGRhdGEtPmRybV9mZCwgJm92ZXJsYXlfZmJzW2ldKTsKIAogCWZyZWUob3ZlcmxheV9mYnMpOwog Ci0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==