From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keith Packard Subject: [PATCH i-g-t 2/2] tests/kms_lease: add tests for lease ioctls [v2] Date: Tue, 10 Oct 2017 17:53:17 -0700 Message-ID: <20171011005317.9738-3-keithp@keithp.com> References: <20171011005317.9738-1-keithp@keithp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171011005317.9738-1-keithp@keithp.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Cc: Keith Packard List-Id: dri-devel@lists.freedesktop.org VmFsaWRhdGUgdGhhdCB0aGUgbGVhc2luZyBBUEkgY3JlYXRlcyBsZWFzZXMgdGhhdCBhbGxvdyBh Y2Nlc3MgdG8gYQpzdWJzZXQgb2YgdGhlIGF2YWlsYWJsZSByZXNvdXJjZXMgYW5kIHRoYXQgbGVh c2UgcmV2b2NhdGlvbiB3b3Jrcy4KCnYyOiBmcm9tIERhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhh dC5jb20+CgogKiBVcGRhdGUgaW9jdGwgbnVtYmVycyB0byBsYXRlc3QgcHJvcG9zZWQgdmFsdWVz LgogKiBGaXggY29tbWl0IG1lc3NhZ2UKICogQWRkIHRlc3RzIGZvciBnZXRfbGVhc2UgYW5kIGxp c3RfbGVzc2VlcwoKU2lnbmVkLW9mZi1ieTogS2VpdGggUGFja2FyZCA8a2VpdGhwQGtlaXRocC5j b20+Ci0tLQogdGVzdHMvTWFrZWZpbGUuc291cmNlcyB8ICAgMSArCiB0ZXN0cy9rbXNfbGVhc2Uu YyAgICAgIHwgNTk3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIHRlc3RzL21lc29uLmJ1aWxkICAgICAgfCAgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCA1 OTkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2ttc19sZWFzZS5jCgpk aWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJj ZXMKaW5kZXggOWRjMWQyNTAuLjFjYTZlMTA0IDEwMDY0NAotLS0gYS90ZXN0cy9NYWtlZmlsZS5z b3VyY2VzCisrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKQEAgLTE5Myw2ICsxOTMsNyBAQCBU RVNUU19wcm9ncyA9IFwKIAlrbXNfZnJvbnRidWZmZXJfdHJhY2tpbmcgXAogCWttc19oZG1pX2lu amVjdCBcCiAJa21zX2ludmFsaWRfZG90Y2xvY2sgXAorCWttc19sZWFzZSBcCiAJa21zX2xlZ2Fj eV9jb2xvcmtleSBcCiAJa21zX21tYXBfd3JpdGVfY3JjIFwKIAlrbXNfbW1pb192c19jc19mbGlw IFwKZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19sZWFzZS5jIGIvdGVzdHMva21zX2xlYXNlLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjQ5MjI2MTYzCi0tLSAvZGV2L251bGwK KysrIGIvdGVzdHMva21zX2xlYXNlLmMKQEAgLTAsMCArMSw1OTcgQEAKKy8qCisgKiBDb3B5cmln aHQgwqkgMjAxNyBLZWl0aCBQYWNrYXJkCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkg b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUg IlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0 aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwg Y29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAq IGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29u cyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0 IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0 IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cisg KiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMg UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP UgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF UyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JT IE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9S IE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4g VEhFIFNPRlRXQVJFLgorICovCisKKy8qKiBAZmlsZSBrbXNfbGVhc2UuYworICoKKyAqIFRoaXMg aXMgYSB0ZXN0IG9mIERSTSBsZWFzZXMKKyAqLworCisKKyNpbmNsdWRlICJpZ3QuaCIKKyNpbmNs dWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgor I2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNpbmNsdWRlIDxlcnJu by5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDxzeXMvcG9sbC5oPgorI2luY2x1ZGUg PHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNpbmNsdWRlIDxzeXMvd2FpdC5o PgorCisjaW5jbHVkZSA8ZHJtLmg+CisKK0lHVF9URVNUX0RFU0NSSVBUSU9OKCJUZXN0IG9mIENy ZWF0ZUxlYXNlLiIpOworCitzdHJ1Y3QgbG9jYWxfZHJtX21vZGVfY3JlYXRlX2xlYXNlIHsKKyAg ICAgICAgLyoqIFBvaW50ZXIgdG8gYXJyYXkgb2Ygb2JqZWN0IGlkcyAoX191MzIpICovCisgICAg ICAgIF9fdTY0IG9iamVjdF9pZHM7CisgICAgICAgIC8qKiBOdW1iZXIgb2Ygb2JqZWN0IGlkcyAq LworICAgICAgICBfX3UzMiBvYmplY3RfY291bnQ7CisgICAgICAgIC8qKiBmbGFncyBmb3IgbmV3 IEZEIChPX0NMT0VYRUMsIGV0YykgKi8KKyAgICAgICAgX191MzIgZmxhZ3M7CisKKyAgICAgICAg LyoqIFJldHVybjogdW5pcXVlIGlkZW50aWZpZXIgZm9yIGxlc3NlZS4gKi8KKyAgICAgICAgX191 MzIgbGVzc2VlX2lkOworICAgICAgICAvKiogUmV0dXJuOiBmaWxlIGRlc2NyaXB0b3IgdG8gbmV3 IGRybV9tYXN0ZXIgZmlsZSAqLworICAgICAgICBfX3UzMiBmZDsKK307CisKK3N0cnVjdCBsb2Nh bF9kcm1fbW9kZV9saXN0X2xlc3NlZXMgeworICAgICAgICAvKiogTnVtYmVyIG9mIGxlc3NlZXMu CisgICAgICAgICAqIE9uIGlucHV0LCBwcm92aWRlcyBsZW5ndGggb2YgdGhlIGFycmF5LgorICAg ICAgICAgKiBPbiBvdXRwdXQsIHByb3ZpZGVzIHRvdGFsIG51bWJlci4gTm8KKyAgICAgICAgICog bW9yZSB0aGFuIHRoZSBpbnB1dCBudW1iZXIgd2lsbCBiZSB3cml0dGVuCisgICAgICAgICAqIGJh Y2ssIHNvIHR3byBjYWxscyBjYW4gYmUgdXNlZCB0byBnZXQKKyAgICAgICAgICogdGhlIHNpemUg YW5kIHRoZW4gdGhlIGRhdGEuCisgICAgICAgICAqLworICAgICAgICBfX3UzMiBjb3VudF9sZXNz ZWVzOworICAgICAgICBfX3UzMiBwYWQ7CisKKyAgICAgICAgLyoqIFBvaW50ZXIgdG8gbGVzc2Vl cy4KKyAgICAgICAgICogcG9pbnRlciB0byBfX3U2NCBhcnJheSBvZiBsZXNzZWUgaWRzCisgICAg ICAgICAqLworICAgICAgICBfX3U2NCBsZXNzZWVzX3B0cjsKK307CisKK3N0cnVjdCBsb2NhbF9k cm1fbW9kZV9nZXRfbGVhc2UgeworICAgICAgICAvKiogTnVtYmVyIG9mIGxlYXNlZCBvYmplY3Rz LgorICAgICAgICAgKiBPbiBpbnB1dCwgcHJvdmlkZXMgbGVuZ3RoIG9mIHRoZSBhcnJheS4KKyAg ICAgICAgICogT24gb3V0cHV0LCBwcm92aWRlcyB0b3RhbCBudW1iZXIuIE5vCisgICAgICAgICAq IG1vcmUgdGhhbiB0aGUgaW5wdXQgbnVtYmVyIHdpbGwgYmUgd3JpdHRlbgorICAgICAgICAgKiBi YWNrLCBzbyB0d28gY2FsbHMgY2FuIGJlIHVzZWQgdG8gZ2V0CisgICAgICAgICAqIHRoZSBzaXpl IGFuZCB0aGVuIHRoZSBkYXRhLgorICAgICAgICAgKi8KKyAgICAgICAgX191MzIgY291bnRfb2Jq ZWN0czsKKyAgICAgICAgX191MzIgcGFkOworCisgICAgICAgIC8qKiBQb2ludGVyIHRvIG9iamVj dHMuCisgICAgICAgICAqIHBvaW50ZXIgdG8gX191MzIgYXJyYXkgb2Ygb2JqZWN0IGlkcworICAg ICAgICAgKi8KKyAgICAgICAgX191NjQgb2JqZWN0c19wdHI7Cit9OworCisvKioKKyAqIFJldm9r ZSBsZWFzZQorICovCitzdHJ1Y3QgbG9jYWxfZHJtX21vZGVfcmV2b2tlX2xlYXNlIHsKKyAgICAg ICAgLyoqIFVuaXF1ZSBJRCBvZiBsZXNzZWUKKyAgICAgICAgICovCisgICAgICAgIF9fdTMyIGxl c3NlZV9pZDsKK307CisKKworI2RlZmluZSBMT0NBTF9EUk1fSU9DVExfTU9ERV9DUkVBVEVfTEVB U0UgICAgIERSTV9JT1dSKDB4QzYsIHN0cnVjdCBsb2NhbF9kcm1fbW9kZV9jcmVhdGVfbGVhc2Up CisjZGVmaW5lIExPQ0FMX0RSTV9JT0NUTF9NT0RFX0xJU1RfTEVTU0VFUyAgICAgRFJNX0lPV1Io MHhDNywgc3RydWN0IGxvY2FsX2RybV9tb2RlX2xpc3RfbGVzc2VlcykKKyNkZWZpbmUgTE9DQUxf RFJNX0lPQ1RMX01PREVfR0VUX0xFQVNFICAgICAgICBEUk1fSU9XUigweEM4LCBzdHJ1Y3QgbG9j YWxfZHJtX21vZGVfZ2V0X2xlYXNlKQorI2RlZmluZSBMT0NBTF9EUk1fSU9DVExfTU9ERV9SRVZP S0VfTEVBU0UgICAgIERSTV9JT1dSKDB4QzksIHN0cnVjdCBsb2NhbF9kcm1fbW9kZV9yZXZva2Vf bGVhc2UpCisKK3R5cGVkZWYgc3RydWN0IHsKKwlpbnQgZmQ7CisJdWludDMyX3QgbGVzc2VlX2lk OworCWlndF9kaXNwbGF5X3QgZGlzcGxheTsKKwlzdHJ1Y3QgaWd0X2ZiIHByaW1hcnlfZmI7CisJ aWd0X291dHB1dF90ICpvdXRwdXQ7CisJZHJtTW9kZU1vZGVJbmZvICptb2RlOworfSBsZWFzZV90 OworCit0eXBlZGVmIHN0cnVjdCB7CisJbGVhc2VfdCBtYXN0ZXI7CisJZW51bSBwaXBlIHBpcGU7 CisJdWludDMyX3QgY3J0Y19pZDsKKwl1aW50MzJfdCBjb25uZWN0b3JfaWQ7Cit9IGRhdGFfdDsK Kworc3RhdGljIHVpbnQzMl90IHBpcGVfdG9fY3J0Y19pZChpZ3RfZGlzcGxheV90ICpkaXNwbGF5 LCBlbnVtIHBpcGUgcGlwZSkKK3sKKwlyZXR1cm4gZGlzcGxheS0+cGlwZXNbcGlwZV0uY3J0Y19p ZDsKK30KKworc3RhdGljIGVudW0gcGlwZSBjcnRjX2lkX3RvX3BpcGUoaWd0X2Rpc3BsYXlfdCAq ZGlzcGxheSwgdWludDMyX3QgY3J0Y19pZCkKK3sKKwllbnVtIHBpcGUgcGlwZTsKKworCWZvciAo cGlwZSA9IDA7IHBpcGUgPCBkaXNwbGF5LT5uX3BpcGVzOyBwaXBlKyspCisJCWlmIChkaXNwbGF5 LT5waXBlc1twaXBlXS5jcnRjX2lkID09IGNydGNfaWQpCisJCQlyZXR1cm4gcGlwZTsKKwlyZXR1 cm4gLTE7Cit9CisKK3N0YXRpYyBpZ3Rfb3V0cHV0X3QgKmNvbm5lY3Rvcl9pZF90b19vdXRwdXQo aWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgdWludDMyX3QgY29ubmVjdG9yX2lkKQoreworCWRybU1v ZGVDb25uZWN0b3IJCWNvbm5lY3RvcjsKKworCWNvbm5lY3Rvci5jb25uZWN0b3JfaWQgPSBjb25u ZWN0b3JfaWQ7CisJcmV0dXJuIGlndF9vdXRwdXRfZnJvbV9jb25uZWN0b3IoZGlzcGxheSwgJmNv bm5lY3Rvcik7Cit9CisKK3N0YXRpYyBpbnQgcHJlcGFyZV9jcnRjKGxlYXNlX3QgKmxlYXNlLCB1 aW50MzJfdCBjb25uZWN0b3JfaWQsIHVpbnQzMl90IGNydGNfaWQpCit7CisJZHJtTW9kZU1vZGVJ bmZvICptb2RlOworCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmbGVhc2UtPmRpc3BsYXk7CisJ aWd0X291dHB1dF90ICpvdXRwdXQgPSBjb25uZWN0b3JfaWRfdG9fb3V0cHV0KGRpc3BsYXksIGNv bm5lY3Rvcl9pZCk7CisJZW51bSBwaXBlIHBpcGUgPSBjcnRjX2lkX3RvX3BpcGUoZGlzcGxheSwg Y3J0Y19pZCk7CisJaWd0X3BsYW5lX3QgKnByaW1hcnk7CisJaW50IHJldDsKKworCWlmICghb3V0 cHV0KQorCQlyZXR1cm4gLUVOT0VOVDsKKworCS8qIHNlbGVjdCB0aGUgcGlwZSB3ZSB3YW50IHRv IHVzZSAqLworCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKKworCS8qIGNyZWF0 ZSBhbmQgc2V0IHRoZSBwcmltYXJ5IHBsYW5lIGZiICovCisJbW9kZSA9IGlndF9vdXRwdXRfZ2V0 X21vZGUob3V0cHV0KTsKKwlpZ3RfY3JlYXRlX2NvbG9yX2ZiKGxlYXNlLT5mZCwgbW9kZS0+aGRp c3BsYXksIG1vZGUtPnZkaXNwbGF5LAorCQkJICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsCisJCQkg ICAgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKKwkJCSAgICAwLjAsIDAuMCwgMC4wLAorCQkJ ICAgICZsZWFzZS0+cHJpbWFyeV9mYik7CisKKwkvKiBDaGVjayB0byBzZWUgaWYgdGhlIGNydGMg c2VsZWN0ZWQgaXMgdmFsaWQgKi8KKwlpZiAoIWlndF9vdXRwdXRfZ2V0X2RyaXZpbmdfcGlwZShv dXRwdXQpKQorCQlyZXR1cm4gLUVOT0VOVDsKKworCXByaW1hcnkgPSBpZ3Rfb3V0cHV0X2dldF9w bGFuZV90eXBlKG91dHB1dCwgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7CisJaWd0X3BsYW5lX3Nl dF9mYihwcmltYXJ5LCAmbGVhc2UtPnByaW1hcnlfZmIpOworCisJcmV0ID0gaWd0X2Rpc3BsYXlf dHJ5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0xFR0FDWSk7CisKKwlpZiAocmV0KQorCQlyZXR1 cm4gcmV0OworCisJaWd0X3dhaXRfZm9yX3ZibGFuayhsZWFzZS0+ZmQsIHBpcGUpOworCisJbGVh c2UtPm91dHB1dCA9IG91dHB1dDsKKwlsZWFzZS0+bW9kZSA9IG1vZGU7CisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyB2b2lkIGNsZWFudXBfY3J0YyhsZWFzZV90ICpsZWFzZSwgaWd0X291dHB1dF90 ICpvdXRwdXQpCit7CisJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZsZWFzZS0+ZGlzcGxheTsK KwlpZ3RfcGxhbmVfdCAqcHJpbWFyeTsKKworCWlndF9yZW1vdmVfZmIobGVhc2UtPmZkLCAmbGVh c2UtPnByaW1hcnlfZmIpOworCisJcHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUo b3V0cHV0LCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKKwlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1h cnksIE5VTEwpOworCisJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIFBJUEVfQU5ZKTsKKwlp Z3RfZGlzcGxheV9jb21taXQoZGlzcGxheSk7Cit9CisKK3N0YXRpYyBpbnQgY3JlYXRlX2xlYXNl KGludCBmZCwgc3RydWN0IGxvY2FsX2RybV9tb2RlX2NyZWF0ZV9sZWFzZSAqbWNsKQoreworCWlu dCBlcnIgPSAwOworCisJaWYgKGlndF9pb2N0bChmZCwgTE9DQUxfRFJNX0lPQ1RMX01PREVfQ1JF QVRFX0xFQVNFLCBtY2wpKQorCQllcnIgPSAtZXJybm87CisJcmV0dXJuIGVycjsKK30KKworc3Rh dGljIGludCByZXZva2VfbGVhc2UoaW50IGZkLCBzdHJ1Y3QgbG9jYWxfZHJtX21vZGVfcmV2b2tl X2xlYXNlICptcmwpCit7CisJaW50IGVyciA9IDA7CisKKwlpZiAoaWd0X2lvY3RsKGZkLCBMT0NB TF9EUk1fSU9DVExfTU9ERV9SRVZPS0VfTEVBU0UsIG1ybCkpCisJCWVyciA9IC1lcnJubzsKKwly ZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IGxpc3RfbGVzc2VlcyhpbnQgZmQsIHN0cnVjdCBs b2NhbF9kcm1fbW9kZV9saXN0X2xlc3NlZXMgKm1sbCkKK3sKKwlpbnQgZXJyID0gMDsKKworCWlm IChpZ3RfaW9jdGwoZmQsIExPQ0FMX0RSTV9JT0NUTF9NT0RFX0xJU1RfTEVTU0VFUywgbWxsKSkK KwkJZXJyID0gLWVycm5vOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgZ2V0X2xlYXNl KGludCBmZCwgc3RydWN0IGxvY2FsX2RybV9tb2RlX2dldF9sZWFzZSAqbWdsKQoreworCWludCBl cnIgPSAwOworCisJaWYgKGlndF9pb2N0bChmZCwgTE9DQUxfRFJNX0lPQ1RMX01PREVfR0VUX0xF QVNFLCBtZ2wpKQorCQllcnIgPSAtZXJybm87CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGlu dCBtYWtlX2xlYXNlKGRhdGFfdCAqZGF0YSwgbGVhc2VfdCAqbGVhc2UpCit7CisJdWludDMyX3Qg b2JqZWN0X2lkc1szXTsKKwlzdHJ1Y3QgbG9jYWxfZHJtX21vZGVfY3JlYXRlX2xlYXNlIG1jbDsK KwlpbnQgcmV0OworCisJbWNsLm9iamVjdF9pZHMgPSAodWludDY0X3QpICh1aW50cHRyX3QpICZv YmplY3RfaWRzWzBdOworCW1jbC5vYmplY3RfY291bnQgPSAwOworCW1jbC5mbGFncyA9IDA7CisK KwlvYmplY3RfaWRzW21jbC5vYmplY3RfY291bnQrK10gPSBkYXRhLT5jb25uZWN0b3JfaWQ7CisJ b2JqZWN0X2lkc1ttY2wub2JqZWN0X2NvdW50KytdID0gZGF0YS0+Y3J0Y19pZDsKKworCXJldCA9 IGNyZWF0ZV9sZWFzZShkYXRhLT5tYXN0ZXIuZmQsICZtY2wpOworCisJaWYgKHJldCkKKwkJcmV0 dXJuIHJldDsKKworCWxlYXNlLT5mZCA9IG1jbC5mZDsKKwlsZWFzZS0+bGVzc2VlX2lkID0gbWNs Lmxlc3NlZV9pZDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgdGVybWluYXRlX2xlYXNl KGxlYXNlX3QgKmxlYXNlKQoreworCWNsb3NlKGxlYXNlLT5mZCk7Cit9CisKK3N0YXRpYyBpbnQg cGFpbnRfZmIoaW50IGRybV9mZCwgc3RydWN0IGlndF9mYiAqZmIsIGNvbnN0IGNoYXIgKnRlc3Rf bmFtZSwKKwkJICAgIGNvbnN0IGNoYXIgKm1vZGVfZm9ybWF0X3N0ciwgY29uc3QgY2hhciAqY29u bmVjdG9yX3N0ciwgY29uc3QgY2hhciAqcGlwZV9zdHIpCit7CisJY2Fpcm9fdCAqY3I7CisKKwlj ciA9IGlndF9nZXRfY2Fpcm9fY3R4KGRybV9mZCwgZmIpOworCisJaWd0X3BhaW50X2NvbG9yX2dy YWRpZW50KGNyLCAwLCAwLCBmYi0+d2lkdGgsIGZiLT5oZWlnaHQsIDEsIDEsIDEpOworCWlndF9w YWludF90ZXN0X3BhdHRlcm4oY3IsIGZiLT53aWR0aCwgZmItPmhlaWdodCk7CisKKwljYWlyb19t b3ZlX3RvKGNyLCBmYi0+d2lkdGggLyAyLCBmYi0+aGVpZ2h0IC8gMik7CisJY2Fpcm9fc2V0X2Zv bnRfc2l6ZShjciwgMzYpOworCWlndF9jYWlyb19wcmludGZfbGluZShjciwgYWxpZ25faGNlbnRl ciwgMTAsICIlcyIsIHRlc3RfbmFtZSk7CisJaWd0X2NhaXJvX3ByaW50Zl9saW5lKGNyLCBhbGln bl9oY2VudGVyLCAxMCwgIiVzIiwgbW9kZV9mb3JtYXRfc3RyKTsKKwlpZ3RfY2Fpcm9fcHJpbnRm X2xpbmUoY3IsIGFsaWduX2hjZW50ZXIsIDEwLCAiJXMiLCBjb25uZWN0b3Jfc3RyKTsKKwlpZ3Rf Y2Fpcm9fcHJpbnRmX2xpbmUoY3IsIGFsaWduX2hjZW50ZXIsIDEwLCAiJXMiLCBwaXBlX3N0cik7 CisKKwljYWlyb19kZXN0cm95KGNyKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBz aW1wbGVfbGVhc2UoZGF0YV90ICpkYXRhKQoreworCWxlYXNlX3QgbGVhc2U7CisKKwkvKiBDcmVh dGUgYSB2YWxpZCBsZWFzZSAqLworCWlndF9hc3NlcnRfZXEobWFrZV9sZWFzZShkYXRhLCAmbGVh c2UpLCAwKTsKKworCWlndF9kaXNwbGF5X2luaXQoJmxlYXNlLmRpc3BsYXksIGxlYXNlLmZkKTsK KworCS8qIFNldCBhIG1vZGUgb24gdGhlIGxlYXNlZCBvdXRwdXQgKi8KKwlpZ3RfYXNzZXJ0X2Vx KDAsIHByZXBhcmVfY3J0YygmbGVhc2UsIGRhdGEtPmNvbm5lY3Rvcl9pZCwgZGF0YS0+Y3J0Y19p ZCkpOworCisJLyogUGFpbnQgc29tZXRoaW5nIGF0dHJhY3RpdmUgKi8KKwlwYWludF9mYihsZWFz ZS5mZCwgJmxlYXNlLnByaW1hcnlfZmIsICJzaW1wbGVfbGVhc2UiLAorCQkgbGVhc2UubW9kZS0+ bmFtZSwgaWd0X291dHB1dF9uYW1lKGxlYXNlLm91dHB1dCksIGttc3Rlc3RfcGlwZV9uYW1lKGRh dGEtPnBpcGUpKTsKKwlzbGVlcCgzKTsKKwljbGVhbnVwX2NydGMoJmxlYXNlLAorCQkgICAgIGNv bm5lY3Rvcl9pZF90b19vdXRwdXQoJmxlYXNlLmRpc3BsYXksIGRhdGEtPmNvbm5lY3Rvcl9pZCkp OworCisJdGVybWluYXRlX2xlYXNlKCZsZWFzZSk7Cit9CisKKy8qIFRlc3QgbGlzdGluZyBsZXNz ZWVzICovCitzdGF0aWMgdm9pZCBsZXNzZWVfbGlzdChkYXRhX3QgKmRhdGEpCit7CisJbGVhc2Vf dCBsZWFzZTsKKwlzdHJ1Y3QgbG9jYWxfZHJtX21vZGVfbGlzdF9sZXNzZWVzIG1sbDsKKwl1aW50 MzJfdCBsZXNzZWVzWzFdOworCisJLyogQ3JlYXRlIGEgdmFsaWQgbGVhc2UgKi8KKwlpZ3RfYXNz ZXJ0X2VxKG1ha2VfbGVhc2UoZGF0YSwgJmxlYXNlKSwgMCk7CisKKwkvKiBHZXQgdGhlIG51bWJl ciBvZiBsZXNzZWVzICovCisJbWxsLmNvdW50X2xlc3NlZXMgPSAwOworCW1sbC5sZXNzZWVzX3B0 ciA9IDA7CisJaWd0X2Fzc2VydF9lcShsaXN0X2xlc3NlZXMoZGF0YS0+bWFzdGVyLmZkLCAmbWxs KSwgMCk7CisKKwkvKiBNYWtlIHN1cmUgdGhlcmUncyBhIHNpbmdsZSBsZXNzZWUgKi8KKwlpZ3Rf YXNzZXJ0X2VxKG1sbC5jb3VudF9sZXNzZWVzLCAxKTsKKworCW1sbC5sZXNzZWVzX3B0ciA9ICh1 aW50NjRfdCkgKHVpbnRwdHJfdCkgJmxlc3NlZXNbMF07CisKKwlpZ3RfYXNzZXJ0X2VxKGxpc3Rf bGVzc2VlcyhkYXRhLT5tYXN0ZXIuZmQsICZtbGwpLCAwKTsKKworCS8qIE1ha2Ugc3VyZSB0aGVy ZSdzIGEgc2luZ2xlIGxlc3NlZSAqLworCWlndF9hc3NlcnRfZXEobWxsLmNvdW50X2xlc3NlZXMs IDEpOworCisJLyogTWFrZSBzdXJlIHRoZSBsaXN0ZWQgbGVhc2UgaXMgdGhlIHNhbWUgYXMgdGhl IG9uZSB3ZSBjcmVhdGVkICovCisJaWd0X2Fzc2VydF9lcShsZXNzZWVzWzBdLCBsZWFzZS5sZXNz ZWVfaWQpOworCisJdGVybWluYXRlX2xlYXNlKCZsZWFzZSk7Cit9CisKKy8qIFRlc3QgZ2V0dGlu ZyB0aGUgY29udGVudHMgb2YgYSBsZWFzZSAqLworc3RhdGljIHZvaWQgbGVhc2VfZ2V0KGRhdGFf dCAqZGF0YSkKK3sKKwlsZWFzZV90IGxlYXNlOworCXN0cnVjdCBsb2NhbF9kcm1fbW9kZV9nZXRf bGVhc2UgbWdsOworCXVpbnQzMl90IG9iamVjdHNbMl07CisJaW50IG87CisKKwkvKiBDcmVhdGUg YSB2YWxpZCBsZWFzZSAqLworCWlndF9hc3NlcnRfZXEobWFrZV9sZWFzZShkYXRhLCAmbGVhc2Up LCAwKTsKKworCS8qIEdldCB0aGUgbnVtYmVyIG9mIG9iamVjdHMgKi8KKwltZ2wuY291bnRfb2Jq ZWN0cyA9IDA7CisJbWdsLm9iamVjdHNfcHRyID0gMDsKKwlpZ3RfYXNzZXJ0X2VxKGdldF9sZWFz ZShsZWFzZS5mZCwgJm1nbCksIDApOworCisJLyogTWFrZSBzdXJlIGl0J3MgMiAqLworCWlndF9h c3NlcnRfZXEobWdsLmNvdW50X29iamVjdHMsIDIpOworCisJLyogR2V0IHRoZSBvYmplY3RzICov CisJbWdsLm9iamVjdHNfcHRyID0gKHVpbnQ2NF90KSAodWludHB0cl90KSBvYmplY3RzOworCisJ aWd0X2Fzc2VydF9lcShnZXRfbGVhc2UobGVhc2UuZmQsICZtZ2wpLCAwKTsKKworCS8qIE1ha2Ug c3VyZSBpdCdzIDIgKi8KKwlpZ3RfYXNzZXJ0X2VxKG1nbC5jb3VudF9vYmplY3RzLCAyKTsKKwor CS8qIE1ha2Ugc3VyZSB3ZSBnb3QgYm90aCB0aGUgY29ubmVjdG9yIGFuZCBjcnRjIGJhY2sgKi8K Kwlmb3IgKG8gPSAwOyBvIDwgMjsgbysrKQorCQlpZiAob2JqZWN0c1tvXSA9PSBkYXRhLT5jb25u ZWN0b3JfaWQpCisJCQlicmVhazsKKworCWlndF9hc3NlcnRfbmVxKG8sIDIpOworCisJZm9yIChv ID0gMDsgbyA8IDI7IG8rKykKKwkJaWYgKG9iamVjdHNbb10gPT0gZGF0YS0+Y3J0Y19pZCkKKwkJ CWJyZWFrOworCisJaWd0X2Fzc2VydF9uZXEobywgMik7CisKKwl0ZXJtaW5hdGVfbGVhc2UoJmxl YXNlKTsKK30KKworc3RhdGljIHZvaWQgbGVhc2VfdW5sZWFzZWRfY3J0YyhkYXRhX3QgKmRhdGEp Cit7CisJbGVhc2VfdCBsZWFzZTsKKwllbnVtIHBpcGUgcDsKKwl1aW50MzJfdCBiYWRfY3J0Y19p ZDsKKwlpbnQgcmV0OworCisJLyogQ3JlYXRlIGEgdmFsaWQgbGVhc2UgKi8KKwlpZ3RfYXNzZXJ0 X2VxKG1ha2VfbGVhc2UoZGF0YSwgJmxlYXNlKSwgMCk7CisKKwlpZ3RfZGlzcGxheV9pbml0KCZs ZWFzZS5kaXNwbGF5LCBsZWFzZS5mZCk7CisKKwkvKiBGaW5kIGFub3RoZXIgQ1JUQyB0aGF0IHdl IGRvbid0IGNvbnRyb2wgKi8KKwliYWRfY3J0Y19pZCA9IDA7CisJZm9yIChwID0gMDsgYmFkX2Ny dGNfaWQgPT0gMCAmJiBwIDwgZGF0YS0+bWFzdGVyLmRpc3BsYXkubl9waXBlczsgcCsrKSB7CisJ CWlmIChwaXBlX3RvX2NydGNfaWQoJmRhdGEtPm1hc3Rlci5kaXNwbGF5LCBwKSAhPSBkYXRhLT5j cnRjX2lkKQorCQkJYmFkX2NydGNfaWQgPSBwaXBlX3RvX2NydGNfaWQoJmRhdGEtPm1hc3Rlci5k aXNwbGF5LCBwKTsKKwl9CisKKwkvKiBHaXZlIHVwIGlmIHRoZXJlIGlzbid0IGFub3RoZXIgY3J0 YyAqLworCWlndF9za2lwX29uKGJhZF9jcnRjX2lkID09IDApOworCisJLyogQXR0ZW1wdCB0byB1 c2UgdGhlIHVubGVhc2VkIGNydGMgaWQuIE5vdGUgdGhhdCB0aGUKKwkgKiBmYWlsdXJlIGhlcmUg aXMgbm90IGRpcmVjdGx5IGZyb20gdGhlIGtlcm5lbCBiZWNhdXNlIHRoZQorCSAqIHJlc291cmNl cyByZXR1cm5lZCBmcm9tIHRoZSBrZXJuZWwgd2lsbCBub3QgY29udGFpbiB0aGlzIHJlc291cmNl CisJICogaWQgYW5kIGhlbmNlIHRoZSBpZ3QgaGVscGVyIGZ1bmN0aW9ucyB3aWxsIGZhaWwgdG8g ZmluZCBpdAorCSAqLworCXJldCA9IHByZXBhcmVfY3J0YygmbGVhc2UsIGRhdGEtPmNvbm5lY3Rv cl9pZCwgYmFkX2NydGNfaWQpOworCisJLyogRW5zdXJlIHRoZSBleHBlY3RlZCBlcnJvciBpcyBy ZXR1cm5lZCAqLworCWlndF9hc3NlcnRfZXEocmV0LCAtRU5PRU5UKTsKKworCXRlcm1pbmF0ZV9s ZWFzZSgmbGVhc2UpOworfQorCitzdGF0aWMgdm9pZCBsZWFzZV91bmxlYXNlZF9jb25uZWN0b3Io ZGF0YV90ICpkYXRhKQoreworCWxlYXNlX3QgbGVhc2U7CisJaW50IG87CisJdWludDMyX3QgYmFk X2Nvbm5lY3Rvcl9pZDsKKwlpbnQgcmV0OworCisJLyogQ3JlYXRlIGEgdmFsaWQgbGVhc2UgKi8K KwlpZ3RfYXNzZXJ0X2VxKG1ha2VfbGVhc2UoZGF0YSwgJmxlYXNlKSwgMCk7CisKKwlpZ3RfZGlz cGxheV9pbml0KCZsZWFzZS5kaXNwbGF5LCBsZWFzZS5mZCk7CisKKwkvKiBGaW5kIGFub3RoZXIg Y29ubmVjdG9yIHRoYXQgd2UgZG9uJ3QgY29udHJvbCAqLworCWJhZF9jb25uZWN0b3JfaWQgPSAw OworCWZvciAobyA9IDA7IGJhZF9jb25uZWN0b3JfaWQgPT0gMCAmJiBvIDwgZGF0YS0+bWFzdGVy LmRpc3BsYXkubl9vdXRwdXRzOyBvKyspIHsKKwkJaWYgKGRhdGEtPm1hc3Rlci5kaXNwbGF5Lm91 dHB1dHNbb10uaWQgIT0gZGF0YS0+Y29ubmVjdG9yX2lkKQorCQkJYmFkX2Nvbm5lY3Rvcl9pZCA9 IGRhdGEtPm1hc3Rlci5kaXNwbGF5Lm91dHB1dHNbb10uaWQ7CisJfQorCisJLyogR2l2ZSB1cCBp ZiB0aGVyZSBpc24ndCBhbm90aGVyIGNvbm5lY3RvciAqLworCWlndF9za2lwX29uKGJhZF9jb25u ZWN0b3JfaWQgPT0gMCk7CisKKwkvKiBBdHRlbXB0IHRvIHVzZSB0aGUgdW5sZWFzZWQgY29ubmVj dG9yIGlkLiBOb3RlIHRoYXQgdGhlCisJICogZmFpbHVyZSBoZXJlIGlzIG5vdCBkaXJlY3RseSBm cm9tIHRoZSBrZXJuZWwgYmVjYXVzZSB0aGUKKwkgKiByZXNvdXJjZXMgcmV0dXJuZWQgZnJvbSB0 aGUga2VybmVsIHdpbGwgbm90IGNvbnRhaW4gdGhpcyByZXNvdXJjZQorCSAqIGlkIGFuZCBoZW5j ZSB0aGUgaWd0IGhlbHBlciBmdW5jdGlvbnMgd2lsbCBmYWlsIHRvIGZpbmQgaXQKKwkgKi8KKwly ZXQgPSBwcmVwYXJlX2NydGMoJmxlYXNlLCBiYWRfY29ubmVjdG9yX2lkLCBkYXRhLT5jcnRjX2lk KTsKKworCS8qIEVuc3VyZSB0aGUgZXhwZWN0ZWQgZXJyb3IgaXMgcmV0dXJuZWQgKi8KKwlpZ3Rf YXNzZXJ0X2VxKHJldCwgLUVOT0VOVCk7CisKKwl0ZXJtaW5hdGVfbGVhc2UoJmxlYXNlKTsKK30K KworLyogVGVzdCByZXZvY2F0aW9uIG9mIGxlYXNlICovCitzdGF0aWMgdm9pZCBsZWFzZV9yZXZv a2UoZGF0YV90ICpkYXRhKQoreworCWxlYXNlX3QgbGVhc2U7CisJc3RydWN0IGxvY2FsX2RybV9t b2RlX3Jldm9rZV9sZWFzZSBtcmw7CisJaW50IHJldDsKKworCS8qIENyZWF0ZSBhIHZhbGlkIGxl YXNlICovCisJaWd0X2Fzc2VydF9lcShtYWtlX2xlYXNlKGRhdGEsICZsZWFzZSksIDApOworCisJ aWd0X2Rpc3BsYXlfaW5pdCgmbGVhc2UuZGlzcGxheSwgbGVhc2UuZmQpOworCisJLyogUmV2b2tl IHRoZSBsZWFzZSB1c2luZyB0aGUgbWFzdGVyIGZkICovCisJbXJsLmxlc3NlZV9pZCA9IGxlYXNl Lmxlc3NlZV9pZDsKKwlpZ3RfYXNzZXJ0X2VxKHJldm9rZV9sZWFzZShkYXRhLT5tYXN0ZXIuZmQs ICZtcmwpLCAwKTsKKworCS8qIFRyeSB0byB1c2UgdGhlIGxlYXNlZCBvYmplY3RzICovCisJcmV0 ID0gcHJlcGFyZV9jcnRjKCZsZWFzZSwgZGF0YS0+Y29ubmVjdG9yX2lkLCBkYXRhLT5jcnRjX2lk KTsKKworCS8qIEVuc3VyZSB0aGF0IHRoZSBleHBlY3RlZCBlcnJvciBpcyByZXR1cm5lZCAqLwor CWlndF9hc3NlcnRfZXEocmV0LCAtRU5PRU5UKTsKKworCXRlcm1pbmF0ZV9sZWFzZSgmbGVhc2Up OworfQorCisvKiBUZXN0IGxlYXNpbmcgb2JqZWN0cyBtb3JlIHRoYW4gb25jZSAqLworc3RhdGlj IHZvaWQgbGVhc2VfYWdhaW4oZGF0YV90ICpkYXRhKQoreworCWxlYXNlX3QgbGVhc2VfYSwgbGVh c2VfYjsKKworCS8qIENyZWF0ZSBhIHZhbGlkIGxlYXNlICovCisJaWd0X2Fzc2VydF9lcShtYWtl X2xlYXNlKGRhdGEsICZsZWFzZV9hKSwgMCk7CisKKwkvKiBBdHRlbXB0IHRvIHJlLWxlYXNlIHRo ZSBzYW1lIG9iamVjdHMgKi8KKwlpZ3RfYXNzZXJ0X2VxKG1ha2VfbGVhc2UoZGF0YSwgJmxlYXNl X2IpLCAtRUJVU1kpOworCisJdGVybWluYXRlX2xlYXNlKCZsZWFzZV9hKTsKKworCS8qIE5vdyBh dHRlbXB0IHRvIGxlYXNlIHRoZSBzYW1lIG9iamVjdHMgKi8KKwlpZ3RfYXNzZXJ0X2VxKG1ha2Vf bGVhc2UoZGF0YSwgJmxlYXNlX2IpLCAwKTsKKworCXRlcm1pbmF0ZV9sZWFzZSgmbGVhc2VfYik7 Cit9CisKKy8qIFRlc3QgbGVhc2luZyBhbiBpbnZhbGlkIGNvbm5lY3RvciAqLworc3RhdGljIHZv aWQgbGVhc2VfaW52YWxpZF9jb25uZWN0b3IoZGF0YV90ICpkYXRhKQoreworCWxlYXNlX3QgbGVh c2U7CisJdWludDMyX3Qgc2F2ZV9jb25uZWN0b3JfaWQ7CisJaW50IHJldDsKKworCS8qIENyZWF0 ZSBhbiBpbnZhbGlkIGxlYXNlICovCisJc2F2ZV9jb25uZWN0b3JfaWQgPSBkYXRhLT5jb25uZWN0 b3JfaWQ7CisJZGF0YS0+Y29ubmVjdG9yX2lkID0gMHhiYWFkZjAwZDsKKwlyZXQgPSBtYWtlX2xl YXNlKGRhdGEsICZsZWFzZSk7CisJZGF0YS0+Y29ubmVjdG9yX2lkID0gc2F2ZV9jb25uZWN0b3Jf aWQ7CisJaWd0X2Fzc2VydF9lcShyZXQsIC1FSU5WQUwpOworfQorCisvKiBUZXN0IGxlYXNpbmcg YW4gaW52YWxpZCBjcnRjICovCitzdGF0aWMgdm9pZCBsZWFzZV9pbnZhbGlkX2NydGMoZGF0YV90 ICpkYXRhKQoreworCWxlYXNlX3QgbGVhc2U7CisJdWludDMyX3Qgc2F2ZV9jcnRjX2lkOworCWlu dCByZXQ7CisKKwkvKiBDcmVhdGUgYW4gaW52YWxpZCBsZWFzZSAqLworCXNhdmVfY3J0Y19pZCA9 IGRhdGEtPmNydGNfaWQ7CisJZGF0YS0+Y3J0Y19pZCA9IDB4YmFhZGYwMGQ7CisJcmV0ID0gbWFr ZV9sZWFzZShkYXRhLCAmbGVhc2UpOworCWRhdGEtPmNydGNfaWQgPSBzYXZlX2NydGNfaWQ7CisJ aWd0X2Fzc2VydF9lcShyZXQsIC1FSU5WQUwpOworfQorCisKK3N0YXRpYyB2b2lkIHJ1bl90ZXN0 KGRhdGFfdCAqZGF0YSwgdm9pZCAoKnRlc3RmdW5jKShkYXRhX3QgKikpCit7CisJbGVhc2VfdCAq bWFzdGVyID0gJmRhdGEtPm1hc3RlcjsKKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJm1hc3Rl ci0+ZGlzcGxheTsKKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKKwllbnVtIHBpcGUgcDsKKwl1bnNp Z25lZCBpbnQgdmFsaWRfdGVzdHMgPSAwOworCisJZm9yX2VhY2hfcGlwZV93aXRoX3ZhbGlkX291 dHB1dChkaXNwbGF5LCBwLCBvdXRwdXQpIHsKKwkJaWd0X2luZm8oIkJlZ2lubmluZyAlcyBvbiBw aXBlICVzLCBjb25uZWN0b3IgJXNcbiIsCisJCQkgaWd0X3N1YnRlc3RfbmFtZSgpLAorCQkJIGtt c3Rlc3RfcGlwZV9uYW1lKHApLAorCQkJIGlndF9vdXRwdXRfbmFtZShvdXRwdXQpKTsKKworCQlk YXRhLT5waXBlID0gcDsKKwkJZGF0YS0+Y3J0Y19pZCA9IHBpcGVfdG9fY3J0Y19pZChkaXNwbGF5 LCBwKTsKKwkJZGF0YS0+Y29ubmVjdG9yX2lkID0gb3V0cHV0LT5pZDsKKworCQl0ZXN0ZnVuYyhk YXRhKTsKKworCQlpZ3RfaW5mbygiXG4lcyBvbiBwaXBlICVzLCBjb25uZWN0b3IgJXM6IFBBU1NF RFxuXG4iLAorCQkJIGlndF9zdWJ0ZXN0X25hbWUoKSwKKwkJCSBrbXN0ZXN0X3BpcGVfbmFtZShw KSwKKwkJCSBpZ3Rfb3V0cHV0X25hbWUob3V0cHV0KSk7CisKKwkJdmFsaWRfdGVzdHMrKzsKKwl9 CisKKwlpZ3RfcmVxdWlyZV9mKHZhbGlkX3Rlc3RzLAorCQkgICAgICAibm8gdmFsaWQgY3J0Yy9j b25uZWN0b3IgY29tYmluYXRpb25zIGZvdW5kXG4iKTsKK30KKworaWd0X21haW4KK3sKKwlkYXRh X3QgZGF0YTsKKwljb25zdCBzdHJ1Y3QgeworCQljb25zdCBjaGFyICpuYW1lOworCQl2b2lkICgq ZnVuYykoZGF0YV90ICopOworCX0gZnVuY3NbXSA9IHsKKwkJeyAic2ltcGxlX2xlYXNlIiwgc2lt cGxlX2xlYXNlIH0sCisJCXsgImxlc3NlZV9saXN0IiwgbGVzc2VlX2xpc3QgfSwKKwkJeyAibGVh c2VfZ2V0IiwgbGVhc2VfZ2V0IH0sCisJCXsgImxlYXNlX3VubGVhc2VkX2Nvbm5lY3RvciIsIGxl YXNlX3VubGVhc2VkX2Nvbm5lY3RvciB9LAorCQl7ICJsZWFzZV91bmxlYXNlZF9jcnRjIiwgbGVh c2VfdW5sZWFzZWRfY3J0YyB9LAorCQl7ICJsZWFzZV9yZXZva2UiLCBsZWFzZV9yZXZva2UgfSwK KwkJeyAibGVhc2VfYWdhaW4iLCBsZWFzZV9hZ2FpbiB9LAorCQl7ICJsZWFzZV9pbnZhbGlkX2Nv bm5lY3RvciIsIGxlYXNlX2ludmFsaWRfY29ubmVjdG9yIH0sCisJCXsgImxlYXNlX2ludmFsaWRf Y3J0YyIsIGxlYXNlX2ludmFsaWRfY3J0YyB9LAorCQl7IH0KKwl9LCAqZjsKKworCWlndF9za2lw X29uX3NpbXVsYXRpb24oKTsKKworCWlndF9maXh0dXJlIHsKKwkJZGF0YS5tYXN0ZXIuZmQgPSBk cm1fb3Blbl9kcml2ZXIoRFJJVkVSX0FOWSk7CisJCWttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNzX21v ZGUoKTsKKwkJaWd0X2Rpc3BsYXlfaW5pdCgmZGF0YS5tYXN0ZXIuZGlzcGxheSwgZGF0YS5tYXN0 ZXIuZmQpOworCX0KKworCWZvciAoZiA9IGZ1bmNzOyBmLT5uYW1lOyBmKyspIHsKKworCQlpZ3Rf c3VidGVzdF9mKCIlcyIsIGYtPm5hbWUpIHsKKwkJCXJ1bl90ZXN0KCZkYXRhLCBmLT5mdW5jKTsK KwkJfQorCX0KK30KZGlmZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVzdHMvbWVzb24u YnVpbGQKaW5kZXggYWY5ODZlYjYuLjYwOGFiM2ZhIDEwMDY0NAotLS0gYS90ZXN0cy9tZXNvbi5i dWlsZAorKysgYi90ZXN0cy9tZXNvbi5idWlsZApAQCAtMTczLDYgKzE3Myw3IEBAIHRlc3RfcHJv Z3MgPSBbCiAJJ2ttc19mcm9udGJ1ZmZlcl90cmFja2luZycsCiAJJ2ttc19oZG1pX2luamVjdCcs CiAJJ2ttc19pbnZhbGlkX2RvdGNsb2NrJywKKwkna21zX2xlYXNlJywKIAkna21zX2xlZ2FjeV9j b2xvcmtleScsCiAJJ2ttc19tbWFwX3dyaXRlX2NyYycsCiAJJ2ttc19tbWlvX3ZzX2NzX2ZsaXAn LAotLSAKMi4xMy4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwK