From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6673C6E7D5 for ; Wed, 17 Mar 2021 14:47:03 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Wed, 17 Mar 2021 15:45:55 +0100 Message-Id: <20210317144610.108372-21-zbigniew.kempczynski@intel.com> In-Reply-To: <20210317144610.108372-1-zbigniew.kempczynski@intel.com> References: <20210317144610.108372-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v26 20/35] tests/api_intel_bb: Modify test to verify intel_bb with 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 List-ID: aW50ZWxfYmIgd2FzIGFkb3B0ZWQgdG8gdXNlIGFsbG9jYXRvci4gQ2hhbmdlIHRoZSB0ZXN0IHRv IHZlcmlmeQphZGRyZXNzZXMgaW4gZGlmZmVyZW50IHNjZW5hcmlvcyAtIHdpdGggcmVsb2NhdGlv bnMgYW5kIHdpdGggc29mdHBpbi4KCnYyOiBhZGRpbmcgaW50ZWwtYnVmIHRvIGludGVsLWJiIGlu c2VydHMgYWRkcmVzc2VzIHNvIHRoZXkgc2hvdWxkCiAgICBiZSBzYW1lIGV2ZW4gaWYgaW50ZWwt YmIgY2FjaGUgcHVyZ2Ugd2FzIGNhbGxlZAoKU2lnbmVkLW9mZi1ieTogWmJpZ25pZXcgS2VtcGN6 ecWEc2tpIDx6Ymlnbmlldy5rZW1wY3p5bnNraUBpbnRlbC5jb20+CkNjOiBEb21pbmlrIEdyemVn b3J6ZWsgPGRvbWluaWsuZ3J6ZWdvcnpla0BpbnRlbC5jb20+CkNjOiBDaHJpcyBXaWxzb24gPGNo cmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiB0ZXN0cy9pOTE1L2FwaV9pbnRlbF9iYi5jIHwg NDgwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgMzcxIGluc2VydGlvbnMoKyksIDEwOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90ZXN0 cy9pOTE1L2FwaV9pbnRlbF9iYi5jIGIvdGVzdHMvaTkxNS9hcGlfaW50ZWxfYmIuYwppbmRleCAz YTIxNzZiNTcuLjI5ZDRkZDdiNiAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9hcGlfaW50ZWxfYmIu YworKysgYi90ZXN0cy9pOTE1L2FwaV9pbnRlbF9iYi5jCkBAIC0yMiw2ICsyMiw3IEBACiAgKi8K IAogI2luY2x1ZGUgImlndC5oIgorI2luY2x1ZGUgImk5MTUvZ2VtLmgiCiAjaW5jbHVkZSA8dW5p c3RkLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTk0LDYg Kzk1LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tfYnVmKHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgdWlu dDhfdCBjb2xvcikKIAogCXB0ciA9IGdlbV9tbWFwX19kZXZpY2VfY29oZXJlbnQoaTkxNSwgYnVm LT5oYW5kbGUsIDAsCiAJCQkJCWJ1Zi0+c3VyZmFjZVswXS5zaXplLCBQUk9UX1JFQUQpOworCWdl bV9zZXRfZG9tYWluKGk5MTUsIGJ1Zi0+aGFuZGxlLCBJOTE1X0dFTV9ET01BSU5fV0MsIDApOwog CiAJZm9yIChpID0gMDsgaSA8IGJ1Zi0+c3VyZmFjZVswXS5zaXplOyBpKyspCiAJCWlndF9hc3Nl cnQocHRyW2ldID09IGNvbG9yKTsKQEAgLTEyMywyNCArMTI1LDM0IEBAIHN0YXRpYyB2b2lkIHBy aW50X2J1ZihzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIGNvbnN0IGNoYXIgKm5hbWUpCiAKIAlwdHIg PSBnZW1fbW1hcF9fZGV2aWNlX2NvaGVyZW50KGk5MTUsIGJ1Zi0+aGFuZGxlLCAwLAogCQkJCQli dWYtPnN1cmZhY2VbMF0uc2l6ZSwgUFJPVF9SRUFEKTsKLQlpZ3RfZGVidWcoIlslc10gQnVmIGhh bmRsZTogJWQsIHNpemU6ICUiIFBSSXg2NCAiLCB2OiAweCUwMngsIHByZXN1bWVkX2FkZHI6ICVw XG4iLAorCWlndF9kZWJ1ZygiWyVzXSBCdWYgaGFuZGxlOiAlZCwgc2l6ZTogJSIgUFJJdTY0CisJ CSAgIiwgdjogMHglMDJ4LCBwcmVzdW1lZF9hZGRyOiAlcFxuIiwKIAkJICBuYW1lLCBidWYtPmhh bmRsZSwgYnVmLT5zdXJmYWNlWzBdLnNpemUsIHB0clswXSwKIAkJICBmcm9tX3VzZXJfcG9pbnRl cihidWYtPmFkZHIub2Zmc2V0KSk7CiAJbXVubWFwKHB0ciwgYnVmLT5zdXJmYWNlWzBdLnNpemUp OwogfQogCitzdGF0aWMgdm9pZCByZXNldF9iYihzdHJ1Y3QgYnVmX29wcyAqYm9wcykKK3sKKwlp bnQgaTkxNSA9IGJ1Zl9vcHNfZ2V0X2ZkKGJvcHMpOworCXN0cnVjdCBpbnRlbF9iYiAqaWJiOwor CisJaWJiID0gaW50ZWxfYmJfY3JlYXRlKGk5MTUsIFBBR0VfU0laRSk7CisJaW50ZWxfYmJfcmVz ZXQoaWJiLCBmYWxzZSk7CisJaW50ZWxfYmJfZGVzdHJveShpYmIpOworfQorCiBzdGF0aWMgdm9p ZCBzaW1wbGVfYmIoc3RydWN0IGJ1Zl9vcHMgKmJvcHMsIGJvb2wgdXNlX2NvbnRleHQpCiB7CiAJ aW50IGk5MTUgPSBidWZfb3BzX2dldF9mZChib3BzKTsKIAlzdHJ1Y3QgaW50ZWxfYmIgKmliYjsK LQl1aW50MzJfdCBjdHg7CisJdWludDMyX3QgY3R4ID0gMDsKIAotCWlmICh1c2VfY29udGV4dCkg eworCWlmICh1c2VfY29udGV4dCkKIAkJZ2VtX3JlcXVpcmVfY29udGV4dHMoaTkxNSk7Ci0JCWN0 eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShpOTE1KTsKLQl9CiAKLQlpYmIgPSBpbnRlbF9iYl9jcmVh dGUoaTkxNSwgUEFHRV9TSVpFKTsKKwlpYmIgPSBpbnRlbF9iYl9jcmVhdGVfd2l0aF9hbGxvY2F0 b3IoaTkxNSwgY3R4LCBQQUdFX1NJWkUsCisJCQkJCSAgICAgSU5URUxfQUxMT0NBVE9SX1NJTVBM RSk7CiAJaWYgKGRlYnVnX2JiKQogCQlpbnRlbF9iYl9zZXRfZGVidWcoaWJiLCB0cnVlKTsKIApA QCAtMTU1LDEwICsxNjcsOCBAQCBzdGF0aWMgdm9pZCBzaW1wbGVfYmIoc3RydWN0IGJ1Zl9vcHMg KmJvcHMsIGJvb2wgdXNlX2NvbnRleHQpCiAJaW50ZWxfYmJfcmVzZXQoaWJiLCBmYWxzZSk7CiAJ aW50ZWxfYmJfcmVzZXQoaWJiLCB0cnVlKTsKIAotCWludGVsX2JiX291dChpYmIsIE1JX0JBVENI X0JVRkZFUl9FTkQpOwotCWludGVsX2JiX3B0cl9hbGlnbihpYmIsIDgpOwotCiAJaWYgKHVzZV9j b250ZXh0KSB7CisJCWN0eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShpOTE1KTsKIAkJaW50ZWxfYmJf ZGVzdHJveShpYmIpOwogCQlpYmIgPSBpbnRlbF9iYl9jcmVhdGVfd2l0aF9jb250ZXh0KGk5MTUs IGN0eCwgUEFHRV9TSVpFKTsKIAkJaW50ZWxfYmJfb3V0KGliYiwgTUlfQkFUQ0hfQlVGRkVSX0VO RCk7CkBAIC0xNjYsMTEgKzE3NiwxMCBAQCBzdGF0aWMgdm9pZCBzaW1wbGVfYmIoc3RydWN0IGJ1 Zl9vcHMgKmJvcHMsIGJvb2wgdXNlX2NvbnRleHQpCiAJCWludGVsX2JiX2V4ZWMoaWJiLCBpbnRl bF9iYl9vZmZzZXQoaWJiKSwKIAkJCSAgICAgIEk5MTVfRVhFQ19ERUZBVUxUIHwgSTkxNV9FWEVD X05PX1JFTE9DLAogCQkJICAgICAgdHJ1ZSk7CisJCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwg Y3R4KTsKIAl9CiAKIAlpbnRlbF9iYl9kZXN0cm95KGliYik7Ci0JaWYgKHVzZV9jb250ZXh0KQot CQlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGN0eCk7CiB9CiAKIC8qCkBAIC0xOTQsMTYgKzIw MywyMCBAQCBzdGF0aWMgdm9pZCBsb3Rfb2ZfYnVmZmVycyhzdHJ1Y3QgYnVmX29wcyAqYm9wcykK IAlmb3IgKGkgPSAwOyBpIDwgTlVNX0JVRlM7IGkrKykgewogCQlidWZbaV0gPSBpbnRlbF9idWZf Y3JlYXRlKGJvcHMsIDQwOTYsIDEsIDgsIDAsIEk5MTVfVElMSU5HX05PTkUsCiAJCQkJCSAgSTkx NV9DT01QUkVTU0lPTl9OT05FKTsKLQkJaW50ZWxfYmJfYWRkX2ludGVsX2J1ZihpYmIsIGJ1Zltp XSwgZmFsc2UpOworCQlpZiAoaSAlIDIpCisJCQlpbnRlbF9iYl9hZGRfaW50ZWxfYnVmKGliYiwg YnVmW2ldLCBmYWxzZSk7CisJCWVsc2UKKwkJCWludGVsX2JiX2FkZF9pbnRlbF9idWZfd2l0aF9h bGlnbm1lbnQoaWJiLCBidWZbaV0sCisJCQkJCQkJICAgICAgMHg0MDAwLCBmYWxzZSk7CiAJfQog CiAJaW50ZWxfYmJfZXhlYyhpYmIsIGludGVsX2JiX29mZnNldChpYmIpLAogCQkgICAgICBJOTE1 X0VYRUNfREVGQVVMVCB8IEk5MTVfRVhFQ19OT19SRUxPQywgdHJ1ZSk7CiAKLQlpbnRlbF9iYl9k ZXN0cm95KGliYik7Ci0KIAlmb3IgKGkgPSAwOyBpIDwgTlVNX0JVRlM7IGkrKykKIAkJaW50ZWxf YnVmX2Rlc3Ryb3koYnVmW2ldKTsKKworCWludGVsX2JiX2Rlc3Ryb3koaWJiKTsKIH0KIAogLyoK QEAgLTI5OCw3MCArMzExLDI4NyBAQCBzdGF0aWMgdm9pZCByZXNldF9mbGFncyhzdHJ1Y3QgYnVm X29wcyAqYm9wcykKIAlpbnRlbF9iYl9kZXN0cm95KGliYik7CiB9CiAKK3N0YXRpYyB2b2lkIGFk ZF9yZW1vdmVfb2JqZWN0cyhzdHJ1Y3QgYnVmX29wcyAqYm9wcykKK3sKKwlpbnQgaTkxNSA9IGJ1 Zl9vcHNfZ2V0X2ZkKGJvcHMpOworCXN0cnVjdCBpbnRlbF9iYiAqaWJiOworCXN0cnVjdCBpbnRl bF9idWYgKnNyYywgKm1pZCwgKmRzdDsKKwl1aW50MzJfdCBvZmZzZXQ7CisJY29uc3QgdWludDMy X3Qgd2lkdGggPSA1MTI7CisJY29uc3QgdWludDMyX3QgaGVpZ2h0ID0gNTEyOwogCi0jZGVmaW5l IE1JX0ZMVVNIX0RXICgweDI2PDwyMykKLSNkZWZpbmUgQkNTX1NXQ1RSTCAgMHgyMjIwMAotI2Rl ZmluZSBCQ1NfU1JDX1kgICAoMSA8PCAwKQotI2RlZmluZSBCQ1NfRFNUX1kgICAoMSA8PCAxKQot c3RhdGljIHZvaWQgX19lbWl0X2JsaXQoc3RydWN0IGludGVsX2JiICppYmIsCi0JCQlzdHJ1Y3Qg aW50ZWxfYnVmICpzcmMsIHN0cnVjdCBpbnRlbF9idWYgKmRzdCkKKwlpYmIgPSBpbnRlbF9iYl9j cmVhdGUoaTkxNSwgUEFHRV9TSVpFKTsKKwlpZiAoZGVidWdfYmIpCisJCWludGVsX2JiX3NldF9k ZWJ1ZyhpYmIsIHRydWUpOworCisJc3JjID0gaW50ZWxfYnVmX2NyZWF0ZShib3BzLCB3aWR0aCwg aGVpZ2h0LCAzMiwgMCwKKwkJCSAgICAgICBJOTE1X1RJTElOR19OT05FLCBJOTE1X0NPTVBSRVNT SU9OX05PTkUpOworCW1pZCA9IGludGVsX2J1Zl9jcmVhdGUoYm9wcywgd2lkdGgsIGhlaWdodCwg MzIsIDAsCisJCQkgICAgICAgSTkxNV9USUxJTkdfTk9ORSwgSTkxNV9DT01QUkVTU0lPTl9OT05F KTsKKwlkc3QgPSBpbnRlbF9idWZfY3JlYXRlKGJvcHMsIHdpZHRoLCBoZWlnaHQsIDMyLCAwLAor CQkJICAgICAgIEk5MTVfVElMSU5HX05PTkUsIEk5MTVfQ09NUFJFU1NJT05fTk9ORSk7CisKKwlp bnRlbF9iYl9hZGRfaW50ZWxfYnVmKGliYiwgc3JjLCBmYWxzZSk7CisJaW50ZWxfYmJfYWRkX2lu dGVsX2J1ZihpYmIsIG1pZCwgdHJ1ZSk7CisJaW50ZWxfYmJfcmVtb3ZlX2ludGVsX2J1ZihpYmIs IG1pZCk7CisJaW50ZWxfYmJfcmVtb3ZlX2ludGVsX2J1ZihpYmIsIG1pZCk7CisJaW50ZWxfYmJf cmVtb3ZlX2ludGVsX2J1ZihpYmIsIG1pZCk7CisJaW50ZWxfYmJfYWRkX2ludGVsX2J1ZihpYmIs IGRzdCwgdHJ1ZSk7CisKKwlvZmZzZXQgPSBpbnRlbF9iYl9lbWl0X2JiZShpYmIpOworCWludGVs X2JiX2V4ZWMoaWJiLCBvZmZzZXQsCisJCSAgICAgIEk5MTVfRVhFQ19ERUZBVUxUIHwgSTkxNV9F WEVDX05PX1JFTE9DLCB0cnVlKTsKKworCWludGVsX2J1Zl9kZXN0cm95KHNyYyk7CisJaW50ZWxf YnVmX2Rlc3Ryb3kobWlkKTsKKwlpbnRlbF9idWZfZGVzdHJveShkc3QpOworCWludGVsX2JiX2Rl c3Ryb3koaWJiKTsKK30KKworc3RhdGljIHZvaWQgZGVzdHJveV9iYihzdHJ1Y3QgYnVmX29wcyAq Ym9wcykKIHsKLQl1aW50MzJfdCBtYXNrOwotCWJvb2wgaGFzXzY0Yl9yZWxvYzsKLQl1aW50NjRf dCBhZGRyZXNzOwotCi0JaGFzXzY0Yl9yZWxvYyA9IGliYi0+Z2VuID49IDg7Ci0KLQlpZiAoKHNy Yy0+dGlsaW5nIHwgZHN0LT50aWxpbmcpID49IEk5MTVfVElMSU5HX1kpIHsKLQkJaW50ZWxfYmJf b3V0KGliYiwgTUlfTE9BRF9SRUdJU1RFUl9JTU0pOwotCQlpbnRlbF9iYl9vdXQoaWJiLCBCQ1Nf U1dDVFJMKTsKLQotCQltYXNrID0gKEJDU19TUkNfWSB8IEJDU19EU1RfWSkgPDwgMTY7Ci0JCWlm IChzcmMtPnRpbGluZyA9PSBJOTE1X1RJTElOR19ZKQotCQkJbWFzayB8PSBCQ1NfU1JDX1k7Ci0J CWlmIChkc3QtPnRpbGluZyA9PSBJOTE1X1RJTElOR19ZKQotCQkJbWFzayB8PSBCQ1NfRFNUX1k7 Ci0JCWludGVsX2JiX291dChpYmIsIG1hc2spOworCWludCBpOTE1ID0gYnVmX29wc19nZXRfZmQo Ym9wcyk7CisJc3RydWN0IGludGVsX2JiICppYmI7CisJc3RydWN0IGludGVsX2J1ZiAqc3JjLCAq bWlkLCAqZHN0OworCXVpbnQzMl90IG9mZnNldDsKKwljb25zdCB1aW50MzJfdCB3aWR0aCA9IDUx MjsKKwljb25zdCB1aW50MzJfdCBoZWlnaHQgPSA1MTI7CisKKwlpYmIgPSBpbnRlbF9iYl9jcmVh dGUoaTkxNSwgUEFHRV9TSVpFKTsKKwlpZiAoZGVidWdfYmIpCisJCWludGVsX2JiX3NldF9kZWJ1 ZyhpYmIsIHRydWUpOworCisJc3JjID0gaW50ZWxfYnVmX2NyZWF0ZShib3BzLCB3aWR0aCwgaGVp Z2h0LCAzMiwgMCwKKwkJCSAgICAgICBJOTE1X1RJTElOR19OT05FLCBJOTE1X0NPTVBSRVNTSU9O X05PTkUpOworCW1pZCA9IGludGVsX2J1Zl9jcmVhdGUoYm9wcywgd2lkdGgsIGhlaWdodCwgMzIs IDAsCisJCQkgICAgICAgSTkxNV9USUxJTkdfTk9ORSwgSTkxNV9DT01QUkVTU0lPTl9OT05FKTsK Kwlkc3QgPSBpbnRlbF9idWZfY3JlYXRlKGJvcHMsIHdpZHRoLCBoZWlnaHQsIDMyLCAwLAorCQkJ ICAgICAgIEk5MTVfVElMSU5HX05PTkUsIEk5MTVfQ09NUFJFU1NJT05fTk9ORSk7CisKKwlpbnRl bF9iYl9hZGRfaW50ZWxfYnVmKGliYiwgc3JjLCBmYWxzZSk7CisJaW50ZWxfYmJfYWRkX2ludGVs X2J1ZihpYmIsIG1pZCwgdHJ1ZSk7CisJaW50ZWxfYmJfYWRkX2ludGVsX2J1ZihpYmIsIGRzdCwg dHJ1ZSk7CisKKwlvZmZzZXQgPSBpbnRlbF9iYl9lbWl0X2JiZShpYmIpOworCWludGVsX2JiX2V4 ZWMoaWJiLCBvZmZzZXQsCisJCSAgICAgIEk5MTVfRVhFQ19ERUZBVUxUIHwgSTkxNV9FWEVDX05P X1JFTE9DLCB0cnVlKTsKKworCS8qIENoZWNrIGRlc3Ryb3kgd2lsbCBkZXRhY2ggaW50ZWxfYnVm cyAqLworCWludGVsX2JiX2Rlc3Ryb3koaWJiKTsKKwlpZ3RfYXNzZXJ0KHNyYy0+YWRkci5vZmZz ZXQgPT0gSU5URUxfQlVGX0lOVkFMSURfQUREUkVTUyk7CisJaWd0X2Fzc2VydChzcmMtPmliYiA9 PSBOVUxMKTsKKwlpZ3RfYXNzZXJ0KG1pZC0+YWRkci5vZmZzZXQgPT0gSU5URUxfQlVGX0lOVkFM SURfQUREUkVTUyk7CisJaWd0X2Fzc2VydChtaWQtPmliYiA9PSBOVUxMKTsKKwlpZ3RfYXNzZXJ0 KGRzdC0+YWRkci5vZmZzZXQgPT0gSU5URUxfQlVGX0lOVkFMSURfQUREUkVTUyk7CisJaWd0X2Fz c2VydChkc3QtPmliYiA9PSBOVUxMKTsKKworCWliYiA9IGludGVsX2JiX2NyZWF0ZShpOTE1LCBQ QUdFX1NJWkUpOworCWlmIChkZWJ1Z19iYikKKwkJaW50ZWxfYmJfc2V0X2RlYnVnKGliYiwgdHJ1 ZSk7CisKKwlpbnRlbF9iYl9hZGRfaW50ZWxfYnVmKGliYiwgc3JjLCBmYWxzZSk7CisJb2Zmc2V0 ID0gaW50ZWxfYmJfZW1pdF9iYmUoaWJiKTsKKwlpbnRlbF9iYl9leGVjKGliYiwgb2Zmc2V0LAor CQkgICAgICBJOTE1X0VYRUNfREVGQVVMVCB8IEk5MTVfRVhFQ19OT19SRUxPQywgdHJ1ZSk7CisK KwlpbnRlbF9iYl9kZXN0cm95KGliYik7CisJaW50ZWxfYnVmX2Rlc3Ryb3koc3JjKTsKKwlpbnRl bF9idWZfZGVzdHJveShtaWQpOworCWludGVsX2J1Zl9kZXN0cm95KGRzdCk7Cit9CisKK3N0YXRp YyB2b2lkIG9iamVjdF9yZWxvYyhzdHJ1Y3QgYnVmX29wcyAqYm9wcywgZW51bSBvYmpfY2FjaGVf b3BzIGNhY2hlX29wKQoreworCWludCBpOTE1ID0gYnVmX29wc19nZXRfZmQoYm9wcyk7CisJc3Ry dWN0IGludGVsX2JiICppYmI7CisJdWludDMyX3QgaDEsIGgyOworCXVpbnQ2NF90IHBvZmZfYmIs IHBvZmZfaDEsIHBvZmZfaDI7CisJdWludDY0X3QgcG9mZjJfYmIsIHBvZmYyX2gxLCBwb2ZmMl9o MjsKKwl1aW50NjRfdCBmbGFncyA9IDA7CisJdWludDY0X3Qgc2hpZnQgPSBjYWNoZV9vcCA9PSBQ VVJHRV9DQUNIRSA/IDB4MjAwMCA6IDB4MDsKKwlib29sIHB1cmdlX2NhY2hlID0gY2FjaGVfb3Ag PT0gUFVSR0VfQ0FDSEUgPyB0cnVlIDogZmFsc2U7CisKKwlpYmIgPSBpbnRlbF9iYl9jcmVhdGVf d2l0aF9yZWxvY3MoaTkxNSwgUEFHRV9TSVpFKTsKKwlpZiAoZGVidWdfYmIpCisJCWludGVsX2Ji X3NldF9kZWJ1ZyhpYmIsIHRydWUpOworCisJaDEgPSBnZW1fY3JlYXRlKGk5MTUsIFBBR0VfU0la RSk7CisJaDIgPSBnZW1fY3JlYXRlKGk5MTUsIFBBR0VfU0laRSk7CisKKwkvKiBpbnRlbF9iYl9j cmVhdGUgYWRkcyBiYiBoYW5kbGUgc28gaXQgaGFzIDAgZm9yIHJlbG9jcyAqLworCXBvZmZfYmIg PSBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNldChpYmIsIGliYi0+aGFuZGxlKTsKKwlpZ3RfYXNz ZXJ0KHBvZmZfYmIgPT0gMCk7CisKKwkvKiBCZWZvcmUgYWRkaW5nIHRvIGludGVsX2JiIGl0IHNo b3VsZCByZXR1cm4gSU5WQUxJRF9BRERSRVNTICovCisJcG9mZl9oMSA9IGludGVsX2JiX2dldF9v YmplY3Rfb2Zmc2V0KGliYiwgaDEpOworCXBvZmZfaDIgPSBpbnRlbF9iYl9nZXRfb2JqZWN0X29m ZnNldChpYmIsIGgyKTsKKwlpZ3RfZGVidWcoIlsxXSBwb2ZmX2gxOiAlbHhcbiIsIChsb25nKSBw b2ZmX2gxKTsKKwlpZ3RfZGVidWcoIlsxXSBwb2ZmX2gyOiAlbHhcbiIsIChsb25nKSBwb2ZmX2gy KTsKKwlpZ3RfYXNzZXJ0KHBvZmZfaDEgPT0gSU5URUxfQlVGX0lOVkFMSURfQUREUkVTUyk7CisJ aWd0X2Fzc2VydChwb2ZmX2gyID09IElOVEVMX0JVRl9JTlZBTElEX0FERFJFU1MpOworCisJaW50 ZWxfYmJfYWRkX29iamVjdChpYmIsIGgxLCBQQUdFX1NJWkUsIHBvZmZfaDEsIDAsIHRydWUpOwor CWludGVsX2JiX2FkZF9vYmplY3QoaWJiLCBoMiwgUEFHRV9TSVpFLCBwb2ZmX2gyLCAweDIwMDAs IHRydWUpOworCisJLyoKKwkgKiBPYmplY3RzIHdlcmUgYWRkZWQgdG8gYmIsIHdlIGV4cGVjdCBp bml0aWFsIGFkZHJlc3NlcyBhcmUgemVyb2VkCisJICogZm9yIHJlbG9jcy4KKwkgKi8KKwlwb2Zm X2gxID0gaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoaWJiLCBoMSk7CisJcG9mZl9oMiA9IGlu dGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0KGliYiwgaDIpOworCWlndF9hc3NlcnQocG9mZl9oMSA9 PSAwKTsKKwlpZ3RfYXNzZXJ0KHBvZmZfaDIgPT0gMCk7CisKKwlpbnRlbF9iYl9lbWl0X2JiZShp YmIpOworCWludGVsX2JiX2V4ZWMoaWJiLCBpbnRlbF9iYl9vZmZzZXQoaWJiKSwgZmxhZ3MsIGZh bHNlKTsKKworCXBvZmYyX2JiID0gaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoaWJiLCBpYmIt PmhhbmRsZSk7CisJcG9mZjJfaDEgPSBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNldChpYmIsIGgx KTsKKwlwb2ZmMl9oMiA9IGludGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0KGliYiwgaDIpOworCWln dF9kZWJ1ZygiWzJdIHBvZmYyX2gxOiAlbHhcbiIsIChsb25nKSBwb2ZmMl9oMSk7CisJaWd0X2Rl YnVnKCJbMl0gcG9mZjJfaDI6ICVseFxuIiwgKGxvbmcpIHBvZmYyX2gyKTsKKwkvKiBTb21lIGFk ZHJlc3NlcyB3b24ndCBiZSAwICovCisJaWd0X2Fzc2VydChwb2ZmMl9iYiB8IHBvZmYyX2gxIHwg cG9mZjJfaDIpOworCisJaW50ZWxfYmJfcmVzZXQoaWJiLCBwdXJnZV9jYWNoZSk7CisKKwlpZiAo cHVyZ2VfY2FjaGUpIHsKKwkJaW50ZWxfYmJfYWRkX29iamVjdChpYmIsIGgxLCBQQUdFX1NJWkUs IHBvZmYyX2gxLCAwLCB0cnVlKTsKKwkJaW50ZWxfYmJfYWRkX29iamVjdChpYmIsIGgyLCBQQUdF X1NJWkUsIHBvZmYyX2gyICsgc2hpZnQsIDB4MjAwMCwgdHJ1ZSk7CiAJfQogCi0JaW50ZWxfYmJf b3V0KGliYiwKLQkJICAgICBYWV9TUkNfQ09QWV9CTFRfQ01EIHwKLQkJICAgICBYWV9TUkNfQ09Q WV9CTFRfV1JJVEVfQUxQSEEgfAotCQkgICAgIFhZX1NSQ19DT1BZX0JMVF9XUklURV9SR0IgfAot CQkgICAgICg2ICsgMiAqIGhhc182NGJfcmVsb2MpKTsKLQlpbnRlbF9iYl9vdXQoaWJiLCAzIDw8 IDI0IHwgMHhjYyA8PCAxNiB8IGRzdC0+c3VyZmFjZVswXS5zdHJpZGUpOwotCWludGVsX2JiX291 dChpYmIsIDApOwotCWludGVsX2JiX291dChpYmIsIGludGVsX2J1Zl9oZWlnaHQoZHN0KSA8PCAx NiB8IGludGVsX2J1Zl93aWR0aChkc3QpKTsKKwlwb2ZmX2JiID0gaW50ZWxfYmJfZ2V0X29iamVj dF9vZmZzZXQoaWJiLCBpYmItPmhhbmRsZSk7CisJcG9mZl9oMSA9IGludGVsX2JiX2dldF9vYmpl Y3Rfb2Zmc2V0KGliYiwgaDEpOworCXBvZmZfaDIgPSBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNl dChpYmIsIGgyKTsKKwlpZ3RfZGVidWcoIlszXSBwb2ZmX2gxOiAlbHhcbiIsIChsb25nKSBwb2Zm X2gxKTsKKwlpZ3RfZGVidWcoIlszXSBwb2ZmX2gyOiAlbHhcbiIsIChsb25nKSBwb2ZmX2gyKTsK KwlpZ3RfZGVidWcoIlszXSBwb2ZmMl9oMTogJWx4XG4iLCAobG9uZykgcG9mZjJfaDEpOworCWln dF9kZWJ1ZygiWzNdIHBvZmYyX2gyOiAlbHggKyBzaGlmdCAoJWx4KVxuIiwgKGxvbmcpIHBvZmYy X2gyLAorCQkgKGxvbmcpIHNoaWZ0KTsKKwlpZ3RfYXNzZXJ0KHBvZmZfaDEgPT0gcG9mZjJfaDEp OworCWlndF9hc3NlcnQocG9mZl9oMiA9PSBwb2ZmMl9oMiArIHNoaWZ0KTsKKwlpbnRlbF9iYl9l bWl0X2JiZShpYmIpOworCWludGVsX2JiX2V4ZWMoaWJiLCBpbnRlbF9iYl9vZmZzZXQoaWJiKSwg ZmxhZ3MsIGZhbHNlKTsKIAotCWFkZHJlc3MgPSBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNldChp YmIsIGRzdC0+aGFuZGxlKTsKLQlpbnRlbF9iYl9lbWl0X3JlbG9jX2ZlbmNlZChpYmIsIGRzdC0+ aGFuZGxlLAotCQkJCSAgIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIsCi0JCQkJICAgSTkxNV9HRU1f RE9NQUlOX1JFTkRFUiwKLQkJCQkgICAwLCBhZGRyZXNzKTsKLQlpbnRlbF9iYl9vdXQoaWJiLCAw KTsKLQlpbnRlbF9iYl9vdXQoaWJiLCBzcmMtPnN1cmZhY2VbMF0uc3RyaWRlKTsKKwlnZW1fY2xv c2UoaTkxNSwgaDEpOworCWdlbV9jbG9zZShpOTE1LCBoMik7CisJaW50ZWxfYmJfZGVzdHJveShp YmIpOworfQogCi0JYWRkcmVzcyA9IGludGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0KGliYiwgc3Jj LT5oYW5kbGUpOwotCWludGVsX2JiX2VtaXRfcmVsb2NfZmVuY2VkKGliYiwgc3JjLT5oYW5kbGUs Ci0JCQkJICAgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwgMCwKLQkJCQkgICAwLCBhZGRyZXNzKTsK KyNkZWZpbmUgV0lUSElOX1JBTkdFKG9mZnNldCwgc3RhcnQsIGVuZCkgXAorCShERUNBTk9OSUNB TChvZmZzZXQpID49IHN0YXJ0ICYmIERFQ0FOT05JQ0FMKG9mZnNldCkgPD0gZW5kKQorc3RhdGlj IHZvaWQgb2JqZWN0X25vcmVsb2Moc3RydWN0IGJ1Zl9vcHMgKmJvcHMsIGVudW0gb2JqX2NhY2hl X29wcyBjYWNoZV9vcCwKKwkJCSAgIHVpbnQ4X3QgYWxsb2NhdG9yX3R5cGUpCit7CisJaW50IGk5 MTUgPSBidWZfb3BzX2dldF9mZChib3BzKTsKKwlzdHJ1Y3QgaW50ZWxfYmIgKmliYjsKKwl1aW50 MzJfdCBoMSwgaDI7CisJdWludDY0X3Qgc3RhcnQsIGVuZDsKKwl1aW50NjRfdCBwb2ZmX2JiLCBw b2ZmX2gxLCBwb2ZmX2gyOworCXVpbnQ2NF90IHBvZmYyX2JiLCBwb2ZmMl9oMSwgcG9mZjJfaDI7 CisJdWludDY0X3QgZmxhZ3MgPSAwOworCWJvb2wgcHVyZ2VfY2FjaGUgPSBjYWNoZV9vcCA9PSBQ VVJHRV9DQUNIRSA/IHRydWUgOiBmYWxzZTsKIAotCWlmICgoc3JjLT50aWxpbmcgfCBkc3QtPnRp bGluZykgPj0gSTkxNV9USUxJTkdfWSkgewotCQlpZ3RfYXNzZXJ0KGliYi0+Z2VuID49IDYpOwot CQlpbnRlbF9iYl9vdXQoaWJiLCBNSV9GTFVTSF9EVyB8IDIpOwotCQlpbnRlbF9iYl9vdXQoaWJi LCAwKTsKLQkJaW50ZWxfYmJfb3V0KGliYiwgMCk7Ci0JCWludGVsX2JiX291dChpYmIsIDApOwor CWlndF9yZXF1aXJlKGdlbV91c2VzX2Z1bGxfcHBndHQoaTkxNSkpOwogCi0JCWludGVsX2JiX291 dChpYmIsIE1JX0xPQURfUkVHSVNURVJfSU1NKTsKLQkJaW50ZWxfYmJfb3V0KGliYiwgQkNTX1NX Q1RSTCk7Ci0JCWludGVsX2JiX291dChpYmIsIChCQ1NfU1JDX1kgfCBCQ1NfRFNUX1kpIDw8IDE2 KTsKKwlpYmIgPSBpbnRlbF9iYl9jcmVhdGVfd2l0aF9hbGxvY2F0b3IoaTkxNSwgMCwgUEFHRV9T SVpFLCBhbGxvY2F0b3JfdHlwZSk7CisJaWYgKGRlYnVnX2JiKQorCQlpbnRlbF9iYl9zZXRfZGVi dWcoaWJiLCB0cnVlKTsKKworCWgxID0gZ2VtX2NyZWF0ZShpOTE1LCBQQUdFX1NJWkUpOworCWgy ID0gZ2VtX2NyZWF0ZShpOTE1LCBQQUdFX1NJWkUpOworCisJaW50ZWxfYWxsb2NhdG9yX2dldF9h ZGRyZXNzX3JhbmdlKGliYi0+YWxsb2NhdG9yX2hhbmRsZSwKKwkJCQkJICAmc3RhcnQsICZlbmQp OworCXBvZmZfYmIgPSBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNldChpYmIsIGliYi0+aGFuZGxl KTsKKwlpZ3RfZGVidWcoIlsxXSBiYiBwcmVzdW1lZCBvZmZzZXQ6IDB4JSIgUFJJeDY0CisJCSAg Iiwgc3RhcnQ6ICUiIFBSSXg2NCAiLCBlbmQ6ICUiIFBSSXg2NCAiXG4iLAorCQkgIHBvZmZfYmIs IHN0YXJ0LCBlbmQpOworCWlndF9hc3NlcnQoV0lUSElOX1JBTkdFKHBvZmZfYmIsIHN0YXJ0LCBl bmQpKTsKKworCS8qIEJlZm9yZSBhZGRpbmcgdG8gaW50ZWxfYmIgaXQgc2hvdWxkIHJldHVybiBJ TlZBTElEX0FERFJFU1MgKi8KKwlwb2ZmX2gxID0gaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQo aWJiLCBoMSk7CisJcG9mZl9oMiA9IGludGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0KGliYiwgaDIp OworCWlndF9kZWJ1ZygiWzFdIGgxIHByZXN1bWVkIG9mZnNldDogMHglIlBSSXg2NCJcbiIsIHBv ZmZfaDEpOworCWlndF9kZWJ1ZygiWzFdIGgyIHByZXN1bWVkIG9mZnNldDogMHglIlBSSXg2NCJc biIsIHBvZmZfaDIpOworCWlndF9hc3NlcnQocG9mZl9oMSA9PSBJTlRFTF9CVUZfSU5WQUxJRF9B RERSRVNTKTsKKwlpZ3RfYXNzZXJ0KHBvZmZfaDIgPT0gSU5URUxfQlVGX0lOVkFMSURfQUREUkVT Uyk7CisKKwlpbnRlbF9iYl9hZGRfb2JqZWN0KGliYiwgaDEsIFBBR0VfU0laRSwgcG9mZl9oMSwg MCwgdHJ1ZSk7CisJaW50ZWxfYmJfYWRkX29iamVjdChpYmIsIGgyLCBQQUdFX1NJWkUsIHBvZmZf aDIsIDAsIHRydWUpOworCisJcG9mZl9oMSA9IGludGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0KGli YiwgaDEpOworCXBvZmZfaDIgPSBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNldChpYmIsIGgyKTsK KwlpZ3RfZGVidWcoIlsyXSBiYiBwcmVzdW1lZCBvZmZzZXQ6IDB4JSJQUkl4NjQiXG4iLCBwb2Zm X2JiKTsKKwlpZ3RfZGVidWcoIlsyXSBoMSBwcmVzdW1lZCBvZmZzZXQ6IDB4JSJQUkl4NjQiXG4i LCBwb2ZmX2gxKTsKKwlpZ3RfZGVidWcoIlsyXSBoMiBwcmVzdW1lZCBvZmZzZXQ6IDB4JSJQUkl4 NjQiXG4iLCBwb2ZmX2gyKTsKKwlpZ3RfYXNzZXJ0KFdJVEhJTl9SQU5HRShwb2ZmX2JiLCBzdGFy dCwgZW5kKSk7CisJaWd0X2Fzc2VydChXSVRISU5fUkFOR0UocG9mZl9oMSwgc3RhcnQsIGVuZCkp OworCWlndF9hc3NlcnQoV0lUSElOX1JBTkdFKHBvZmZfaDIsIHN0YXJ0LCBlbmQpKTsKKworCWlu dGVsX2JiX2VtaXRfYmJlKGliYik7CisJaWd0X2RlYnVnKCJleGVjIGZsYWdzOiAlIiBQUklYNjQg IlxuIiwgZmxhZ3MpOworCWludGVsX2JiX2V4ZWMoaWJiLCBpbnRlbF9iYl9vZmZzZXQoaWJiKSwg ZmxhZ3MsIGZhbHNlKTsKKworCXBvZmYyX2JiID0gaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQo aWJiLCBpYmItPmhhbmRsZSk7CisJcG9mZjJfaDEgPSBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNl dChpYmIsIGgxKTsKKwlwb2ZmMl9oMiA9IGludGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0KGliYiwg aDIpOworCWlndF9kZWJ1ZygiWzNdIGJiIHByZXN1bWVkIG9mZnNldDogMHglIlBSSXg2NCJcbiIs IHBvZmYyX2JiKTsKKwlpZ3RfZGVidWcoIlszXSBoMSBwcmVzdW1lZCBvZmZzZXQ6IDB4JSJQUkl4 NjQiXG4iLCBwb2ZmMl9oMSk7CisJaWd0X2RlYnVnKCJbM10gaDIgcHJlc3VtZWQgb2Zmc2V0OiAw eCUiUFJJeDY0IlxuIiwgcG9mZjJfaDIpOworCWlndF9hc3NlcnQocG9mZl9oMSA9PSBwb2ZmMl9o MSk7CisJaWd0X2Fzc2VydChwb2ZmX2gyID09IHBvZmYyX2gyKTsKKworCWlndF9kZWJ1ZygicHVy Z2U6ICVkXG4iLCBwdXJnZV9jYWNoZSk7CisJaW50ZWxfYmJfcmVzZXQoaWJiLCBwdXJnZV9jYWNo ZSk7CisKKwkvKgorCSAqIENoZWNrIGlmIGludGVsLWJiIGNhY2hlIHdhcyBwdXJnZWQ6CisJICog YSkgcmV0cmlldmUgc2FtZSBhZGRyZXNzIGZyb20gYWxsb2NhdG9yICh3b3JrcyBmb3Igc2ltcGxl LCBub3QgcmFuZG9tKQorCSAqIGIpIHBhc3NpbmcgcHJldmlvdXMgYWRkcmVzcyBlbnRlcnMgYWxs b2NhdG9yIDwtPiBpbnRlbF9iYiBjYWNoZQorCSAqICAgIGNvbnNpc3RlbmN5IGNoZWNrIHBhdGgu CisJICovCisJaWYgKHB1cmdlX2NhY2hlKSB7CisJCWludGVsX2JiX2FkZF9vYmplY3QoaWJiLCBo MSwgUEFHRV9TSVpFLAorCQkJCSAgICBJTlRFTF9CVUZfSU5WQUxJRF9BRERSRVNTLCAwLCB0cnVl KTsKKwkJaW50ZWxfYmJfYWRkX29iamVjdChpYmIsIGgyLCBQQUdFX1NJWkUsIHBvZmYyX2gyLCAw LCB0cnVlKTsKKwl9IGVsc2UgeworCQkvKiBTZWUgY29uc2lzdGVuY3kgY2hlY2sgd2lsbCBub3Qg ZmFpbCAqLworCQlpbnRlbF9iYl9hZGRfb2JqZWN0KGliYiwgaDEsIFBBR0VfU0laRSwgcG9mZjJf aDEsIDAsIHRydWUpOworCQlpbnRlbF9iYl9hZGRfb2JqZWN0KGliYiwgaDIsIFBBR0VfU0laRSwg cG9mZjJfaDIsIDAsIHRydWUpOworCX0KKworCXBvZmZfaDEgPSBpbnRlbF9iYl9nZXRfb2JqZWN0 X29mZnNldChpYmIsIGgxKTsKKwlwb2ZmX2gyID0gaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQo aWJiLCBoMik7CisJaWd0X2RlYnVnKCJbNF0gYmIgcHJlc3VtZWQgb2Zmc2V0OiAweCUiUFJJeDY0 IlxuIiwgcG9mZl9iYik7CisJaWd0X2RlYnVnKCJbNF0gaDEgcHJlc3VtZWQgb2Zmc2V0OiAweCUi UFJJeDY0IlxuIiwgcG9mZl9oMSk7CisJaWd0X2RlYnVnKCJbNF0gaDIgcHJlc3VtZWQgb2Zmc2V0 OiAweCUiUFJJeDY0IlxuIiwgcG9mZl9oMik7CisKKwkvKiBGb3Igc2ltcGxlIGFsbG9jYXRvciBh bmQgcHVyZ2U9Y2FjaGUgd2UgbXVzdCBoYXZlIHNhbWUgYWRkcmVzc2VzICovCisJaWYgKGFsbG9j YXRvcl90eXBlID09IElOVEVMX0FMTE9DQVRPUl9TSU1QTEUgfHwgIXB1cmdlX2NhY2hlKSB7CisJ CWlndF9hc3NlcnQocG9mZl9oMSA9PSBwb2ZmMl9oMSk7CisJCWlndF9hc3NlcnQocG9mZl9oMiA9 PSBwb2ZmMl9oMik7CiAJfQorCisJZ2VtX2Nsb3NlKGk5MTUsIGgxKTsKKwlnZW1fY2xvc2UoaTkx NSwgaDIpOworCWludGVsX2JiX2Rlc3Ryb3koaWJiKTsKK30KK3N0YXRpYyB2b2lkIF9fZW1pdF9i bGl0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLAorCQkJIHN0cnVjdCBpbnRlbF9idWYgKnNyYywgc3Ry dWN0IGludGVsX2J1ZiAqZHN0KQoreworCWludGVsX2JiX2VtaXRfYmx0X2NvcHkoaWJiLAorCQkJ ICAgICAgIHNyYywgMCwgMCwgc3JjLT5zdXJmYWNlWzBdLnN0cmlkZSwKKwkJCSAgICAgICBkc3Qs IDAsIDAsIGRzdC0+c3VyZmFjZVswXS5zdHJpZGUsCisJCQkgICAgICAgaW50ZWxfYnVmX3dpZHRo KGRzdCksCisJCQkgICAgICAgaW50ZWxfYnVmX2hlaWdodChkc3QpLAorCQkJICAgICAgIGRzdC0+ YnBwKTsKIH0KIAogc3RhdGljIHZvaWQgYmxpdChzdHJ1Y3QgYnVmX29wcyAqYm9wcywKIAkJIGVu dW0gcmVsb2Nfb2JqZWN0cyByZWxvY19vYmosCi0JCSBlbnVtIG9ial9jYWNoZV9vcHMgY2FjaGVf b3ApCisJCSBlbnVtIG9ial9jYWNoZV9vcHMgY2FjaGVfb3AsCisJCSB1aW50OF90IGFsbG9jYXRv cl90eXBlKQogewogCWludCBpOTE1ID0gYnVmX29wc19nZXRfZmQoYm9wcyk7CiAJc3RydWN0IGlu dGVsX2JiICppYmI7CkBAIC0zNzIsNiArNjAyLDkgQEAgc3RhdGljIHZvaWQgYmxpdChzdHJ1Y3Qg YnVmX29wcyAqYm9wcywKIAlib29sIHB1cmdlX2NhY2hlID0gY2FjaGVfb3AgPT0gUFVSR0VfQ0FD SEUgPyB0cnVlIDogZmFsc2U7CiAJYm9vbCBkb19yZWxvY3MgPSByZWxvY19vYmogPT0gUkVMT0Mg PyB0cnVlIDogZmFsc2U7CiAKKwlpZiAoIWRvX3JlbG9jcykKKwkJaWd0X3JlcXVpcmUoZ2VtX3Vz ZXNfZnVsbF9wcGd0dChpOTE1KSk7CisKIAlzcmMgPSBjcmVhdGVfYnVmKGJvcHMsIFdJRFRILCBI RUlHSFQsIENPTE9SX0NDKTsKIAlkc3QgPSBjcmVhdGVfYnVmKGJvcHMsIFdJRFRILCBIRUlHSFQs IENPTE9SXzAwKTsKIApAQCAtMzgzLDM4ICs2MTYsMzEgQEAgc3RhdGljIHZvaWQgYmxpdChzdHJ1 Y3QgYnVmX29wcyAqYm9wcywKIAlpZiAoZG9fcmVsb2NzKSB7CiAJCWliYiA9IGludGVsX2JiX2Ny ZWF0ZV93aXRoX3JlbG9jcyhpOTE1LCBQQUdFX1NJWkUpOwogCX0gZWxzZSB7Ci0JCWliYiA9IGlu dGVsX2JiX2NyZWF0ZShpOTE1LCBQQUdFX1NJWkUpOworCQlpYmIgPSBpbnRlbF9iYl9jcmVhdGVf d2l0aF9hbGxvY2F0b3IoaTkxNSwgMCwgUEFHRV9TSVpFLAorCQkJCQkJICAgICBhbGxvY2F0b3Jf dHlwZSk7CiAJCWZsYWdzIHw9IEk5MTVfRVhFQ19OT19SRUxPQzsKIAl9CiAKLQlpZiAoaWJiLT5n ZW4gPj0gNikKLQkJZmxhZ3MgfD0gSTkxNV9FWEVDX0JMVDsKLQogCWlmIChkZWJ1Z19iYikKIAkJ aW50ZWxfYmJfc2V0X2RlYnVnKGliYiwgdHJ1ZSk7CiAKLQotCWludGVsX2JiX2FkZF9pbnRlbF9i dWYoaWJiLCBzcmMsIGZhbHNlKTsKLQlpbnRlbF9iYl9hZGRfaW50ZWxfYnVmKGliYiwgZHN0LCB0 cnVlKTsKLQogCV9fZW1pdF9ibGl0KGliYiwgc3JjLCBkc3QpOwogCiAJLyogV2UgZXhwZWN0IGlu aXRpYWwgYWRkcmVzc2VzIGFyZSB6ZXJvZWQgZm9yIHJlbG9jcyAqLwotCXBvZmZfYmIgPSBpbnRl bF9iYl9nZXRfb2JqZWN0X29mZnNldChpYmIsIGliYi0+aGFuZGxlKTsKLQlwb2ZmX3NyYyA9IGlu dGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0KGliYiwgc3JjLT5oYW5kbGUpOwotCXBvZmZfZHN0ID0g aW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoaWJiLCBkc3QtPmhhbmRsZSk7Ci0JaWd0X2RlYnVn KCJiYiAgcHJlc3VtZWQgb2Zmc2V0OiAweCUiUFJJeDY0IlxuIiwgcG9mZl9iYik7Ci0JaWd0X2Rl YnVnKCJzcmMgcHJlc3VtZWQgb2Zmc2V0OiAweCUiUFJJeDY0IlxuIiwgcG9mZl9zcmMpOwotCWln dF9kZWJ1ZygiZHN0IHByZXN1bWVkIG9mZnNldDogMHglIlBSSXg2NCJcbiIsIHBvZmZfZHN0KTsK IAlpZiAocmVsb2Nfb2JqID09IFJFTE9DKSB7CisJCXBvZmZfYmIgPSBpbnRlbF9iYl9nZXRfb2Jq ZWN0X29mZnNldChpYmIsIGliYi0+aGFuZGxlKTsKKwkJcG9mZl9zcmMgPSBpbnRlbF9iYl9nZXRf b2JqZWN0X29mZnNldChpYmIsIHNyYy0+aGFuZGxlKTsKKwkJcG9mZl9kc3QgPSBpbnRlbF9iYl9n ZXRfb2JqZWN0X29mZnNldChpYmIsIGRzdC0+aGFuZGxlKTsKKwkJaWd0X2RlYnVnKCJiYiAgcHJl c3VtZWQgb2Zmc2V0OiAweCUiUFJJeDY0IlxuIiwgcG9mZl9iYik7CisJCWlndF9kZWJ1Zygic3Jj IHByZXN1bWVkIG9mZnNldDogMHglIlBSSXg2NCJcbiIsIHBvZmZfc3JjKTsKKwkJaWd0X2RlYnVn KCJkc3QgcHJlc3VtZWQgb2Zmc2V0OiAweCUiUFJJeDY0IlxuIiwgcG9mZl9kc3QpOwogCQlpZ3Rf YXNzZXJ0KHBvZmZfYmIgPT0gMCk7CiAJCWlndF9hc3NlcnQocG9mZl9zcmMgPT0gMCk7CiAJCWln dF9hc3NlcnQocG9mZl9kc3QgPT0gMCk7CiAJfQogCiAJaW50ZWxfYmJfZW1pdF9iYmUoaWJiKTsK LQlpZ3RfZGVidWcoImV4ZWMgZmxhZ3M6ICUiIFBSSVg2NCAiXG4iLCBmbGFncyk7Ci0JaW50ZWxf YmJfZXhlYyhpYmIsIGludGVsX2JiX29mZnNldChpYmIpLCBmbGFncywgdHJ1ZSk7CisJaW50ZWxf YmJfZmx1c2hfYmxpdChpYmIpOwogCWNoZWNrX2J1Zihkc3QsIENPTE9SX0NDKTsKIAogCXBvZmZf YmIgPSBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNldChpYmIsIGliYi0+aGFuZGxlKTsKQEAgLTQy MywxNSArNjQ5LDI5IEBAIHN0YXRpYyB2b2lkIGJsaXQoc3RydWN0IGJ1Zl9vcHMgKmJvcHMsCiAK IAlpbnRlbF9iYl9yZXNldChpYmIsIHB1cmdlX2NhY2hlKTsKIAorCS8qIEZvciBwdXJnZSB3ZSBs b3N0IG9mZnNldHMgYW5kIGJ1ZnMgd2VyZSByZW1vdmVkIGZyb20gdHJhY2tpbmcgbGlzdCAqLwor CWlmIChwdXJnZV9jYWNoZSkgeworCQlzcmMtPmFkZHIub2Zmc2V0ID0gcG9mZl9zcmM7CisJCWRz dC0+YWRkci5vZmZzZXQgPSBwb2ZmX2RzdDsKKwl9CisKKwkvKiBBZGQgYnVmZmVycyBhZ2Fpbiwg c2hvdWxkIHdvcmsgYm90aCBmb3IgcHVyZ2UgYW5kIGtlZXAgY2FjaGUgKi8KKwlpbnRlbF9iYl9h ZGRfaW50ZWxfYnVmKGliYiwgc3JjLCBmYWxzZSk7CisJaW50ZWxfYmJfYWRkX2ludGVsX2J1Zihp YmIsIGRzdCwgdHJ1ZSk7CisKKwlpZ3RfYXNzZXJ0X2YocG9mZl9zcmMgPT0gc3JjLT5hZGRyLm9m ZnNldCwKKwkJICAgICAicHJldiBzcmMgYWRkcjogJSIgUFJJeDY0ICIgPD4gc3JjIGFkZHIgJSIg UFJJeDY0ICJcbiIsCisJCSAgICAgcG9mZl9zcmMsIHNyYy0+YWRkci5vZmZzZXQpOworCWlndF9h c3NlcnRfZihwb2ZmX2RzdCA9PSBkc3QtPmFkZHIub2Zmc2V0LAorCQkgICAgICJwcmV2IGRzdCBh ZGRyOiAlIiBQUkl4NjQgIiA8PiBkc3QgYWRkciAlIiBQUkl4NjQgIlxuIiwKKwkJICAgICBwb2Zm X2RzdCwgZHN0LT5hZGRyLm9mZnNldCk7CisKIAlmaWxsX2J1ZihzcmMsIENPTE9SXzc3KTsKIAlm aWxsX2J1Zihkc3QsIENPTE9SXzAwKTsKIAotCWlmIChwdXJnZV9jYWNoZSAmJiAhZG9fcmVsb2Nz KSB7Ci0JCWludGVsX2JiX2FkZF9pbnRlbF9idWYoaWJiLCBzcmMsIGZhbHNlKTsKLQkJaW50ZWxf YmJfYWRkX2ludGVsX2J1ZihpYmIsIGRzdCwgdHJ1ZSk7Ci0JfQotCiAJX19lbWl0X2JsaXQoaWJi LCBzcmMsIGRzdCk7CisJaW50ZWxfYmJfZmx1c2hfYmxpdChpYmIpOworCWNoZWNrX2J1Zihkc3Qs IENPTE9SXzc3KTsKIAogCXBvZmYyX2JiID0gaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoaWJi LCBpYmItPmhhbmRsZSk7CiAJcG9mZjJfc3JjID0gaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQo aWJiLCBzcmMtPmhhbmRsZSk7CkBAIC00NTUsMjEgKzY5NSw5IEBAIHN0YXRpYyB2b2lkIGJsaXQo c3RydWN0IGJ1Zl9vcHMgKmJvcHMsCiAJICogd2UgYXJlIGluIGZ1bGwgY29udHJvbCBvZiBvdXIg b3duIEdUVC4KIAkgKi8KIAlpZiAoZ2VtX3VzZXNfZnVsbF9wcGd0dChpOTE1KSkgewotCQlpZiAo cHVyZ2VfY2FjaGUpIHsKLQkJCWlmIChkb19yZWxvY3MpIHsKLQkJCQlpZ3RfYXNzZXJ0X2VxX3U2 NChwb2ZmMl9iYiwgIDApOwotCQkJCWlndF9hc3NlcnRfZXFfdTY0KHBvZmYyX3NyYywgMCk7Ci0J CQkJaWd0X2Fzc2VydF9lcV91NjQocG9mZjJfZHN0LCAwKTsKLQkJCX0gZWxzZSB7Ci0JCQkJaWd0 X2Fzc2VydF9uZXFfdTY0KHBvZmZfYmIsIHBvZmYyX2JiKTsKLQkJCQlpZ3RfYXNzZXJ0X2VxX3U2 NChwb2ZmX3NyYywgcG9mZjJfc3JjKTsKLQkJCQlpZ3RfYXNzZXJ0X2VxX3U2NChwb2ZmX2RzdCwg cG9mZjJfZHN0KTsKLQkJCX0KLQkJfSBlbHNlIHsKLQkJCWlndF9hc3NlcnRfZXFfdTY0KHBvZmZf YmIsICBwb2ZmMl9iYik7Ci0JCQlpZ3RfYXNzZXJ0X2VxX3U2NChwb2ZmX3NyYywgcG9mZjJfc3Jj KTsKLQkJCWlndF9hc3NlcnRfZXFfdTY0KHBvZmZfZHN0LCBwb2ZmMl9kc3QpOwotCQl9CisJCWln dF9hc3NlcnRfZXFfdTY0KHBvZmZfYmIsICBwb2ZmMl9iYik7CisJCWlndF9hc3NlcnRfZXFfdTY0 KHBvZmZfc3JjLCBwb2ZmMl9zcmMpOworCQlpZ3RfYXNzZXJ0X2VxX3U2NChwb2ZmX2RzdCwgcG9m ZjJfZHN0KTsKIAl9CiAKIAlpbnRlbF9iYl9lbWl0X2JiZShpYmIpOwpAQCAtNjM2LDcgKzg2NCw3 IEBAIHN0YXRpYyBpbnQgZHVtcF9iYXNlNjQoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGludGVs X2J1ZiAqYnVmKQogCWlmIChyZXQgIT0gWl9PSykgewogCQlpZ3Rfd2FybigiZXJyb3IgY29tcHJl c3NpbmcsIHJldDogJWRcbiIsIHJldCk7CiAJfSBlbHNlIHsKLQkJaWd0X2luZm8oImNvbXByZXNz ZWQgJSIgUFJJeDY0ICIgLT4gJWx1XG4iLAorCQlpZ3RfaW5mbygiY29tcHJlc3NlZCAlIiBQUkl1 NjQgIiAtPiAlbHVcbiIsCiAJCQkgYnVmLT5zdXJmYWNlWzBdLnNpemUsIG91dHNpemUpOwogCiAJ CWlndF9pbmZvKCItLS0gJXMgLS0tXG4iLCBuYW1lKTsKQEAgLTExNDIsNiArMTM3MCwxMCBAQCBp Z3RfbWFpbl9hcmdzKCJkcGliIiwgTlVMTCwgaGVscF9zdHIsIG9wdF9oYW5kbGVyLCBOVUxMKQog CQlnZW4gPSBpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChpOTE1KSk7CiAJfQogCisJaWd0 X2Rlc2NyaWJlKCJFbnN1cmUgcmVzZXQgaXMgcG9zc2libGUgb24gZnJlc2ggYmIiKTsKKwlpZ3Rf c3VidGVzdCgicmVzZXQtYmIiKQorCQlyZXNldF9iYihib3BzKTsKKwogCWlndF9zdWJ0ZXN0KCJz aW1wbGUtYmIiKQogCQlzaW1wbGVfYmIoYm9wcywgZmFsc2UpOwogCkBAIC0xMTU0LDE3ICsxMzg2 LDQ3IEBAIGlndF9tYWluX2FyZ3MoImRwaWIiLCBOVUxMLCBoZWxwX3N0ciwgb3B0X2hhbmRsZXIs IE5VTEwpCiAJaWd0X3N1YnRlc3QoInJlc2V0LWZsYWdzIikKIAkJcmVzZXRfZmxhZ3MoYm9wcyk7 CiAKLQlpZ3Rfc3VidGVzdCgiYmxpdC1ub3JlbG9jLWtlZXAtY2FjaGUiKQotCQlibGl0KGJvcHMs IE5PUkVMT0MsIEtFRVBfQ0FDSEUpOworCWlndF9zdWJ0ZXN0KCJhZGQtcmVtb3ZlLW9iamVjdHMi KQorCQlhZGRfcmVtb3ZlX29iamVjdHMoYm9wcyk7CiAKLQlpZ3Rfc3VidGVzdCgiYmxpdC1yZWxv Yy1wdXJnZS1jYWNoZSIpCi0JCWJsaXQoYm9wcywgUkVMT0MsIFBVUkdFX0NBQ0hFKTsKKwlpZ3Rf c3VidGVzdCgiZGVzdHJveS1iYiIpCisJCWRlc3Ryb3lfYmIoYm9wcyk7CiAKLQlpZ3Rfc3VidGVz dCgiYmxpdC1ub3JlbG9jLXB1cmdlLWNhY2hlIikKLQkJYmxpdChib3BzLCBOT1JFTE9DLCBQVVJH RV9DQUNIRSk7CisJaWd0X3N1YnRlc3QoIm9iamVjdC1yZWxvYy1wdXJnZS1jYWNoZSIpCisJCW9i amVjdF9yZWxvYyhib3BzLCBQVVJHRV9DQUNIRSk7CisKKwlpZ3Rfc3VidGVzdCgib2JqZWN0LXJl bG9jLWtlZXAtY2FjaGUiKQorCQlvYmplY3RfcmVsb2MoYm9wcywgS0VFUF9DQUNIRSk7CisKKwlp Z3Rfc3VidGVzdCgib2JqZWN0LW5vcmVsb2MtcHVyZ2UtY2FjaGUtc2ltcGxlIikKKwkJb2JqZWN0 X25vcmVsb2MoYm9wcywgUFVSR0VfQ0FDSEUsIElOVEVMX0FMTE9DQVRPUl9TSU1QTEUpOworCisJ aWd0X3N1YnRlc3QoIm9iamVjdC1ub3JlbG9jLWtlZXAtY2FjaGUtc2ltcGxlIikKKwkJb2JqZWN0 X25vcmVsb2MoYm9wcywgS0VFUF9DQUNIRSwgSU5URUxfQUxMT0NBVE9SX1NJTVBMRSk7CisKKwlp Z3Rfc3VidGVzdCgib2JqZWN0LW5vcmVsb2MtcHVyZ2UtY2FjaGUtcmFuZG9tIikKKwkJb2JqZWN0 X25vcmVsb2MoYm9wcywgUFVSR0VfQ0FDSEUsIElOVEVMX0FMTE9DQVRPUl9SQU5ET00pOworCisJ aWd0X3N1YnRlc3QoIm9iamVjdC1ub3JlbG9jLWtlZXAtY2FjaGUtcmFuZG9tIikKKwkJb2JqZWN0 X25vcmVsb2MoYm9wcywgS0VFUF9DQUNIRSwgSU5URUxfQUxMT0NBVE9SX1JBTkRPTSk7CisKKwlp Z3Rfc3VidGVzdCgiYmxpdC1yZWxvYy1wdXJnZS1jYWNoZSIpCisJCWJsaXQoYm9wcywgUkVMT0Ms IFBVUkdFX0NBQ0hFLCBJTlRFTF9BTExPQ0FUT1JfU0lNUExFKTsKIAogCWlndF9zdWJ0ZXN0KCJi bGl0LXJlbG9jLWtlZXAtY2FjaGUiKQotCQlibGl0KGJvcHMsIFJFTE9DLCBLRUVQX0NBQ0hFKTsK KwkJYmxpdChib3BzLCBSRUxPQywgS0VFUF9DQUNIRSwgSU5URUxfQUxMT0NBVE9SX1NJTVBMRSk7 CisKKwlpZ3Rfc3VidGVzdCgiYmxpdC1ub3JlbG9jLWtlZXAtY2FjaGUtcmFuZG9tIikKKwkJYmxp dChib3BzLCBOT1JFTE9DLCBLRUVQX0NBQ0hFLCBJTlRFTF9BTExPQ0FUT1JfUkFORE9NKTsKKwor CWlndF9zdWJ0ZXN0KCJibGl0LW5vcmVsb2MtcHVyZ2UtY2FjaGUtcmFuZG9tIikKKwkJYmxpdChi b3BzLCBOT1JFTE9DLCBQVVJHRV9DQUNIRSwgSU5URUxfQUxMT0NBVE9SX1JBTkRPTSk7CisKKwlp Z3Rfc3VidGVzdCgiYmxpdC1ub3JlbG9jLWtlZXAtY2FjaGUiKQorCQlibGl0KGJvcHMsIE5PUkVM T0MsIEtFRVBfQ0FDSEUsIElOVEVMX0FMTE9DQVRPUl9TSU1QTEUpOworCisJaWd0X3N1YnRlc3Qo ImJsaXQtbm9yZWxvYy1wdXJnZS1jYWNoZSIpCisJCWJsaXQoYm9wcywgTk9SRUxPQywgUFVSR0Vf Q0FDSEUsIElOVEVMX0FMTE9DQVRPUl9TSU1QTEUpOwogCiAJaWd0X3N1YnRlc3QoImludGVsLWJi LWJsaXQtbm9uZSIpCiAJCWRvX2ludGVsX2JiX2JsaXQoYm9wcywgMTAsIEk5MTVfVElMSU5HX05P TkUpOwotLSAKMi4yNi4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK