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 [v3] Date: Wed, 20 Dec 2017 22:32:29 -0800 Message-ID: <20171221063229.9587-3-keithp@keithp.com> References: <20171221063229.9587-1-keithp@keithp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171221063229.9587-1-keithp@keithp.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org VmFsaWRhdGUgdGhhdCB0aGUgbGVhc2luZyBBUEkgY3JlYXRlcyBsZWFzZXMgdGhhdCBhbGxvdyBh Y2Nlc3MgdG8gYQpzdWJzZXQgb2YgdGhlIGF2YWlsYWJsZSByZXNvdXJjZXMgYW5kIHRoYXQgbGVh c2UgcmV2b2NhdGlvbiB3b3Jrcy4KCnYyOiBmcm9tIERhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhh dC5jb20+CgogKiBVcGRhdGUgaW9jdGwgbnVtYmVycyB0byBsYXRlc3QgcHJvcG9zZWQgdmFsdWVz LgogKiBGaXggY29tbWl0IG1lc3NhZ2UKICogQWRkIHRlc3RzIGZvciBnZXRfbGVhc2UgYW5kIGxp c3RfbGVzc2VlcwoKdjM6IGFkYXB0IHRvIGZpbmFsIGtlcm5lbCBBUEkKCiogRGlzYWJsZSBDQVBf VU5JVkVSU0FMX1BMQU5FUyBiZWZvcmUgbGVhc2luZyBzbyB0aGF0IHdlIGRvbid0IG5lZWQgdG8K ICBhbHNvIGluY2x1ZGUgYSBwbGFuZS4KCiogWmVybyBvdXQgYWxsIG9mIHRoZSBpb2N0bCBzdHJ1 Y3R1cmVzIHNvIHRoYXQgYW55IHBhZGRpbmcgZmllbGRzIGFyZQogIHNldCBjb3JyZWN0bHkuCgoq IFdoZW4gbGlzdGluZyBhIGxlYXNlLCBleHBlY3QgMyByZXNvdXJjZXMgLS0gY3J0YywgY29ubmVj dG9yIGFuZCBwbGFuZS4KClNpZ25lZC1vZmYtYnk6IEtlaXRoIFBhY2thcmQgPGtlaXRocEBrZWl0 aHAuY29tPgotLS0KIHRlc3RzL01ha2VmaWxlLnNvdXJjZXMgfCAgIDEgKwogdGVzdHMva21zX2xl YXNlLmMgICAgICB8IDYwNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiB0ZXN0cy9tZXNvbi5idWlsZCAgICAgIHwgICAxICsKIDMgZmlsZXMgY2hhbmdl ZCwgNjA4IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9rbXNfbGVhc2Uu YwoKZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5z b3VyY2VzCmluZGV4IDQ4NWVkNDI5Li4yYmVmN2Q2OCAxMDA2NDQKLS0tIGEvdGVzdHMvTWFrZWZp bGUuc291cmNlcworKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCkBAIC0xODksNiArMTg5LDcg QEAgVEVTVFNfcHJvZ3MgPSBcCiAJa21zX2Zyb250YnVmZmVyX3RyYWNraW5nIFwKIAlrbXNfaGRt aV9pbmplY3QgXAogCWttc19pbnZhbGlkX2RvdGNsb2NrIFwKKwlrbXNfbGVhc2UgXAogCWttc19s ZWdhY3lfY29sb3JrZXkgXAogCWttc19tbWFwX3dyaXRlX2NyYyBcCiAJa21zX21taW9fdnNfY3Nf ZmxpcCBcCmRpZmYgLS1naXQgYS90ZXN0cy9rbXNfbGVhc2UuYyBiL3Rlc3RzL2ttc19sZWFzZS5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4yYTZkODJmYgotLS0gL2Rldi9u dWxsCisrKyBiL3Rlc3RzL2ttc19sZWFzZS5jCkBAIC0wLDAgKzEsNjA2IEBACisvKgorICogQ29w eXJpZ2h0IMKpIDIwMTcgS2VpdGggUGFja2FyZAorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5 IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBj b3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAo dGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0 cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1 c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2Us CisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBl cnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3Vi amVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHly aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4 dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0 YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJF IElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJF U1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVU SE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdF UyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFD VCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05O RUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAq IElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisvKiogQGZpbGUga21zX2xlYXNlLmMKKyAqCisgKiBU aGlzIGlzIGEgdGVzdCBvZiBEUk0gbGVhc2VzCisgKi8KKworCisjaW5jbHVkZSAiaWd0LmgiCisj aW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcu aD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPGludHR5cGVzLmg+CisjaW5jbHVkZSA8 ZXJybm8uaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8c3lzL3BvbGwuaD4KKyNpbmNs dWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8c3lzL3dh aXQuaD4KKworI2luY2x1ZGUgPGRybS5oPgorCitJR1RfVEVTVF9ERVNDUklQVElPTigiVGVzdCBv ZiBDcmVhdGVMZWFzZS4iKTsKKworc3RydWN0IGxvY2FsX2RybV9tb2RlX2NyZWF0ZV9sZWFzZSB7 CisgICAgICAgIC8qKiBQb2ludGVyIHRvIGFycmF5IG9mIG9iamVjdCBpZHMgKF9fdTMyKSAqLwor ICAgICAgICBfX3U2NCBvYmplY3RfaWRzOworICAgICAgICAvKiogTnVtYmVyIG9mIG9iamVjdCBp ZHMgKi8KKyAgICAgICAgX191MzIgb2JqZWN0X2NvdW50OworICAgICAgICAvKiogZmxhZ3MgZm9y IG5ldyBGRCAoT19DTE9FWEVDLCBldGMpICovCisgICAgICAgIF9fdTMyIGZsYWdzOworCisgICAg ICAgIC8qKiBSZXR1cm46IHVuaXF1ZSBpZGVudGlmaWVyIGZvciBsZXNzZWUuICovCisgICAgICAg IF9fdTMyIGxlc3NlZV9pZDsKKyAgICAgICAgLyoqIFJldHVybjogZmlsZSBkZXNjcmlwdG9yIHRv IG5ldyBkcm1fbWFzdGVyIGZpbGUgKi8KKyAgICAgICAgX191MzIgZmQ7Cit9OworCitzdHJ1Y3Qg bG9jYWxfZHJtX21vZGVfbGlzdF9sZXNzZWVzIHsKKyAgICAgICAgLyoqIE51bWJlciBvZiBsZXNz ZWVzLgorICAgICAgICAgKiBPbiBpbnB1dCwgcHJvdmlkZXMgbGVuZ3RoIG9mIHRoZSBhcnJheS4K KyAgICAgICAgICogT24gb3V0cHV0LCBwcm92aWRlcyB0b3RhbCBudW1iZXIuIE5vCisgICAgICAg ICAqIG1vcmUgdGhhbiB0aGUgaW5wdXQgbnVtYmVyIHdpbGwgYmUgd3JpdHRlbgorICAgICAgICAg KiBiYWNrLCBzbyB0d28gY2FsbHMgY2FuIGJlIHVzZWQgdG8gZ2V0CisgICAgICAgICAqIHRoZSBz aXplIGFuZCB0aGVuIHRoZSBkYXRhLgorICAgICAgICAgKi8KKyAgICAgICAgX191MzIgY291bnRf bGVzc2VlczsKKyAgICAgICAgX191MzIgcGFkOworCisgICAgICAgIC8qKiBQb2ludGVyIHRvIGxl c3NlZXMuCisgICAgICAgICAqIHBvaW50ZXIgdG8gX191NjQgYXJyYXkgb2YgbGVzc2VlIGlkcwor ICAgICAgICAgKi8KKyAgICAgICAgX191NjQgbGVzc2Vlc19wdHI7Cit9OworCitzdHJ1Y3QgbG9j YWxfZHJtX21vZGVfZ2V0X2xlYXNlIHsKKyAgICAgICAgLyoqIE51bWJlciBvZiBsZWFzZWQgb2Jq ZWN0cy4KKyAgICAgICAgICogT24gaW5wdXQsIHByb3ZpZGVzIGxlbmd0aCBvZiB0aGUgYXJyYXku CisgICAgICAgICAqIE9uIG91dHB1dCwgcHJvdmlkZXMgdG90YWwgbnVtYmVyLiBObworICAgICAg ICAgKiBtb3JlIHRoYW4gdGhlIGlucHV0IG51bWJlciB3aWxsIGJlIHdyaXR0ZW4KKyAgICAgICAg ICogYmFjaywgc28gdHdvIGNhbGxzIGNhbiBiZSB1c2VkIHRvIGdldAorICAgICAgICAgKiB0aGUg c2l6ZSBhbmQgdGhlbiB0aGUgZGF0YS4KKyAgICAgICAgICovCisgICAgICAgIF9fdTMyIGNvdW50 X29iamVjdHM7CisgICAgICAgIF9fdTMyIHBhZDsKKworICAgICAgICAvKiogUG9pbnRlciB0byBv YmplY3RzLgorICAgICAgICAgKiBwb2ludGVyIHRvIF9fdTMyIGFycmF5IG9mIG9iamVjdCBpZHMK KyAgICAgICAgICovCisgICAgICAgIF9fdTY0IG9iamVjdHNfcHRyOworfTsKKworLyoqCisgKiBS ZXZva2UgbGVhc2UKKyAqLworc3RydWN0IGxvY2FsX2RybV9tb2RlX3Jldm9rZV9sZWFzZSB7Cisg ICAgICAgIC8qKiBVbmlxdWUgSUQgb2YgbGVzc2VlCisgICAgICAgICAqLworICAgICAgICBfX3Uz MiBsZXNzZWVfaWQ7Cit9OworCisKKyNkZWZpbmUgTE9DQUxfRFJNX0lPQ1RMX01PREVfQ1JFQVRF X0xFQVNFICAgICBEUk1fSU9XUigweEM2LCBzdHJ1Y3QgbG9jYWxfZHJtX21vZGVfY3JlYXRlX2xl YXNlKQorI2RlZmluZSBMT0NBTF9EUk1fSU9DVExfTU9ERV9MSVNUX0xFU1NFRVMgICAgIERSTV9J T1dSKDB4QzcsIHN0cnVjdCBsb2NhbF9kcm1fbW9kZV9saXN0X2xlc3NlZXMpCisjZGVmaW5lIExP Q0FMX0RSTV9JT0NUTF9NT0RFX0dFVF9MRUFTRSAgICAgICAgRFJNX0lPV1IoMHhDOCwgc3RydWN0 IGxvY2FsX2RybV9tb2RlX2dldF9sZWFzZSkKKyNkZWZpbmUgTE9DQUxfRFJNX0lPQ1RMX01PREVf UkVWT0tFX0xFQVNFICAgICBEUk1fSU9XUigweEM5LCBzdHJ1Y3QgbG9jYWxfZHJtX21vZGVfcmV2 b2tlX2xlYXNlKQorCit0eXBlZGVmIHN0cnVjdCB7CisJaW50IGZkOworCXVpbnQzMl90IGxlc3Nl ZV9pZDsKKwlpZ3RfZGlzcGxheV90IGRpc3BsYXk7CisJc3RydWN0IGlndF9mYiBwcmltYXJ5X2Zi OworCWlndF9vdXRwdXRfdCAqb3V0cHV0OworCWRybU1vZGVNb2RlSW5mbyAqbW9kZTsKK30gbGVh c2VfdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworCWxlYXNlX3QgbWFzdGVyOworCWVudW0gcGlwZSBw aXBlOworCXVpbnQzMl90IGNydGNfaWQ7CisJdWludDMyX3QgY29ubmVjdG9yX2lkOworfSBkYXRh X3Q7CisKK3N0YXRpYyB1aW50MzJfdCBwaXBlX3RvX2NydGNfaWQoaWd0X2Rpc3BsYXlfdCAqZGlz cGxheSwgZW51bSBwaXBlIHBpcGUpCit7CisJcmV0dXJuIGRpc3BsYXktPnBpcGVzW3BpcGVdLmNy dGNfaWQ7Cit9CisKK3N0YXRpYyBlbnVtIHBpcGUgY3J0Y19pZF90b19waXBlKGlndF9kaXNwbGF5 X3QgKmRpc3BsYXksIHVpbnQzMl90IGNydGNfaWQpCit7CisJZW51bSBwaXBlIHBpcGU7CisKKwlm b3IgKHBpcGUgPSAwOyBwaXBlIDwgZGlzcGxheS0+bl9waXBlczsgcGlwZSsrKQorCQlpZiAoZGlz cGxheS0+cGlwZXNbcGlwZV0uY3J0Y19pZCA9PSBjcnRjX2lkKQorCQkJcmV0dXJuIHBpcGU7CisJ cmV0dXJuIC0xOworfQorCitzdGF0aWMgaWd0X291dHB1dF90ICpjb25uZWN0b3JfaWRfdG9fb3V0 cHV0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIHVpbnQzMl90IGNvbm5lY3Rvcl9pZCkKK3sKKwlk cm1Nb2RlQ29ubmVjdG9yCQljb25uZWN0b3I7CisKKwljb25uZWN0b3IuY29ubmVjdG9yX2lkID0g Y29ubmVjdG9yX2lkOworCXJldHVybiBpZ3Rfb3V0cHV0X2Zyb21fY29ubmVjdG9yKGRpc3BsYXks ICZjb25uZWN0b3IpOworfQorCitzdGF0aWMgaW50IHByZXBhcmVfY3J0YyhsZWFzZV90ICpsZWFz ZSwgdWludDMyX3QgY29ubmVjdG9yX2lkLCB1aW50MzJfdCBjcnRjX2lkKQoreworCWRybU1vZGVN b2RlSW5mbyAqbW9kZTsKKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmxlYXNlLT5kaXNwbGF5 OworCWlndF9vdXRwdXRfdCAqb3V0cHV0ID0gY29ubmVjdG9yX2lkX3RvX291dHB1dChkaXNwbGF5 LCBjb25uZWN0b3JfaWQpOworCWVudW0gcGlwZSBwaXBlID0gY3J0Y19pZF90b19waXBlKGRpc3Bs YXksIGNydGNfaWQpOworCWlndF9wbGFuZV90ICpwcmltYXJ5OworCWludCByZXQ7CisKKwlpZiAo IW91dHB1dCkKKwkJcmV0dXJuIC1FTk9FTlQ7CisKKwkvKiBzZWxlY3QgdGhlIHBpcGUgd2Ugd2Fu dCB0byB1c2UgKi8KKwlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgcGlwZSk7CisKKwkvKiBj cmVhdGUgYW5kIHNldCB0aGUgcHJpbWFyeSBwbGFuZSBmYiAqLworCW1vZGUgPSBpZ3Rfb3V0cHV0 X2dldF9tb2RlKG91dHB1dCk7CisJaWd0X2NyZWF0ZV9jb2xvcl9mYihsZWFzZS0+ZmQsIG1vZGUt PmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwKKwkJCSAgICBEUk1fRk9STUFUX1hSR0I4ODg4LAor CQkJICAgIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCisJCQkgICAgMC4wLCAwLjAsIDAuMCwK KwkJCSAgICAmbGVhc2UtPnByaW1hcnlfZmIpOworCisJLyogQ2hlY2sgdG8gc2VlIGlmIHRoZSBj cnRjIHNlbGVjdGVkIGlzIHZhbGlkICovCisJaWYgKCFpZ3Rfb3V0cHV0X2dldF9kcml2aW5nX3Bp cGUob3V0cHV0KSkKKwkJcmV0dXJuIC1FTk9FTlQ7CisKKwlwcmltYXJ5ID0gaWd0X291dHB1dF9n ZXRfcGxhbmVfdHlwZShvdXRwdXQsIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOworCWlndF9wbGFu ZV9zZXRfZmIocHJpbWFyeSwgJmxlYXNlLT5wcmltYXJ5X2ZiKTsKKworCXJldCA9IGlndF9kaXNw bGF5X3RyeV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9MRUdBQ1kpOworCisJaWYgKHJldCkKKwkJ cmV0dXJuIHJldDsKKworCWlndF93YWl0X2Zvcl92YmxhbmsobGVhc2UtPmZkLCBwaXBlKTsKKwor CWxlYXNlLT5vdXRwdXQgPSBvdXRwdXQ7CisJbGVhc2UtPm1vZGUgPSBtb2RlOworCXJldHVybiAw OworfQorCitzdGF0aWMgdm9pZCBjbGVhbnVwX2NydGMobGVhc2VfdCAqbGVhc2UsIGlndF9vdXRw dXRfdCAqb3V0cHV0KQoreworCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmbGVhc2UtPmRpc3Bs YXk7CisJaWd0X3BsYW5lX3QgKnByaW1hcnk7CisKKwlpZ3RfcmVtb3ZlX2ZiKGxlYXNlLT5mZCwg JmxlYXNlLT5wcmltYXJ5X2ZiKTsKKworCXByaW1hcnkgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90 eXBlKG91dHB1dCwgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7CisJaWd0X3BsYW5lX3NldF9mYihw cmltYXJ5LCBOVUxMKTsKKworCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBQSVBFX0FOWSk7 CisJaWd0X2Rpc3BsYXlfY29tbWl0KGRpc3BsYXkpOworfQorCitzdGF0aWMgaW50IGNyZWF0ZV9s ZWFzZShpbnQgZmQsIHN0cnVjdCBsb2NhbF9kcm1fbW9kZV9jcmVhdGVfbGVhc2UgKm1jbCkKK3sK KwlpbnQgZXJyID0gMDsKKworCS8qIFdlIHdhbnQgdGhlIGxlYXNlIHRvIGFsbG9jYXRlIGEgcGxh bmUgYnkgaXRzZWxmIHNvIHRoYXQgd2UKKwkgKiB0ZXN0IHRoYXQgYmVoYXZpb3IuCisJICovCisJ ZHJtU2V0Q2xpZW50Q2FwKGZkLCBEUk1fQ0xJRU5UX0NBUF9VTklWRVJTQUxfUExBTkVTLCAwKTsK KworCWlmIChpZ3RfaW9jdGwoZmQsIExPQ0FMX0RSTV9JT0NUTF9NT0RFX0NSRUFURV9MRUFTRSwg bWNsKSkKKwkJZXJyID0gLWVycm5vOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgcmV2 b2tlX2xlYXNlKGludCBmZCwgc3RydWN0IGxvY2FsX2RybV9tb2RlX3Jldm9rZV9sZWFzZSAqbXJs KQoreworCWludCBlcnIgPSAwOworCisJaWYgKGlndF9pb2N0bChmZCwgTE9DQUxfRFJNX0lPQ1RM X01PREVfUkVWT0tFX0xFQVNFLCBtcmwpKQorCQllcnIgPSAtZXJybm87CisJcmV0dXJuIGVycjsK K30KKworc3RhdGljIGludCBsaXN0X2xlc3NlZXMoaW50IGZkLCBzdHJ1Y3QgbG9jYWxfZHJtX21v ZGVfbGlzdF9sZXNzZWVzICptbGwpCit7CisJaW50IGVyciA9IDA7CisKKwlpZiAoaWd0X2lvY3Rs KGZkLCBMT0NBTF9EUk1fSU9DVExfTU9ERV9MSVNUX0xFU1NFRVMsIG1sbCkpCisJCWVyciA9IC1l cnJubzsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IGdldF9sZWFzZShpbnQgZmQsIHN0 cnVjdCBsb2NhbF9kcm1fbW9kZV9nZXRfbGVhc2UgKm1nbCkKK3sKKwlpbnQgZXJyID0gMDsKKwor CWlmIChpZ3RfaW9jdGwoZmQsIExPQ0FMX0RSTV9JT0NUTF9NT0RFX0dFVF9MRUFTRSwgbWdsKSkK KwkJZXJyID0gLWVycm5vOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgbWFrZV9sZWFz ZShkYXRhX3QgKmRhdGEsIGxlYXNlX3QgKmxlYXNlKQoreworCXVpbnQzMl90IG9iamVjdF9pZHNb M107CisJc3RydWN0IGxvY2FsX2RybV9tb2RlX2NyZWF0ZV9sZWFzZSBtY2w7CisJaW50IHJldDsK KworCW1lbXNldCgmbWNsLCAwLCBzaXplb2YgKG1jbCkpOworCW1jbC5vYmplY3RfaWRzID0gKHVp bnQ2NF90KSAodWludHB0cl90KSAmb2JqZWN0X2lkc1swXTsKKwltY2wub2JqZWN0X2NvdW50ID0g MDsKKwltY2wuZmxhZ3MgPSAwOworCisJb2JqZWN0X2lkc1ttY2wub2JqZWN0X2NvdW50KytdID0g ZGF0YS0+Y29ubmVjdG9yX2lkOworCW9iamVjdF9pZHNbbWNsLm9iamVjdF9jb3VudCsrXSA9IGRh dGEtPmNydGNfaWQ7CisKKwlyZXQgPSBjcmVhdGVfbGVhc2UoZGF0YS0+bWFzdGVyLmZkLCAmbWNs KTsKKworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlsZWFzZS0+ZmQgPSBtY2wuZmQ7CisJ bGVhc2UtPmxlc3NlZV9pZCA9IG1jbC5sZXNzZWVfaWQ7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRp YyB2b2lkIHRlcm1pbmF0ZV9sZWFzZShsZWFzZV90ICpsZWFzZSkKK3sKKwljbG9zZShsZWFzZS0+ ZmQpOworfQorCitzdGF0aWMgaW50IHBhaW50X2ZiKGludCBkcm1fZmQsIHN0cnVjdCBpZ3RfZmIg KmZiLCBjb25zdCBjaGFyICp0ZXN0X25hbWUsCisJCSAgICBjb25zdCBjaGFyICptb2RlX2Zvcm1h dF9zdHIsIGNvbnN0IGNoYXIgKmNvbm5lY3Rvcl9zdHIsIGNvbnN0IGNoYXIgKnBpcGVfc3RyKQor eworCWNhaXJvX3QgKmNyOworCisJY3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChkcm1fZmQsIGZiKTsK KworCWlndF9wYWludF9jb2xvcl9ncmFkaWVudChjciwgMCwgMCwgZmItPndpZHRoLCBmYi0+aGVp Z2h0LCAxLCAxLCAxKTsKKwlpZ3RfcGFpbnRfdGVzdF9wYXR0ZXJuKGNyLCBmYi0+d2lkdGgsIGZi LT5oZWlnaHQpOworCisJY2Fpcm9fbW92ZV90byhjciwgZmItPndpZHRoIC8gMiwgZmItPmhlaWdo dCAvIDIpOworCWNhaXJvX3NldF9mb250X3NpemUoY3IsIDM2KTsKKwlpZ3RfY2Fpcm9fcHJpbnRm X2xpbmUoY3IsIGFsaWduX2hjZW50ZXIsIDEwLCAiJXMiLCB0ZXN0X25hbWUpOworCWlndF9jYWly b19wcmludGZfbGluZShjciwgYWxpZ25faGNlbnRlciwgMTAsICIlcyIsIG1vZGVfZm9ybWF0X3N0 cik7CisJaWd0X2NhaXJvX3ByaW50Zl9saW5lKGNyLCBhbGlnbl9oY2VudGVyLCAxMCwgIiVzIiwg Y29ubmVjdG9yX3N0cik7CisJaWd0X2NhaXJvX3ByaW50Zl9saW5lKGNyLCBhbGlnbl9oY2VudGVy LCAxMCwgIiVzIiwgcGlwZV9zdHIpOworCisJY2Fpcm9fZGVzdHJveShjcik7CisKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIHZvaWQgc2ltcGxlX2xlYXNlKGRhdGFfdCAqZGF0YSkKK3sKKwlsZWFz ZV90IGxlYXNlOworCisJLyogQ3JlYXRlIGEgdmFsaWQgbGVhc2UgKi8KKwlpZ3RfYXNzZXJ0X2Vx KG1ha2VfbGVhc2UoZGF0YSwgJmxlYXNlKSwgMCk7CisKKwlpZ3RfZGlzcGxheV9pbml0KCZsZWFz ZS5kaXNwbGF5LCBsZWFzZS5mZCk7CisKKwkvKiBTZXQgYSBtb2RlIG9uIHRoZSBsZWFzZWQgb3V0 cHV0ICovCisJaWd0X2Fzc2VydF9lcSgwLCBwcmVwYXJlX2NydGMoJmxlYXNlLCBkYXRhLT5jb25u ZWN0b3JfaWQsIGRhdGEtPmNydGNfaWQpKTsKKworCS8qIFBhaW50IHNvbWV0aGluZyBhdHRyYWN0 aXZlICovCisJcGFpbnRfZmIobGVhc2UuZmQsICZsZWFzZS5wcmltYXJ5X2ZiLCAic2ltcGxlX2xl YXNlIiwKKwkJIGxlYXNlLm1vZGUtPm5hbWUsIGlndF9vdXRwdXRfbmFtZShsZWFzZS5vdXRwdXQp LCBrbXN0ZXN0X3BpcGVfbmFtZShkYXRhLT5waXBlKSk7CisJc2xlZXAoMyk7CisJY2xlYW51cF9j cnRjKCZsZWFzZSwKKwkJICAgICBjb25uZWN0b3JfaWRfdG9fb3V0cHV0KCZsZWFzZS5kaXNwbGF5 LCBkYXRhLT5jb25uZWN0b3JfaWQpKTsKKworCXRlcm1pbmF0ZV9sZWFzZSgmbGVhc2UpOworfQor CisvKiBUZXN0IGxpc3RpbmcgbGVzc2VlcyAqLworc3RhdGljIHZvaWQgbGVzc2VlX2xpc3QoZGF0 YV90ICpkYXRhKQoreworCWxlYXNlX3QgbGVhc2U7CisJc3RydWN0IGxvY2FsX2RybV9tb2RlX2xp c3RfbGVzc2VlcyBtbGw7CisJdWludDMyX3QgbGVzc2Vlc1sxXTsKKworCS8qIENyZWF0ZSBhIHZh bGlkIGxlYXNlICovCisJaWd0X2Fzc2VydF9lcShtYWtlX2xlYXNlKGRhdGEsICZsZWFzZSksIDAp OworCisJLyogR2V0IHRoZSBudW1iZXIgb2YgbGVzc2VlcyAqLworCW1lbXNldCgmbWxsLCAwLCBz aXplb2YgKG1sbCkpOworCW1sbC5jb3VudF9sZXNzZWVzID0gMDsKKwltbGwubGVzc2Vlc19wdHIg PSAwOworCWlndF9hc3NlcnRfZXEobGlzdF9sZXNzZWVzKGRhdGEtPm1hc3Rlci5mZCwgJm1sbCks IDApOworCisJLyogTWFrZSBzdXJlIHRoZXJlJ3MgYSBzaW5nbGUgbGVzc2VlICovCisJaWd0X2Fz c2VydF9lcShtbGwuY291bnRfbGVzc2VlcywgMSk7CisKKwltbGwubGVzc2Vlc19wdHIgPSAodWlu dDY0X3QpICh1aW50cHRyX3QpICZsZXNzZWVzWzBdOworCisJaWd0X2Fzc2VydF9lcShsaXN0X2xl c3NlZXMoZGF0YS0+bWFzdGVyLmZkLCAmbWxsKSwgMCk7CisKKwkvKiBNYWtlIHN1cmUgdGhlcmUn cyBhIHNpbmdsZSBsZXNzZWUgKi8KKwlpZ3RfYXNzZXJ0X2VxKG1sbC5jb3VudF9sZXNzZWVzLCAx KTsKKworCS8qIE1ha2Ugc3VyZSB0aGUgbGlzdGVkIGxlYXNlIGlzIHRoZSBzYW1lIGFzIHRoZSBv bmUgd2UgY3JlYXRlZCAqLworCWlndF9hc3NlcnRfZXEobGVzc2Vlc1swXSwgbGVhc2UubGVzc2Vl X2lkKTsKKworCXRlcm1pbmF0ZV9sZWFzZSgmbGVhc2UpOworfQorCisvKiBUZXN0IGdldHRpbmcg dGhlIGNvbnRlbnRzIG9mIGEgbGVhc2UgKi8KK3N0YXRpYyB2b2lkIGxlYXNlX2dldChkYXRhX3Qg KmRhdGEpCit7CisJbGVhc2VfdCBsZWFzZTsKKwlzdHJ1Y3QgbG9jYWxfZHJtX21vZGVfZ2V0X2xl YXNlIG1nbDsKKwl1aW50MzJfdCBvYmplY3RzWzNdOworCWludCBvOworCisJLyogQ3JlYXRlIGEg dmFsaWQgbGVhc2UgKi8KKwlpZ3RfYXNzZXJ0X2VxKG1ha2VfbGVhc2UoZGF0YSwgJmxlYXNlKSwg MCk7CisKKwkvKiBHZXQgdGhlIG51bWJlciBvZiBvYmplY3RzICovCisJbWVtc2V0KCZtZ2wsIDAs IHNpemVvZihtZ2wpKTsKKwltZ2wuY291bnRfb2JqZWN0cyA9IDA7CisJbWdsLm9iamVjdHNfcHRy ID0gMDsKKwlpZ3RfYXNzZXJ0X2VxKGdldF9sZWFzZShsZWFzZS5mZCwgJm1nbCksIDApOworCisJ LyogTWFrZSBzdXJlIGl0J3MgMyAoa2VybmVsIGFsc28gZ2l2ZXMgdXMgYSBwbGFuZSkgKi8KKwlp Z3RfYXNzZXJ0X2VxKG1nbC5jb3VudF9vYmplY3RzLCAzKTsKKworCS8qIEdldCB0aGUgb2JqZWN0 cyAqLworCW1nbC5vYmplY3RzX3B0ciA9ICh1aW50NjRfdCkgKHVpbnRwdHJfdCkgb2JqZWN0czsK KworCWlndF9hc3NlcnRfZXEoZ2V0X2xlYXNlKGxlYXNlLmZkLCAmbWdsKSwgMCk7CisKKwkvKiBN YWtlIHN1cmUgaXQncyAyICovCisJaWd0X2Fzc2VydF9lcShtZ2wuY291bnRfb2JqZWN0cywgMyk7 CisKKwkvKiBNYWtlIHN1cmUgd2UgZ290IGJvdGggdGhlIGNvbm5lY3RvciBhbmQgY3J0YyBiYWNr ICovCisJZm9yIChvID0gMDsgbyA8IDM7IG8rKykKKwkJaWYgKG9iamVjdHNbb10gPT0gZGF0YS0+ Y29ubmVjdG9yX2lkKQorCQkJYnJlYWs7CisKKwlpZ3RfYXNzZXJ0X25lcShvLCAzKTsKKworCWZv ciAobyA9IDA7IG8gPCAzOyBvKyspCisJCWlmIChvYmplY3RzW29dID09IGRhdGEtPmNydGNfaWQp CisJCQlicmVhazsKKworCWlndF9hc3NlcnRfbmVxKG8sIDMpOworCisJdGVybWluYXRlX2xlYXNl KCZsZWFzZSk7Cit9CisKK3N0YXRpYyB2b2lkIGxlYXNlX3VubGVhc2VkX2NydGMoZGF0YV90ICpk YXRhKQoreworCWxlYXNlX3QgbGVhc2U7CisJZW51bSBwaXBlIHA7CisJdWludDMyX3QgYmFkX2Ny dGNfaWQ7CisJaW50IHJldDsKKworCS8qIENyZWF0ZSBhIHZhbGlkIGxlYXNlICovCisJaWd0X2Fz c2VydF9lcShtYWtlX2xlYXNlKGRhdGEsICZsZWFzZSksIDApOworCisJaWd0X2Rpc3BsYXlfaW5p dCgmbGVhc2UuZGlzcGxheSwgbGVhc2UuZmQpOworCisJLyogRmluZCBhbm90aGVyIENSVEMgdGhh dCB3ZSBkb24ndCBjb250cm9sICovCisJYmFkX2NydGNfaWQgPSAwOworCWZvciAocCA9IDA7IGJh ZF9jcnRjX2lkID09IDAgJiYgcCA8IGRhdGEtPm1hc3Rlci5kaXNwbGF5Lm5fcGlwZXM7IHArKykg eworCQlpZiAocGlwZV90b19jcnRjX2lkKCZkYXRhLT5tYXN0ZXIuZGlzcGxheSwgcCkgIT0gZGF0 YS0+Y3J0Y19pZCkKKwkJCWJhZF9jcnRjX2lkID0gcGlwZV90b19jcnRjX2lkKCZkYXRhLT5tYXN0 ZXIuZGlzcGxheSwgcCk7CisJfQorCisJLyogR2l2ZSB1cCBpZiB0aGVyZSBpc24ndCBhbm90aGVy IGNydGMgKi8KKwlpZ3Rfc2tpcF9vbihiYWRfY3J0Y19pZCA9PSAwKTsKKworCS8qIEF0dGVtcHQg dG8gdXNlIHRoZSB1bmxlYXNlZCBjcnRjIGlkLiBOb3RlIHRoYXQgdGhlCisJICogZmFpbHVyZSBo ZXJlIGlzIG5vdCBkaXJlY3RseSBmcm9tIHRoZSBrZXJuZWwgYmVjYXVzZSB0aGUKKwkgKiByZXNv dXJjZXMgcmV0dXJuZWQgZnJvbSB0aGUga2VybmVsIHdpbGwgbm90IGNvbnRhaW4gdGhpcyByZXNv dXJjZQorCSAqIGlkIGFuZCBoZW5jZSB0aGUgaWd0IGhlbHBlciBmdW5jdGlvbnMgd2lsbCBmYWls IHRvIGZpbmQgaXQKKwkgKi8KKwlyZXQgPSBwcmVwYXJlX2NydGMoJmxlYXNlLCBkYXRhLT5jb25u ZWN0b3JfaWQsIGJhZF9jcnRjX2lkKTsKKworCS8qIEVuc3VyZSB0aGUgZXhwZWN0ZWQgZXJyb3Ig aXMgcmV0dXJuZWQgKi8KKwlpZ3RfYXNzZXJ0X2VxKHJldCwgLUVOT0VOVCk7CisKKwl0ZXJtaW5h dGVfbGVhc2UoJmxlYXNlKTsKK30KKworc3RhdGljIHZvaWQgbGVhc2VfdW5sZWFzZWRfY29ubmVj dG9yKGRhdGFfdCAqZGF0YSkKK3sKKwlsZWFzZV90IGxlYXNlOworCWludCBvOworCXVpbnQzMl90 IGJhZF9jb25uZWN0b3JfaWQ7CisJaW50IHJldDsKKworCS8qIENyZWF0ZSBhIHZhbGlkIGxlYXNl ICovCisJaWd0X2Fzc2VydF9lcShtYWtlX2xlYXNlKGRhdGEsICZsZWFzZSksIDApOworCisJaWd0 X2Rpc3BsYXlfaW5pdCgmbGVhc2UuZGlzcGxheSwgbGVhc2UuZmQpOworCisJLyogRmluZCBhbm90 aGVyIGNvbm5lY3RvciB0aGF0IHdlIGRvbid0IGNvbnRyb2wgKi8KKwliYWRfY29ubmVjdG9yX2lk ID0gMDsKKwlmb3IgKG8gPSAwOyBiYWRfY29ubmVjdG9yX2lkID09IDAgJiYgbyA8IGRhdGEtPm1h c3Rlci5kaXNwbGF5Lm5fb3V0cHV0czsgbysrKSB7CisJCWlmIChkYXRhLT5tYXN0ZXIuZGlzcGxh eS5vdXRwdXRzW29dLmlkICE9IGRhdGEtPmNvbm5lY3Rvcl9pZCkKKwkJCWJhZF9jb25uZWN0b3Jf aWQgPSBkYXRhLT5tYXN0ZXIuZGlzcGxheS5vdXRwdXRzW29dLmlkOworCX0KKworCS8qIEdpdmUg dXAgaWYgdGhlcmUgaXNuJ3QgYW5vdGhlciBjb25uZWN0b3IgKi8KKwlpZ3Rfc2tpcF9vbihiYWRf Y29ubmVjdG9yX2lkID09IDApOworCisJLyogQXR0ZW1wdCB0byB1c2UgdGhlIHVubGVhc2VkIGNv bm5lY3RvciBpZC4gTm90ZSB0aGF0IHRoZQorCSAqIGZhaWx1cmUgaGVyZSBpcyBub3QgZGlyZWN0 bHkgZnJvbSB0aGUga2VybmVsIGJlY2F1c2UgdGhlCisJICogcmVzb3VyY2VzIHJldHVybmVkIGZy b20gdGhlIGtlcm5lbCB3aWxsIG5vdCBjb250YWluIHRoaXMgcmVzb3VyY2UKKwkgKiBpZCBhbmQg aGVuY2UgdGhlIGlndCBoZWxwZXIgZnVuY3Rpb25zIHdpbGwgZmFpbCB0byBmaW5kIGl0CisJICov CisJcmV0ID0gcHJlcGFyZV9jcnRjKCZsZWFzZSwgYmFkX2Nvbm5lY3Rvcl9pZCwgZGF0YS0+Y3J0 Y19pZCk7CisKKwkvKiBFbnN1cmUgdGhlIGV4cGVjdGVkIGVycm9yIGlzIHJldHVybmVkICovCisJ aWd0X2Fzc2VydF9lcShyZXQsIC1FTk9FTlQpOworCisJdGVybWluYXRlX2xlYXNlKCZsZWFzZSk7 Cit9CisKKy8qIFRlc3QgcmV2b2NhdGlvbiBvZiBsZWFzZSAqLworc3RhdGljIHZvaWQgbGVhc2Vf cmV2b2tlKGRhdGFfdCAqZGF0YSkKK3sKKwlsZWFzZV90IGxlYXNlOworCXN0cnVjdCBsb2NhbF9k cm1fbW9kZV9yZXZva2VfbGVhc2UgbXJsOworCWludCByZXQ7CisKKwkvKiBDcmVhdGUgYSB2YWxp ZCBsZWFzZSAqLworCWlndF9hc3NlcnRfZXEobWFrZV9sZWFzZShkYXRhLCAmbGVhc2UpLCAwKTsK KworCWlndF9kaXNwbGF5X2luaXQoJmxlYXNlLmRpc3BsYXksIGxlYXNlLmZkKTsKKworCS8qIFJl dm9rZSB0aGUgbGVhc2UgdXNpbmcgdGhlIG1hc3RlciBmZCAqLworCW1lbXNldCgmbXJsLCAwLCBz aXplb2YgKG1ybCkpOworCW1ybC5sZXNzZWVfaWQgPSBsZWFzZS5sZXNzZWVfaWQ7CisJaWd0X2Fz c2VydF9lcShyZXZva2VfbGVhc2UoZGF0YS0+bWFzdGVyLmZkLCAmbXJsKSwgMCk7CisKKwkvKiBU cnkgdG8gdXNlIHRoZSBsZWFzZWQgb2JqZWN0cyAqLworCXJldCA9IHByZXBhcmVfY3J0YygmbGVh c2UsIGRhdGEtPmNvbm5lY3Rvcl9pZCwgZGF0YS0+Y3J0Y19pZCk7CisKKwkvKiBFbnN1cmUgdGhh dCB0aGUgZXhwZWN0ZWQgZXJyb3IgaXMgcmV0dXJuZWQgKi8KKwlpZ3RfYXNzZXJ0X2VxKHJldCwg LUVOT0VOVCk7CisKKwl0ZXJtaW5hdGVfbGVhc2UoJmxlYXNlKTsKK30KKworLyogVGVzdCBsZWFz aW5nIG9iamVjdHMgbW9yZSB0aGFuIG9uY2UgKi8KK3N0YXRpYyB2b2lkIGxlYXNlX2FnYWluKGRh dGFfdCAqZGF0YSkKK3sKKwlsZWFzZV90IGxlYXNlX2EsIGxlYXNlX2I7CisKKwkvKiBDcmVhdGUg YSB2YWxpZCBsZWFzZSAqLworCWlndF9hc3NlcnRfZXEobWFrZV9sZWFzZShkYXRhLCAmbGVhc2Vf YSksIDApOworCisJLyogQXR0ZW1wdCB0byByZS1sZWFzZSB0aGUgc2FtZSBvYmplY3RzICovCisJ aWd0X2Fzc2VydF9lcShtYWtlX2xlYXNlKGRhdGEsICZsZWFzZV9iKSwgLUVCVVNZKTsKKworCXRl cm1pbmF0ZV9sZWFzZSgmbGVhc2VfYSk7CisKKwkvKiBOb3cgYXR0ZW1wdCB0byBsZWFzZSB0aGUg c2FtZSBvYmplY3RzICovCisJaWd0X2Fzc2VydF9lcShtYWtlX2xlYXNlKGRhdGEsICZsZWFzZV9i KSwgMCk7CisKKwl0ZXJtaW5hdGVfbGVhc2UoJmxlYXNlX2IpOworfQorCisvKiBUZXN0IGxlYXNp bmcgYW4gaW52YWxpZCBjb25uZWN0b3IgKi8KK3N0YXRpYyB2b2lkIGxlYXNlX2ludmFsaWRfY29u bmVjdG9yKGRhdGFfdCAqZGF0YSkKK3sKKwlsZWFzZV90IGxlYXNlOworCXVpbnQzMl90IHNhdmVf Y29ubmVjdG9yX2lkOworCWludCByZXQ7CisKKwkvKiBDcmVhdGUgYW4gaW52YWxpZCBsZWFzZSAq LworCXNhdmVfY29ubmVjdG9yX2lkID0gZGF0YS0+Y29ubmVjdG9yX2lkOworCWRhdGEtPmNvbm5l Y3Rvcl9pZCA9IDB4YmFhZGYwMGQ7CisJcmV0ID0gbWFrZV9sZWFzZShkYXRhLCAmbGVhc2UpOwor CWRhdGEtPmNvbm5lY3Rvcl9pZCA9IHNhdmVfY29ubmVjdG9yX2lkOworCWlndF9hc3NlcnRfZXEo cmV0LCAtRUlOVkFMKTsKK30KKworLyogVGVzdCBsZWFzaW5nIGFuIGludmFsaWQgY3J0YyAqLwor c3RhdGljIHZvaWQgbGVhc2VfaW52YWxpZF9jcnRjKGRhdGFfdCAqZGF0YSkKK3sKKwlsZWFzZV90 IGxlYXNlOworCXVpbnQzMl90IHNhdmVfY3J0Y19pZDsKKwlpbnQgcmV0OworCisJLyogQ3JlYXRl IGFuIGludmFsaWQgbGVhc2UgKi8KKwlzYXZlX2NydGNfaWQgPSBkYXRhLT5jcnRjX2lkOworCWRh dGEtPmNydGNfaWQgPSAweGJhYWRmMDBkOworCXJldCA9IG1ha2VfbGVhc2UoZGF0YSwgJmxlYXNl KTsKKwlkYXRhLT5jcnRjX2lkID0gc2F2ZV9jcnRjX2lkOworCWlndF9hc3NlcnRfZXEocmV0LCAt RUlOVkFMKTsKK30KKworCitzdGF0aWMgdm9pZCBydW5fdGVzdChkYXRhX3QgKmRhdGEsIHZvaWQg KCp0ZXN0ZnVuYykoZGF0YV90ICopKQoreworCWxlYXNlX3QgKm1hc3RlciA9ICZkYXRhLT5tYXN0 ZXI7CisJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZtYXN0ZXItPmRpc3BsYXk7CisJaWd0X291 dHB1dF90ICpvdXRwdXQ7CisJZW51bSBwaXBlIHA7CisJdW5zaWduZWQgaW50IHZhbGlkX3Rlc3Rz ID0gMDsKKworCWZvcl9lYWNoX3BpcGVfd2l0aF92YWxpZF9vdXRwdXQoZGlzcGxheSwgcCwgb3V0 cHV0KSB7CisJCWlndF9pbmZvKCJCZWdpbm5pbmcgJXMgb24gcGlwZSAlcywgY29ubmVjdG9yICVz XG4iLAorCQkJIGlndF9zdWJ0ZXN0X25hbWUoKSwKKwkJCSBrbXN0ZXN0X3BpcGVfbmFtZShwKSwK KwkJCSBpZ3Rfb3V0cHV0X25hbWUob3V0cHV0KSk7CisKKwkJZGF0YS0+cGlwZSA9IHA7CisJCWRh dGEtPmNydGNfaWQgPSBwaXBlX3RvX2NydGNfaWQoZGlzcGxheSwgcCk7CisJCWRhdGEtPmNvbm5l Y3Rvcl9pZCA9IG91dHB1dC0+aWQ7CisKKwkJdGVzdGZ1bmMoZGF0YSk7CisKKwkJaWd0X2luZm8o IlxuJXMgb24gcGlwZSAlcywgY29ubmVjdG9yICVzOiBQQVNTRURcblxuIiwKKwkJCSBpZ3Rfc3Vi dGVzdF9uYW1lKCksCisJCQkga21zdGVzdF9waXBlX25hbWUocCksCisJCQkgaWd0X291dHB1dF9u YW1lKG91dHB1dCkpOworCisJCXZhbGlkX3Rlc3RzKys7CisJfQorCisJaWd0X3JlcXVpcmVfZih2 YWxpZF90ZXN0cywKKwkJICAgICAgIm5vIHZhbGlkIGNydGMvY29ubmVjdG9yIGNvbWJpbmF0aW9u cyBmb3VuZFxuIik7Cit9CisKK2lndF9tYWluCit7CisJZGF0YV90IGRhdGE7CisJY29uc3Qgc3Ry dWN0IHsKKwkJY29uc3QgY2hhciAqbmFtZTsKKwkJdm9pZCAoKmZ1bmMpKGRhdGFfdCAqKTsKKwl9 IGZ1bmNzW10gPSB7CisJCXsgInNpbXBsZV9sZWFzZSIsIHNpbXBsZV9sZWFzZSB9LAorCQl7ICJs ZXNzZWVfbGlzdCIsIGxlc3NlZV9saXN0IH0sCisJCXsgImxlYXNlX2dldCIsIGxlYXNlX2dldCB9 LAorCQl7ICJsZWFzZV91bmxlYXNlZF9jb25uZWN0b3IiLCBsZWFzZV91bmxlYXNlZF9jb25uZWN0 b3IgfSwKKwkJeyAibGVhc2VfdW5sZWFzZWRfY3J0YyIsIGxlYXNlX3VubGVhc2VkX2NydGMgfSwK KwkJeyAibGVhc2VfcmV2b2tlIiwgbGVhc2VfcmV2b2tlIH0sCisJCXsgImxlYXNlX2FnYWluIiwg bGVhc2VfYWdhaW4gfSwKKwkJeyAibGVhc2VfaW52YWxpZF9jb25uZWN0b3IiLCBsZWFzZV9pbnZh bGlkX2Nvbm5lY3RvciB9LAorCQl7ICJsZWFzZV9pbnZhbGlkX2NydGMiLCBsZWFzZV9pbnZhbGlk X2NydGMgfSwKKwkJeyB9CisJfSwgKmY7CisKKwlpZ3Rfc2tpcF9vbl9zaW11bGF0aW9uKCk7CisK KwlpZ3RfZml4dHVyZSB7CisJCWRhdGEubWFzdGVyLmZkID0gZHJtX29wZW5fZHJpdmVyKERSSVZF Ul9BTlkpOworCQlrbXN0ZXN0X3NldF92dF9ncmFwaGljc19tb2RlKCk7CisJCWlndF9kaXNwbGF5 X2luaXQoJmRhdGEubWFzdGVyLmRpc3BsYXksIGRhdGEubWFzdGVyLmZkKTsKKwl9CisKKwlmb3Ig KGYgPSBmdW5jczsgZi0+bmFtZTsgZisrKSB7CisKKwkJaWd0X3N1YnRlc3RfZigiJXMiLCBmLT5u YW1lKSB7CisJCQlydW5fdGVzdCgmZGF0YSwgZi0+ZnVuYyk7CisJCX0KKwl9Cit9CmRpZmYgLS1n aXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29uLmJ1aWxkCmluZGV4IGIxNmZlOWE1 Li40YTliNTk0NiAxMDA2NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrIGIvdGVzdHMvbWVz b24uYnVpbGQKQEAgLTE2Nyw2ICsxNjcsNyBAQCB0ZXN0X3Byb2dzID0gWwogCSdrbXNfZnJvbnRi dWZmZXJfdHJhY2tpbmcnLAogCSdrbXNfaGRtaV9pbmplY3QnLAogCSdrbXNfaW52YWxpZF9kb3Rj bG9jaycsCisJJ2ttc19sZWFzZScsCiAJJ2ttc19sZWdhY3lfY29sb3JrZXknLAogCSdrbXNfbW1h cF93cml0ZV9jcmMnLAogCSdrbXNfbW1pb192c19jc19mbGlwJywKLS0gCjIuMTUuMQoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==