From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: [RFC 2/2] drm/i915: move pipe config compare to intel_verify.c Date: Tue, 16 Apr 2019 13:36:03 +0300 Message-ID: <20190416103603.8266-2-jani.nikula@intel.com> References: <20190416103603.8266-1-jani.nikula@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6C2EE892E6 for ; Tue, 16 Apr 2019 10:33:46 +0000 (UTC) In-Reply-To: <20190416103603.8266-1-jani.nikula@intel.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 Cc: jani.nikula@intel.com List-Id: intel-gfx@lists.freedesktop.org U2lnbmVkLW9mZi1ieTogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCA0NzEgKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgIDkg Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3ZlcmlmeS5jICB8IDQ2NSArKysrKysrKysr KysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmVyaWZ5LmggIHwg ICA4ICsKIDQgZmlsZXMgY2hhbmdlZCwgNDc4IGluc2VydGlvbnMoKyksIDQ3NSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggMzFhOTMxLi4xNDg5OWYg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTIwMiw5ICsyMDIsOSBAQCBz dGF0aWMgdm9pZCBpbnRlbF91cGRhdGVfY3pjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogCURSTV9ERUJVR19EUklWRVIoIkNaIGNsb2NrIHJhdGU6ICVkIGtIelxuIiwgZGV2 X3ByaXYtPmN6Y2xrX2ZyZXEpOwogfQogCi1zdGF0aWMgaW5saW5lIHUzMiAvKiB1bml0cyBvZiAx MDBNSHogKi8KLWludGVsX2ZkaV9saW5rX2ZyZXEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAotCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmln KQorLyogdW5pdHMgb2YgMTAwTUh6ICovCit1MzIgaW50ZWxfZmRpX2xpbmtfZnJlcShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqcGlwZV9jb25maWcpCiB7CiAJaWYgKEhBU19EREkoZGV2X3ByaXYpKQogCQlyZXR1cm4g cGlwZV9jb25maWctPnBvcnRfY2xvY2s7IC8qIFNQTEwgKi8KQEAgLTExOTA0LDQ3MSArMTE5MDQs NiBAQCBpbnRlbF9tb2Rlc2V0X3BpcGVfY29uZmlnKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAly ZXR1cm4gMDsKIH0KIAotc3RhdGljIGJvb2wgaW50ZWxfZnV6enlfY2xvY2tfY2hlY2soaW50IGNs b2NrMSwgaW50IGNsb2NrMikKLXsKLQlpbnQgZGlmZjsKLQotCWlmIChjbG9jazEgPT0gY2xvY2sy KQotCQlyZXR1cm4gdHJ1ZTsKLQotCWlmICghY2xvY2sxIHx8ICFjbG9jazIpCi0JCXJldHVybiBm YWxzZTsKLQotCWRpZmYgPSBhYnMoY2xvY2sxIC0gY2xvY2syKTsKLQotCWlmICgoKCgoZGlmZiAr IGNsb2NrMSArIGNsb2NrMikgKiAxMDApKSAvIChjbG9jazEgKyBjbG9jazIpKSA8IDEwNSkKLQkJ cmV0dXJuIHRydWU7Ci0KLQlyZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBib29sCi1pbnRlbF9j b21wYXJlX21fbih1bnNpZ25lZCBpbnQgbSwgdW5zaWduZWQgaW50IG4sCi0JCSAgdW5zaWduZWQg aW50IG0yLCB1bnNpZ25lZCBpbnQgbjIsCi0JCSAgYm9vbCBleGFjdCkKLXsKLQlpZiAobSA9PSBt MiAmJiBuID09IG4yKQotCQlyZXR1cm4gdHJ1ZTsKLQotCWlmIChleGFjdCB8fCAhbSB8fCAhbiB8 fCAhbTIgfHwgIW4yKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQlCVUlMRF9CVUdfT04oREFUQV9MSU5L X01fTl9NQVNLID4gSU5UX01BWCk7Ci0KLQlpZiAobiA+IG4yKSB7Ci0JCXdoaWxlIChuID4gbjIp IHsKLQkJCW0yIDw8PSAxOwotCQkJbjIgPDw9IDE7Ci0JCX0KLQl9IGVsc2UgaWYgKG4gPCBuMikg ewotCQl3aGlsZSAobiA8IG4yKSB7Ci0JCQltIDw8PSAxOwotCQkJbiA8PD0gMTsKLQkJfQotCX0K LQotCWlmIChuICE9IG4yKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQlyZXR1cm4gaW50ZWxfZnV6enlf Y2xvY2tfY2hlY2sobSwgbTIpOwotfQotCi1zdGF0aWMgYm9vbAotaW50ZWxfY29tcGFyZV9saW5r X21fbihjb25zdCBzdHJ1Y3QgaW50ZWxfbGlua19tX24gKm1fbiwKLQkJICAgICAgIHN0cnVjdCBp bnRlbF9saW5rX21fbiAqbTJfbjIsCi0JCSAgICAgICBib29sIGFkanVzdCkKLXsKLQlpZiAobV9u LT50dSA9PSBtMl9uMi0+dHUgJiYKLQkgICAgaW50ZWxfY29tcGFyZV9tX24obV9uLT5nbWNoX20s IG1fbi0+Z21jaF9uLAotCQkJICAgICAgbTJfbjItPmdtY2hfbSwgbTJfbjItPmdtY2hfbiwgIWFk anVzdCkgJiYKLQkgICAgaW50ZWxfY29tcGFyZV9tX24obV9uLT5saW5rX20sIG1fbi0+bGlua19u LAotCQkJICAgICAgbTJfbjItPmxpbmtfbSwgbTJfbjItPmxpbmtfbiwgIWFkanVzdCkpIHsKLQkJ aWYgKGFkanVzdCkKLQkJCSptMl9uMiA9ICptX247Ci0KLQkJcmV0dXJuIHRydWU7Ci0JfQotCi0J cmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgYm9vbAotaW50ZWxfY29tcGFyZV9pbmZvZnJhbWUo Y29uc3QgdW5pb24gaGRtaV9pbmZvZnJhbWUgKmEsCi0JCQljb25zdCB1bmlvbiBoZG1pX2luZm9m cmFtZSAqYikKLXsKLQlyZXR1cm4gbWVtY21wKGEsIGIsIHNpemVvZigqYSkpID09IDA7Ci19Ci0K LXN0YXRpYyB2b2lkCi1waXBlX2NvbmZpZ19pbmZvZnJhbWVfZXJyKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKLQkJCSAgYm9vbCBhZGp1c3QsIGNvbnN0IGNoYXIgKm5hbWUsCi0J CQkgIGNvbnN0IHVuaW9uIGhkbWlfaW5mb2ZyYW1lICphLAotCQkJICBjb25zdCB1bmlvbiBoZG1p X2luZm9mcmFtZSAqYikKLXsKLQlpZiAoYWRqdXN0KSB7Ci0JCWlmICgoZHJtX2RlYnVnICYgRFJN X1VUX0tNUykgPT0gMCkKLQkJCXJldHVybjsKLQotCQlkcm1fZGJnKERSTV9VVF9LTVMsICJtaXNt YXRjaCBpbiAlcyBpbmZvZnJhbWUiLCBuYW1lKTsKLQkJZHJtX2RiZyhEUk1fVVRfS01TLCAiZXhw ZWN0ZWQ6Iik7Ci0JCWhkbWlfaW5mb2ZyYW1lX2xvZyhLRVJOX0RFQlVHLCBkZXZfcHJpdi0+ZHJt LmRldiwgYSk7Ci0JCWRybV9kYmcoRFJNX1VUX0tNUywgImZvdW5kIik7Ci0JCWhkbWlfaW5mb2Zy YW1lX2xvZyhLRVJOX0RFQlVHLCBkZXZfcHJpdi0+ZHJtLmRldiwgYik7Ci0JfSBlbHNlIHsKLQkJ ZHJtX2VycigibWlzbWF0Y2ggaW4gJXMgaW5mb2ZyYW1lIiwgbmFtZSk7Ci0JCWRybV9lcnIoImV4 cGVjdGVkOiIpOwotCQloZG1pX2luZm9mcmFtZV9sb2coS0VSTl9FUlIsIGRldl9wcml2LT5kcm0u ZGV2LCBhKTsKLQkJZHJtX2VycigiZm91bmQiKTsKLQkJaGRtaV9pbmZvZnJhbWVfbG9nKEtFUk5f RVJSLCBkZXZfcHJpdi0+ZHJtLmRldiwgYik7Ci0JfQotfQotCi1zdGF0aWMgdm9pZCBfX3ByaW50 ZigzLCA0KQotcGlwZV9jb25maWdfZXJyKGJvb2wgYWRqdXN0LCBjb25zdCBjaGFyICpuYW1lLCBj b25zdCBjaGFyICpmb3JtYXQsIC4uLikKLXsKLQlzdHJ1Y3QgdmFfZm9ybWF0IHZhZjsKLQl2YV9s aXN0IGFyZ3M7Ci0KLQl2YV9zdGFydChhcmdzLCBmb3JtYXQpOwotCXZhZi5mbXQgPSBmb3JtYXQ7 Ci0JdmFmLnZhID0gJmFyZ3M7Ci0KLQlpZiAoYWRqdXN0KQotCQlkcm1fZGJnKERSTV9VVF9LTVMs ICJtaXNtYXRjaCBpbiAlcyAlcFYiLCBuYW1lLCAmdmFmKTsKLQllbHNlCi0JCWRybV9lcnIoIm1p c21hdGNoIGluICVzICVwViIsIG5hbWUsICZ2YWYpOwotCi0JdmFfZW5kKGFyZ3MpOwotfQotCi1z dGF0aWMgYm9vbCBmYXN0Ym9vdF9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKLXsKLQlpZiAoaTkxNV9tb2RwYXJhbXMuZmFzdGJvb3QgIT0gLTEpCi0JCXJldHVybiBp OTE1X21vZHBhcmFtcy5mYXN0Ym9vdDsKLQotCS8qIEVuYWJsZSBmYXN0Ym9vdCBieSBkZWZhdWx0 IG9uIFNreWxha2UgYW5kIG5ld2VyICovCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkK LQkJcmV0dXJuIHRydWU7Ci0KLQkvKiBFbmFibGUgZmFzdGJvb3QgYnkgZGVmYXVsdCBvbiBWTFYg YW5kIENIViAqLwotCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVX KGRldl9wcml2KSkKLQkJcmV0dXJuIHRydWU7Ci0KLQkvKiBEaXNhYmxlZCBieSBkZWZhdWx0IG9u IGFsbCBvdGhlcnMgKi8KLQlyZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wKLWludGVsX3BpcGVfY29u ZmlnX2NvbXBhcmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3VycmVudF9jb25maWcsCi0JCQkgIHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpwaXBlX2NvbmZpZywKLQkJCSAgYm9vbCBhZGp1c3QpCi17Ci0JYm9vbCByZXQg PSB0cnVlOwotCWJvb2wgZml4dXBfaW5oZXJpdGVkID0gYWRqdXN0ICYmCi0JCShjdXJyZW50X2Nv bmZpZy0+YmFzZS5tb2RlLnByaXZhdGVfZmxhZ3MgJiBJOTE1X01PREVfRkxBR19JTkhFUklURUQp ICYmCi0JCSEocGlwZV9jb25maWctPmJhc2UubW9kZS5wcml2YXRlX2ZsYWdzICYgSTkxNV9NT0RF X0ZMQUdfSU5IRVJJVEVEKTsKLQotCWlmIChmaXh1cF9pbmhlcml0ZWQgJiYgIWZhc3Rib290X2Vu YWJsZWQoZGV2X3ByaXYpKSB7Ci0JCURSTV9ERUJVR19LTVMoImluaXRpYWwgbW9kZXNldCBhbmQg ZmFzdGJvb3Qgbm90IHNldFxuIik7Ci0JCXJldCA9IGZhbHNlOwotCX0KLQotI2RlZmluZSBQSVBF X0NPTkZfQ0hFQ0tfWChuYW1lKSBkbyB7IFwKLQlpZiAoY3VycmVudF9jb25maWctPm5hbWUgIT0g cGlwZV9jb25maWctPm5hbWUpIHsgXAotCQlwaXBlX2NvbmZpZ19lcnIoYWRqdXN0LCBfX3N0cmlu Z2lmeShuYW1lKSwgXAotCQkJICAiKGV4cGVjdGVkIDB4JTA4eCwgZm91bmQgMHglMDh4KVxuIiwg XAotCQkJICBjdXJyZW50X2NvbmZpZy0+bmFtZSwgXAotCQkJICBwaXBlX2NvbmZpZy0+bmFtZSk7 IFwKLQkJcmV0ID0gZmFsc2U7IFwKLQl9IFwKLX0gd2hpbGUgKDApCi0KLSNkZWZpbmUgUElQRV9D T05GX0NIRUNLX0kobmFtZSkgZG8geyBcCi0JaWYgKGN1cnJlbnRfY29uZmlnLT5uYW1lICE9IHBp cGVfY29uZmlnLT5uYW1lKSB7IFwKLQkJcGlwZV9jb25maWdfZXJyKGFkanVzdCwgX19zdHJpbmdp ZnkobmFtZSksIFwKLQkJCSAgIihleHBlY3RlZCAlaSwgZm91bmQgJWkpXG4iLCBcCi0JCQkgIGN1 cnJlbnRfY29uZmlnLT5uYW1lLCBcCi0JCQkgIHBpcGVfY29uZmlnLT5uYW1lKTsgXAotCQlyZXQg PSBmYWxzZTsgXAotCX0gXAotfSB3aGlsZSAoMCkKLQotI2RlZmluZSBQSVBFX0NPTkZfQ0hFQ0tf Qk9PTChuYW1lKSBkbyB7IFwKLQlpZiAoY3VycmVudF9jb25maWctPm5hbWUgIT0gcGlwZV9jb25m aWctPm5hbWUpIHsgXAotCQlwaXBlX2NvbmZpZ19lcnIoYWRqdXN0LCBfX3N0cmluZ2lmeShuYW1l KSwgXAotCQkJICAiKGV4cGVjdGVkICVzLCBmb3VuZCAlcylcbiIsIFwKLQkJCSAgeWVzbm8oY3Vy cmVudF9jb25maWctPm5hbWUpLCBcCi0JCQkgIHllc25vKHBpcGVfY29uZmlnLT5uYW1lKSk7IFwK LQkJcmV0ID0gZmFsc2U7IFwKLQl9IFwKLX0gd2hpbGUgKDApCi0KLS8qCi0gKiBDaGVja3Mgc3Rh dGUgd2hlcmUgd2Ugb25seSByZWFkIG91dCB0aGUgZW5hYmxpbmcsIGJ1dCBub3QgdGhlIGVudGly ZQotICogc3RhdGUgaXRzZWxmIChsaWtlIGZ1bGwgaW5mb2ZyYW1lcyBvciBFTEQgZm9yIGF1ZGlv KS4gVGhlc2Ugc3RhdGVzCi0gKiByZXF1aXJlIGEgZnVsbCBtb2Rlc2V0IG9uIGJvb3R1cCB0byBm aXggdXAuCi0gKi8KLSNkZWZpbmUgUElQRV9DT05GX0NIRUNLX0JPT0xfSU5DT01QTEVURShuYW1l KSBkbyB7IFwKLQlpZiAoIWZpeHVwX2luaGVyaXRlZCB8fCAoIWN1cnJlbnRfY29uZmlnLT5uYW1l ICYmICFwaXBlX2NvbmZpZy0+bmFtZSkpIHsgXAotCQlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChuYW1l KTsgXAotCX0gZWxzZSB7IFwKLQkJcGlwZV9jb25maWdfZXJyKGFkanVzdCwgX19zdHJpbmdpZnko bmFtZSksIFwKLQkJCSAgInVuYWJsZSB0byB2ZXJpZnkgd2hldGhlciBzdGF0ZSBtYXRjaGVzIGV4 YWN0bHksIGZvcmNpbmcgbW9kZXNldCAoZXhwZWN0ZWQgJXMsIGZvdW5kICVzKVxuIiwgXAotCQkJ ICB5ZXNubyhjdXJyZW50X2NvbmZpZy0+bmFtZSksIFwKLQkJCSAgeWVzbm8ocGlwZV9jb25maWct Pm5hbWUpKTsgXAotCQlyZXQgPSBmYWxzZTsgXAotCX0gXAotfSB3aGlsZSAoMCkKLQotI2RlZmlu ZSBQSVBFX0NPTkZfQ0hFQ0tfUChuYW1lKSBkbyB7IFwKLQlpZiAoY3VycmVudF9jb25maWctPm5h bWUgIT0gcGlwZV9jb25maWctPm5hbWUpIHsgXAotCQlwaXBlX2NvbmZpZ19lcnIoYWRqdXN0LCBf X3N0cmluZ2lmeShuYW1lKSwgXAotCQkJICAiKGV4cGVjdGVkICVwLCBmb3VuZCAlcClcbiIsIFwK LQkJCSAgY3VycmVudF9jb25maWctPm5hbWUsIFwKLQkJCSAgcGlwZV9jb25maWctPm5hbWUpOyBc Ci0JCXJldCA9IGZhbHNlOyBcCi0JfSBcCi19IHdoaWxlICgwKQotCi0jZGVmaW5lIFBJUEVfQ09O Rl9DSEVDS19NX04obmFtZSkgZG8geyBcCi0JaWYgKCFpbnRlbF9jb21wYXJlX2xpbmtfbV9uKCZj dXJyZW50X2NvbmZpZy0+bmFtZSwgXAotCQkJCSAgICAmcGlwZV9jb25maWctPm5hbWUsXAotCQkJ CSAgICBhZGp1c3QpKSB7IFwKLQkJcGlwZV9jb25maWdfZXJyKGFkanVzdCwgX19zdHJpbmdpZnko bmFtZSksIFwKLQkJCSAgIihleHBlY3RlZCB0dSAlaSBnbWNoICVpLyVpIGxpbmsgJWkvJWksICIg XAotCQkJICAiZm91bmQgdHUgJWksIGdtY2ggJWkvJWkgbGluayAlaS8laSlcbiIsIFwKLQkJCSAg Y3VycmVudF9jb25maWctPm5hbWUudHUsIFwKLQkJCSAgY3VycmVudF9jb25maWctPm5hbWUuZ21j aF9tLCBcCi0JCQkgIGN1cnJlbnRfY29uZmlnLT5uYW1lLmdtY2hfbiwgXAotCQkJICBjdXJyZW50 X2NvbmZpZy0+bmFtZS5saW5rX20sIFwKLQkJCSAgY3VycmVudF9jb25maWctPm5hbWUubGlua19u LCBcCi0JCQkgIHBpcGVfY29uZmlnLT5uYW1lLnR1LCBcCi0JCQkgIHBpcGVfY29uZmlnLT5uYW1l LmdtY2hfbSwgXAotCQkJICBwaXBlX2NvbmZpZy0+bmFtZS5nbWNoX24sIFwKLQkJCSAgcGlwZV9j b25maWctPm5hbWUubGlua19tLCBcCi0JCQkgIHBpcGVfY29uZmlnLT5uYW1lLmxpbmtfbik7IFwK LQkJcmV0ID0gZmFsc2U7IFwKLQl9IFwKLX0gd2hpbGUgKDApCi0KLS8qIFRoaXMgaXMgcmVxdWly ZWQgZm9yIEJEVysgd2hlcmUgdGhlcmUgaXMgb25seSBvbmUgc2V0IG9mIHJlZ2lzdGVycyBmb3IK LSAqIHN3aXRjaGluZyBiZXR3ZWVuIGhpZ2ggYW5kIGxvdyBSUi4KLSAqIFRoaXMgbWFjcm8gY2Fu IGJlIHVzZWQgd2hlbmV2ZXIgYSBjb21wYXJpc29uIGhhcyB0byBiZSBtYWRlIGJldHdlZW4gb25l Ci0gKiBodyBzdGF0ZSBhbmQgbXVsdGlwbGUgc3cgc3RhdGUgdmFyaWFibGVzLgotICovCi0jZGVm aW5lIFBJUEVfQ09ORl9DSEVDS19NX05fQUxUKG5hbWUsIGFsdF9uYW1lKSBkbyB7IFwKLQlpZiAo IWludGVsX2NvbXBhcmVfbGlua19tX24oJmN1cnJlbnRfY29uZmlnLT5uYW1lLCBcCi0JCQkJICAg ICZwaXBlX2NvbmZpZy0+bmFtZSwgYWRqdXN0KSAmJiBcCi0JICAgICFpbnRlbF9jb21wYXJlX2xp bmtfbV9uKCZjdXJyZW50X2NvbmZpZy0+YWx0X25hbWUsIFwKLQkJCQkgICAgJnBpcGVfY29uZmln LT5uYW1lLCBhZGp1c3QpKSB7IFwKLQkJcGlwZV9jb25maWdfZXJyKGFkanVzdCwgX19zdHJpbmdp ZnkobmFtZSksIFwKLQkJCSAgIihleHBlY3RlZCB0dSAlaSBnbWNoICVpLyVpIGxpbmsgJWkvJWks ICIgXAotCQkJICAib3IgdHUgJWkgZ21jaCAlaS8laSBsaW5rICVpLyVpLCAiIFwKLQkJCSAgImZv dW5kIHR1ICVpLCBnbWNoICVpLyVpIGxpbmsgJWkvJWkpXG4iLCBcCi0JCQkgIGN1cnJlbnRfY29u ZmlnLT5uYW1lLnR1LCBcCi0JCQkgIGN1cnJlbnRfY29uZmlnLT5uYW1lLmdtY2hfbSwgXAotCQkJ ICBjdXJyZW50X2NvbmZpZy0+bmFtZS5nbWNoX24sIFwKLQkJCSAgY3VycmVudF9jb25maWctPm5h bWUubGlua19tLCBcCi0JCQkgIGN1cnJlbnRfY29uZmlnLT5uYW1lLmxpbmtfbiwgXAotCQkJICBj dXJyZW50X2NvbmZpZy0+YWx0X25hbWUudHUsIFwKLQkJCSAgY3VycmVudF9jb25maWctPmFsdF9u YW1lLmdtY2hfbSwgXAotCQkJICBjdXJyZW50X2NvbmZpZy0+YWx0X25hbWUuZ21jaF9uLCBcCi0J CQkgIGN1cnJlbnRfY29uZmlnLT5hbHRfbmFtZS5saW5rX20sIFwKLQkJCSAgY3VycmVudF9jb25m aWctPmFsdF9uYW1lLmxpbmtfbiwgXAotCQkJICBwaXBlX2NvbmZpZy0+bmFtZS50dSwgXAotCQkJ ICBwaXBlX2NvbmZpZy0+bmFtZS5nbWNoX20sIFwKLQkJCSAgcGlwZV9jb25maWctPm5hbWUuZ21j aF9uLCBcCi0JCQkgIHBpcGVfY29uZmlnLT5uYW1lLmxpbmtfbSwgXAotCQkJICBwaXBlX2NvbmZp Zy0+bmFtZS5saW5rX24pOyBcCi0JCXJldCA9IGZhbHNlOyBcCi0JfSBcCi19IHdoaWxlICgwKQot Ci0jZGVmaW5lIFBJUEVfQ09ORl9DSEVDS19GTEFHUyhuYW1lLCBtYXNrKSBkbyB7IFwKLQlpZiAo KGN1cnJlbnRfY29uZmlnLT5uYW1lIF4gcGlwZV9jb25maWctPm5hbWUpICYgKG1hc2spKSB7IFwK LQkJcGlwZV9jb25maWdfZXJyKGFkanVzdCwgX19zdHJpbmdpZnkobmFtZSksIFwKLQkJCSAgIigl eCkgKGV4cGVjdGVkICVpLCBmb3VuZCAlaSlcbiIsIFwKLQkJCSAgKG1hc2spLCBcCi0JCQkgIGN1 cnJlbnRfY29uZmlnLT5uYW1lICYgKG1hc2spLCBcCi0JCQkgIHBpcGVfY29uZmlnLT5uYW1lICYg KG1hc2spKTsgXAotCQlyZXQgPSBmYWxzZTsgXAotCX0gXAotfSB3aGlsZSAoMCkKLQotI2RlZmlu ZSBQSVBFX0NPTkZfQ0hFQ0tfQ0xPQ0tfRlVaWlkobmFtZSkgZG8geyBcCi0JaWYgKCFpbnRlbF9m dXp6eV9jbG9ja19jaGVjayhjdXJyZW50X2NvbmZpZy0+bmFtZSwgcGlwZV9jb25maWctPm5hbWUp KSB7IFwKLQkJcGlwZV9jb25maWdfZXJyKGFkanVzdCwgX19zdHJpbmdpZnkobmFtZSksIFwKLQkJ CSAgIihleHBlY3RlZCAlaSwgZm91bmQgJWkpXG4iLCBcCi0JCQkgIGN1cnJlbnRfY29uZmlnLT5u YW1lLCBcCi0JCQkgIHBpcGVfY29uZmlnLT5uYW1lKTsgXAotCQlyZXQgPSBmYWxzZTsgXAotCX0g XAotfSB3aGlsZSAoMCkKLQotI2RlZmluZSBQSVBFX0NPTkZfQ0hFQ0tfSU5GT0ZSQU1FKG5hbWUp IGRvIHsgXAotCWlmICghaW50ZWxfY29tcGFyZV9pbmZvZnJhbWUoJmN1cnJlbnRfY29uZmlnLT5p bmZvZnJhbWVzLm5hbWUsIFwKLQkJCQkgICAgICZwaXBlX2NvbmZpZy0+aW5mb2ZyYW1lcy5uYW1l KSkgeyBcCi0JCXBpcGVfY29uZmlnX2luZm9mcmFtZV9lcnIoZGV2X3ByaXYsIGFkanVzdCwgX19z dHJpbmdpZnkobmFtZSksIFwKLQkJCQkJICAmY3VycmVudF9jb25maWctPmluZm9mcmFtZXMubmFt ZSwgXAotCQkJCQkgICZwaXBlX2NvbmZpZy0+aW5mb2ZyYW1lcy5uYW1lKTsgXAotCQlyZXQgPSBm YWxzZTsgXAotCX0gXAotfSB3aGlsZSAoMCkKLQotI2RlZmluZSBQSVBFX0NPTkZfUVVJUksocXVp cmspIFwKLQkoKGN1cnJlbnRfY29uZmlnLT5xdWlya3MgfCBwaXBlX2NvbmZpZy0+cXVpcmtzKSAm IChxdWlyaykpCi0KLQlQSVBFX0NPTkZfQ0hFQ0tfSShjcHVfdHJhbnNjb2Rlcik7Ci0KLQlQSVBF X0NPTkZfQ0hFQ0tfQk9PTChoYXNfcGNoX2VuY29kZXIpOwotCVBJUEVfQ09ORl9DSEVDS19JKGZk aV9sYW5lcyk7Ci0JUElQRV9DT05GX0NIRUNLX01fTihmZGlfbV9uKTsKLQotCVBJUEVfQ09ORl9D SEVDS19JKGxhbmVfY291bnQpOwotCVBJUEVfQ09ORl9DSEVDS19YKGxhbmVfbGF0X29wdGltX21h c2spOwotCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA4KSB7Ci0JCVBJUEVfQ09ORl9DSEVD S19NX04oZHBfbV9uKTsKLQotCQlpZiAoY3VycmVudF9jb25maWctPmhhc19kcnJzKQotCQkJUElQ RV9DT05GX0NIRUNLX01fTihkcF9tMl9uMik7Ci0JfSBlbHNlCi0JCVBJUEVfQ09ORl9DSEVDS19N X05fQUxUKGRwX21fbiwgZHBfbTJfbjIpOwotCi0JUElQRV9DT05GX0NIRUNLX1gob3V0cHV0X3R5 cGVzKTsKLQotCVBJUEVfQ09ORl9DSEVDS19JKGJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2hkaXNw bGF5KTsKLQlQSVBFX0NPTkZfQ0hFQ0tfSShiYXNlLmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwp OwotCVBJUEVfQ09ORl9DSEVDS19JKGJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2hibGFua19zdGFy dCk7Ci0JUElQRV9DT05GX0NIRUNLX0koYmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaGJsYW5rX2Vu ZCk7Ci0JUElQRV9DT05GX0NIRUNLX0koYmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHN5bmNfc3Rh cnQpOwotCVBJUEVfQ09ORl9DSEVDS19JKGJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2hzeW5jX2Vu ZCk7Ci0KLQlQSVBFX0NPTkZfQ0hFQ0tfSShiYXNlLmFkanVzdGVkX21vZGUuY3J0Y192ZGlzcGxh eSk7Ci0JUElQRV9DT05GX0NIRUNLX0koYmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdnRvdGFsKTsK LQlQSVBFX0NPTkZfQ0hFQ0tfSShiYXNlLmFkanVzdGVkX21vZGUuY3J0Y192Ymxhbmtfc3RhcnQp OwotCVBJUEVfQ09ORl9DSEVDS19JKGJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZibGFua19lbmQp OwotCVBJUEVfQ09ORl9DSEVDS19JKGJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZzeW5jX3N0YXJ0 KTsKLQlQSVBFX0NPTkZfQ0hFQ0tfSShiYXNlLmFkanVzdGVkX21vZGUuY3J0Y192c3luY19lbmQp OwotCi0JUElQRV9DT05GX0NIRUNLX0kocGl4ZWxfbXVsdGlwbGllcik7Ci0JUElQRV9DT05GX0NI RUNLX0kob3V0cHV0X2Zvcm1hdCk7Ci0JUElQRV9DT05GX0NIRUNLX0JPT0woaGFzX2hkbWlfc2lu ayk7Ci0JaWYgKChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOCAmJiAhSVNfSEFTV0VMTChkZXZfcHJp dikpIHx8Ci0JICAgIElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2 X3ByaXYpKQotCQlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChsaW1pdGVkX2NvbG9yX3JhbmdlKTsKLQot CVBJUEVfQ09ORl9DSEVDS19CT09MKGhkbWlfc2NyYW1ibGluZyk7Ci0JUElQRV9DT05GX0NIRUNL X0JPT0woaGRtaV9oaWdoX3RtZHNfY2xvY2tfcmF0aW8pOwotCVBJUEVfQ09ORl9DSEVDS19CT09M X0lOQ09NUExFVEUoaGFzX2luZm9mcmFtZSk7Ci0KLQlQSVBFX0NPTkZfQ0hFQ0tfQk9PTF9JTkNP TVBMRVRFKGhhc19hdWRpbyk7Ci0KLQlQSVBFX0NPTkZfQ0hFQ0tfRkxBR1MoYmFzZS5hZGp1c3Rl ZF9tb2RlLmZsYWdzLAotCQkJICAgICAgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpOwotCi0JaWYg KCFQSVBFX0NPTkZfUVVJUksoUElQRV9DT05GSUdfUVVJUktfTU9ERV9TWU5DX0ZMQUdTKSkgewot CQlQSVBFX0NPTkZfQ0hFQ0tfRkxBR1MoYmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzLAotCQkJCSAg ICAgIERSTV9NT0RFX0ZMQUdfUEhTWU5DKTsKLQkJUElQRV9DT05GX0NIRUNLX0ZMQUdTKGJhc2Uu YWRqdXN0ZWRfbW9kZS5mbGFncywKLQkJCQkgICAgICBEUk1fTU9ERV9GTEFHX05IU1lOQyk7Ci0J CVBJUEVfQ09ORl9DSEVDS19GTEFHUyhiYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MsCi0JCQkJICAg ICAgRFJNX01PREVfRkxBR19QVlNZTkMpOwotCQlQSVBFX0NPTkZfQ0hFQ0tfRkxBR1MoYmFzZS5h ZGp1c3RlZF9tb2RlLmZsYWdzLAotCQkJCSAgICAgIERSTV9NT0RFX0ZMQUdfTlZTWU5DKTsKLQl9 Ci0KLQlQSVBFX0NPTkZfQ0hFQ0tfWChnbWNoX3BmaXQuY29udHJvbCk7Ci0JLyogcGZpdCByYXRp b3MgYXJlIGF1dG9jb21wdXRlZCBieSB0aGUgaHcgb24gZ2VuNCsgKi8KLQlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA8IDQpCi0JCVBJUEVfQ09ORl9DSEVDS19YKGdtY2hfcGZpdC5wZ21fcmF0aW9z KTsKLQlQSVBFX0NPTkZfQ0hFQ0tfWChnbWNoX3BmaXQubHZkc19ib3JkZXJfYml0cyk7Ci0KLQlp ZiAoIWFkanVzdCkgewotCQlQSVBFX0NPTkZfQ0hFQ0tfSShwaXBlX3NyY193KTsKLQkJUElQRV9D T05GX0NIRUNLX0kocGlwZV9zcmNfaCk7Ci0KLQkJUElQRV9DT05GX0NIRUNLX0JPT0wocGNoX3Bm aXQuZW5hYmxlZCk7Ci0JCWlmIChjdXJyZW50X2NvbmZpZy0+cGNoX3BmaXQuZW5hYmxlZCkgewot CQkJUElQRV9DT05GX0NIRUNLX1gocGNoX3BmaXQucG9zKTsKLQkJCVBJUEVfQ09ORl9DSEVDS19Y KHBjaF9wZml0LnNpemUpOwotCQl9Ci0KLQkJUElQRV9DT05GX0NIRUNLX0koc2NhbGVyX3N0YXRl LnNjYWxlcl9pZCk7Ci0JCVBJUEVfQ09ORl9DSEVDS19DTE9DS19GVVpaWShwaXhlbF9yYXRlKTsK LQotCQlQSVBFX0NPTkZfQ0hFQ0tfWChnYW1tYV9tb2RlKTsKLQkJaWYgKElTX0NIRVJSWVZJRVco ZGV2X3ByaXYpKQotCQkJUElQRV9DT05GX0NIRUNLX1goY2dtX21vZGUpOwotCQllbHNlCi0JCQlQ SVBFX0NPTkZfQ0hFQ0tfWChjc2NfbW9kZSk7Ci0JCVBJUEVfQ09ORl9DSEVDS19CT09MKGdhbW1h X2VuYWJsZSk7Ci0JCVBJUEVfQ09ORl9DSEVDS19CT09MKGNzY19lbmFibGUpOwotCX0KLQotCVBJ UEVfQ09ORl9DSEVDS19CT09MKGRvdWJsZV93aWRlKTsKLQotCVBJUEVfQ09ORl9DSEVDS19QKHNo YXJlZF9kcGxsKTsKLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLmRwbGwpOwotCVBJ UEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuZHBsbF9tZCk7Ci0JUElQRV9DT05GX0NIRUNL X1goZHBsbF9od19zdGF0ZS5mcDApOwotCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUu ZnAxKTsKLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLndycGxsKTsKLQlQSVBFX0NP TkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLnNwbGwpOwotCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxf aHdfc3RhdGUuY3RybDEpOwotCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuY2ZnY3Ix KTsKLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLmNmZ2NyMik7Ci0JUElQRV9DT05G X0NIRUNLX1goZHBsbF9od19zdGF0ZS5jZmdjcjApOwotCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxf aHdfc3RhdGUuZWJiMCk7Ci0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5lYmI0KTsK LQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLnBsbDApOwotCVBJUEVfQ09ORl9DSEVD S19YKGRwbGxfaHdfc3RhdGUucGxsMSk7Ci0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0 ZS5wbGwyKTsKLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLnBsbDMpOwotCVBJUEVf Q09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGxsNik7Ci0JUElQRV9DT05GX0NIRUNLX1goZHBs bF9od19zdGF0ZS5wbGw4KTsKLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLnBsbDkp OwotCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGxsMTApOwotCVBJUEVfQ09ORl9D SEVDS19YKGRwbGxfaHdfc3RhdGUucGNzZHcxMik7Ci0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9o d19zdGF0ZS5tZ19yZWZjbGtpbl9jdGwpOwotCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3Rh dGUubWdfY2xrdG9wMl9jb3JlY2xrY3RsMSk7Ci0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19z dGF0ZS5tZ19jbGt0b3AyX2hzY2xrY3RsKTsKLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0 YXRlLm1nX3BsbF9kaXYwKTsKLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3Bs bF9kaXYxKTsKLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3BsbF9sZik7Ci0J UElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19wbGxfZnJhY19sb2NrKTsKLQlQSVBF X0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3BsbF9zc2MpOwotCVBJUEVfQ09ORl9DSEVD S19YKGRwbGxfaHdfc3RhdGUubWdfcGxsX2JpYXMpOwotCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxf aHdfc3RhdGUubWdfcGxsX3RkY19jb2xkc3RfYmlhcyk7Ci0KLQlQSVBFX0NPTkZfQ0hFQ0tfWChk c2lfcGxsLmN0cmwpOwotCVBJUEVfQ09ORl9DSEVDS19YKGRzaV9wbGwuZGl2KTsKLQotCWlmIChJ U19HNFgoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkKLQkJUElQRV9DT05G X0NIRUNLX0kocGlwZV9icHApOwotCi0JUElQRV9DT05GX0NIRUNLX0NMT0NLX0ZVWlpZKGJhc2Uu YWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrKTsKLQlQSVBFX0NPTkZfQ0hFQ0tfQ0xPQ0tfRlVaWlko cG9ydF9jbG9jayk7Ci0KLQlQSVBFX0NPTkZfQ0hFQ0tfSShtaW5fdm9sdGFnZV9sZXZlbCk7Ci0K LQlQSVBFX0NPTkZfQ0hFQ0tfWChpbmZvZnJhbWVzLmVuYWJsZSk7Ci0JUElQRV9DT05GX0NIRUNL X1goaW5mb2ZyYW1lcy5nY3ApOwotCVBJUEVfQ09ORl9DSEVDS19JTkZPRlJBTUUoYXZpKTsKLQlQ SVBFX0NPTkZfQ0hFQ0tfSU5GT0ZSQU1FKHNwZCk7Ci0JUElQRV9DT05GX0NIRUNLX0lORk9GUkFN RShoZG1pKTsKLQotI3VuZGVmIFBJUEVfQ09ORl9DSEVDS19YCi0jdW5kZWYgUElQRV9DT05GX0NI RUNLX0kKLSN1bmRlZiBQSVBFX0NPTkZfQ0hFQ0tfQk9PTAotI3VuZGVmIFBJUEVfQ09ORl9DSEVD S19CT09MX0lOQ09NUExFVEUKLSN1bmRlZiBQSVBFX0NPTkZfQ0hFQ0tfUAotI3VuZGVmIFBJUEVf Q09ORl9DSEVDS19GTEFHUwotI3VuZGVmIFBJUEVfQ09ORl9DSEVDS19DTE9DS19GVVpaWQotI3Vu ZGVmIFBJUEVfQ09ORl9RVUlSSwotCi0JcmV0dXJuIHJldDsKLX0KLQotdm9pZCBpbnRlbF9waXBl X2NvbmZpZ19zYW5pdHlfY2hlY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAot CQkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCi17Ci0J aWYgKHBpcGVfY29uZmlnLT5oYXNfcGNoX2VuY29kZXIpIHsKLQkJaW50IGZkaV9kb3RjbG9jayA9 IGludGVsX2RvdGNsb2NrX2NhbGN1bGF0ZShpbnRlbF9mZGlfbGlua19mcmVxKGRldl9wcml2LCBw aXBlX2NvbmZpZyksCi0JCQkJCQkJICAgICZwaXBlX2NvbmZpZy0+ZmRpX21fbik7Ci0JCWludCBk b3RjbG9jayA9IHBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKLQot CQkvKgotCQkgKiBGREkgYWxyZWFkeSBwcm92aWRlZCBvbmUgaWRlYSBmb3IgdGhlIGRvdGNsb2Nr LgotCQkgKiBZZWxsIGlmIHRoZSBlbmNvZGVyIGRpc2FncmVlcy4KLQkJICovCi0JCVdBUk4oIWlu dGVsX2Z1enp5X2Nsb2NrX2NoZWNrKGZkaV9kb3RjbG9jaywgZG90Y2xvY2spLAotCQkgICAgICJG REkgZG90Y2xvY2sgYW5kIGVuY29kZXIgZG90Y2xvY2sgbWlzbWF0Y2gsIGZkaTogJWksIGVuY29k ZXI6ICVpXG4iLAotCQkgICAgIGZkaV9kb3RjbG9jaywgZG90Y2xvY2spOwotCX0KLX0KLQogc3Rh dGljIHZvaWQgdXBkYXRlX3NjYW5saW5lX29mZnNldChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSkKIHsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVs X2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5k ZXggNzc3NjdjLi5lZDg1M2IyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMTY2OCwx NyArMTY2OCwxMiBAQCBpbnQgaW50ZWxfZ2V0X3BpcGVfZnJvbV9jcnRjX2lkX2lvY3RsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkJICAgICAgc3RydWN0IGRybV9maWxl ICpmaWxlX3ByaXYpOwogZW51bSB0cmFuc2NvZGVyIGludGVsX3BpcGVfdG9fY3B1X3RyYW5zY29k ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCQkgICAgIGVudW0gcGlw ZSBwaXBlKTsKLXZvaWQgaW50ZWxfcGlwZV9jb25maWdfc2FuaXR5X2NoZWNrKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKnBpcGVfY29uZmlnKTsKLWJvb2wKLWludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3VycmVudF9jb25maWcsCi0JCQkgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBl X2NvbmZpZywKLQkJCSAgYm9vbCBhZGp1c3QpOwogdm9pZCBpbnRlbF9kdW1wX3BpcGVfY29uZmln KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQkJICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZywKIAkJCSAgICBjb25zdCBjaGFyICpjb250ZXh0KTsKIHZvaWQgaW50ZWxf Y3J0Y19jb21wdXRlX3BpeGVsX3JhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpOwordTMyIGludGVsX2ZkaV9saW5rX2ZyZXEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAorCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsK IHN0YXRpYyBpbmxpbmUgYm9vbAogaW50ZWxfY3J0Y19oYXNfdHlwZShjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJICAgIGVudW0gaW50ZWxfb3V0cHV0X3R5cGUg dHlwZSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3ZlcmlmeS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmVyaWZ5LmMKaW5kZXggNGM4OTkwLi45Nzg1YWQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3ZlcmlmeS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3ZlcmlmeS5jCkBAIC0xMCw2ICsxMCw0NzEgQEAKICNp bmNsdWRlICJpbnRlbF9wbS5oIgogI2luY2x1ZGUgImludGVsX3ZlcmlmeS5oIgogCitzdGF0aWMg Ym9vbCBpbnRlbF9mdXp6eV9jbG9ja19jaGVjayhpbnQgY2xvY2sxLCBpbnQgY2xvY2syKQorewor CWludCBkaWZmOworCisJaWYgKGNsb2NrMSA9PSBjbG9jazIpCisJCXJldHVybiB0cnVlOworCisJ aWYgKCFjbG9jazEgfHwgIWNsb2NrMikKKwkJcmV0dXJuIGZhbHNlOworCisJZGlmZiA9IGFicyhj bG9jazEgLSBjbG9jazIpOworCisJaWYgKCgoKChkaWZmICsgY2xvY2sxICsgY2xvY2syKSAqIDEw MCkpIC8gKGNsb2NrMSArIGNsb2NrMikpIDwgMTA1KQorCQlyZXR1cm4gdHJ1ZTsKKworCXJldHVy biBmYWxzZTsKK30KKworc3RhdGljIGJvb2wKK2ludGVsX2NvbXBhcmVfbV9uKHVuc2lnbmVkIGlu dCBtLCB1bnNpZ25lZCBpbnQgbiwKKwkJICB1bnNpZ25lZCBpbnQgbTIsIHVuc2lnbmVkIGludCBu MiwKKwkJICBib29sIGV4YWN0KQoreworCWlmIChtID09IG0yICYmIG4gPT0gbjIpCisJCXJldHVy biB0cnVlOworCisJaWYgKGV4YWN0IHx8ICFtIHx8ICFuIHx8ICFtMiB8fCAhbjIpCisJCXJldHVy biBmYWxzZTsKKworCUJVSUxEX0JVR19PTihEQVRBX0xJTktfTV9OX01BU0sgPiBJTlRfTUFYKTsK KworCWlmIChuID4gbjIpIHsKKwkJd2hpbGUgKG4gPiBuMikgeworCQkJbTIgPDw9IDE7CisJCQlu MiA8PD0gMTsKKwkJfQorCX0gZWxzZSBpZiAobiA8IG4yKSB7CisJCXdoaWxlIChuIDwgbjIpIHsK KwkJCW0gPDw9IDE7CisJCQluIDw8PSAxOworCQl9CisJfQorCisJaWYgKG4gIT0gbjIpCisJCXJl dHVybiBmYWxzZTsKKworCXJldHVybiBpbnRlbF9mdXp6eV9jbG9ja19jaGVjayhtLCBtMik7Cit9 CisKK3N0YXRpYyBib29sCitpbnRlbF9jb21wYXJlX2xpbmtfbV9uKGNvbnN0IHN0cnVjdCBpbnRl bF9saW5rX21fbiAqbV9uLAorCQkgICAgICAgc3RydWN0IGludGVsX2xpbmtfbV9uICptMl9uMiwK KwkJICAgICAgIGJvb2wgYWRqdXN0KQoreworCWlmIChtX24tPnR1ID09IG0yX24yLT50dSAmJgor CSAgICBpbnRlbF9jb21wYXJlX21fbihtX24tPmdtY2hfbSwgbV9uLT5nbWNoX24sCisJCQkgICAg ICBtMl9uMi0+Z21jaF9tLCBtMl9uMi0+Z21jaF9uLCAhYWRqdXN0KSAmJgorCSAgICBpbnRlbF9j b21wYXJlX21fbihtX24tPmxpbmtfbSwgbV9uLT5saW5rX24sCisJCQkgICAgICBtMl9uMi0+bGlu a19tLCBtMl9uMi0+bGlua19uLCAhYWRqdXN0KSkgeworCQlpZiAoYWRqdXN0KQorCQkJKm0yX24y ID0gKm1fbjsKKworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKK3N0 YXRpYyBib29sCitpbnRlbF9jb21wYXJlX2luZm9mcmFtZShjb25zdCB1bmlvbiBoZG1pX2luZm9m cmFtZSAqYSwKKwkJCWNvbnN0IHVuaW9uIGhkbWlfaW5mb2ZyYW1lICpiKQoreworCXJldHVybiBt ZW1jbXAoYSwgYiwgc2l6ZW9mKCphKSkgPT0gMDsKK30KKworc3RhdGljIHZvaWQKK3BpcGVfY29u ZmlnX2luZm9mcmFtZV9lcnIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJ ICBib29sIGFkanVzdCwgY29uc3QgY2hhciAqbmFtZSwKKwkJCSAgY29uc3QgdW5pb24gaGRtaV9p bmZvZnJhbWUgKmEsCisJCQkgIGNvbnN0IHVuaW9uIGhkbWlfaW5mb2ZyYW1lICpiKQoreworCWlm IChhZGp1c3QpIHsKKwkJaWYgKChkcm1fZGVidWcgJiBEUk1fVVRfS01TKSA9PSAwKQorCQkJcmV0 dXJuOworCisJCWRybV9kYmcoRFJNX1VUX0tNUywgIm1pc21hdGNoIGluICVzIGluZm9mcmFtZSIs IG5hbWUpOworCQlkcm1fZGJnKERSTV9VVF9LTVMsICJleHBlY3RlZDoiKTsKKwkJaGRtaV9pbmZv ZnJhbWVfbG9nKEtFUk5fREVCVUcsIGRldl9wcml2LT5kcm0uZGV2LCBhKTsKKwkJZHJtX2RiZyhE Uk1fVVRfS01TLCAiZm91bmQiKTsKKwkJaGRtaV9pbmZvZnJhbWVfbG9nKEtFUk5fREVCVUcsIGRl dl9wcml2LT5kcm0uZGV2LCBiKTsKKwl9IGVsc2UgeworCQlkcm1fZXJyKCJtaXNtYXRjaCBpbiAl cyBpbmZvZnJhbWUiLCBuYW1lKTsKKwkJZHJtX2VycigiZXhwZWN0ZWQ6Iik7CisJCWhkbWlfaW5m b2ZyYW1lX2xvZyhLRVJOX0VSUiwgZGV2X3ByaXYtPmRybS5kZXYsIGEpOworCQlkcm1fZXJyKCJm b3VuZCIpOworCQloZG1pX2luZm9mcmFtZV9sb2coS0VSTl9FUlIsIGRldl9wcml2LT5kcm0uZGV2 LCBiKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIF9fcHJpbnRmKDMsIDQpCitwaXBlX2NvbmZpZ19l cnIoYm9vbCBhZGp1c3QsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4u KQoreworCXN0cnVjdCB2YV9mb3JtYXQgdmFmOworCXZhX2xpc3QgYXJnczsKKworCXZhX3N0YXJ0 KGFyZ3MsIGZvcm1hdCk7CisJdmFmLmZtdCA9IGZvcm1hdDsKKwl2YWYudmEgPSAmYXJnczsKKwor CWlmIChhZGp1c3QpCisJCWRybV9kYmcoRFJNX1VUX0tNUywgIm1pc21hdGNoIGluICVzICVwViIs IG5hbWUsICZ2YWYpOworCWVsc2UKKwkJZHJtX2VycigibWlzbWF0Y2ggaW4gJXMgJXBWIiwgbmFt ZSwgJnZhZik7CisKKwl2YV9lbmQoYXJncyk7Cit9CisKK3N0YXRpYyBib29sIGZhc3Rib290X2Vu YWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCWlmIChpOTE1X21v ZHBhcmFtcy5mYXN0Ym9vdCAhPSAtMSkKKwkJcmV0dXJuIGk5MTVfbW9kcGFyYW1zLmZhc3Rib290 OworCisJLyogRW5hYmxlIGZhc3Rib290IGJ5IGRlZmF1bHQgb24gU2t5bGFrZSBhbmQgbmV3ZXIg Ki8KKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQorCQlyZXR1cm4gdHJ1ZTsKKworCS8q IEVuYWJsZSBmYXN0Ym9vdCBieSBkZWZhdWx0IG9uIFZMViBhbmQgQ0hWICovCisJaWYgKElTX1ZB TExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQorCQlyZXR1cm4g dHJ1ZTsKKworCS8qIERpc2FibGVkIGJ5IGRlZmF1bHQgb24gYWxsIG90aGVycyAqLworCXJldHVy biBmYWxzZTsKK30KKworYm9vbAoraW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj dXJyZW50X2NvbmZpZywKKwkJCSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmln LAorCQkJICBib29sIGFkanVzdCkKK3sKKwlib29sIHJldCA9IHRydWU7CisJYm9vbCBmaXh1cF9p bmhlcml0ZWQgPSBhZGp1c3QgJiYKKwkJKGN1cnJlbnRfY29uZmlnLT5iYXNlLm1vZGUucHJpdmF0 ZV9mbGFncyAmIEk5MTVfTU9ERV9GTEFHX0lOSEVSSVRFRCkgJiYKKwkJIShwaXBlX2NvbmZpZy0+ YmFzZS5tb2RlLnByaXZhdGVfZmxhZ3MgJiBJOTE1X01PREVfRkxBR19JTkhFUklURUQpOworCisJ aWYgKGZpeHVwX2luaGVyaXRlZCAmJiAhZmFzdGJvb3RfZW5hYmxlZChkZXZfcHJpdikpIHsKKwkJ RFJNX0RFQlVHX0tNUygiaW5pdGlhbCBtb2Rlc2V0IGFuZCBmYXN0Ym9vdCBub3Qgc2V0XG4iKTsK KwkJcmV0ID0gZmFsc2U7CisJfQorCisjZGVmaW5lIFBJUEVfQ09ORl9DSEVDS19YKG5hbWUpIGRv IHsgXAorCWlmIChjdXJyZW50X2NvbmZpZy0+bmFtZSAhPSBwaXBlX2NvbmZpZy0+bmFtZSkgeyBc CisJCXBpcGVfY29uZmlnX2VycihhZGp1c3QsIF9fc3RyaW5naWZ5KG5hbWUpLCBcCisJCQkgICIo ZXhwZWN0ZWQgMHglMDh4LCBmb3VuZCAweCUwOHgpXG4iLCBcCisJCQkgIGN1cnJlbnRfY29uZmln LT5uYW1lLCBcCisJCQkgIHBpcGVfY29uZmlnLT5uYW1lKTsgXAorCQlyZXQgPSBmYWxzZTsgXAor CX0gXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBQSVBFX0NPTkZfQ0hFQ0tfSShuYW1lKSBkbyB7 IFwKKwlpZiAoY3VycmVudF9jb25maWctPm5hbWUgIT0gcGlwZV9jb25maWctPm5hbWUpIHsgXAor CQlwaXBlX2NvbmZpZ19lcnIoYWRqdXN0LCBfX3N0cmluZ2lmeShuYW1lKSwgXAorCQkJICAiKGV4 cGVjdGVkICVpLCBmb3VuZCAlaSlcbiIsIFwKKwkJCSAgY3VycmVudF9jb25maWctPm5hbWUsIFwK KwkJCSAgcGlwZV9jb25maWctPm5hbWUpOyBcCisJCXJldCA9IGZhbHNlOyBcCisJfSBcCit9IHdo aWxlICgwKQorCisjZGVmaW5lIFBJUEVfQ09ORl9DSEVDS19CT09MKG5hbWUpIGRvIHsgXAorCWlm IChjdXJyZW50X2NvbmZpZy0+bmFtZSAhPSBwaXBlX2NvbmZpZy0+bmFtZSkgeyBcCisJCXBpcGVf Y29uZmlnX2VycihhZGp1c3QsIF9fc3RyaW5naWZ5KG5hbWUpLCBcCisJCQkgICIoZXhwZWN0ZWQg JXMsIGZvdW5kICVzKVxuIiwgXAorCQkJICB5ZXNubyhjdXJyZW50X2NvbmZpZy0+bmFtZSksIFwK KwkJCSAgeWVzbm8ocGlwZV9jb25maWctPm5hbWUpKTsgXAorCQlyZXQgPSBmYWxzZTsgXAorCX0g XAorfSB3aGlsZSAoMCkKKworLyoKKyAqIENoZWNrcyBzdGF0ZSB3aGVyZSB3ZSBvbmx5IHJlYWQg b3V0IHRoZSBlbmFibGluZywgYnV0IG5vdCB0aGUgZW50aXJlCisgKiBzdGF0ZSBpdHNlbGYgKGxp a2UgZnVsbCBpbmZvZnJhbWVzIG9yIEVMRCBmb3IgYXVkaW8pLiBUaGVzZSBzdGF0ZXMKKyAqIHJl cXVpcmUgYSBmdWxsIG1vZGVzZXQgb24gYm9vdHVwIHRvIGZpeCB1cC4KKyAqLworI2RlZmluZSBQ SVBFX0NPTkZfQ0hFQ0tfQk9PTF9JTkNPTVBMRVRFKG5hbWUpIGRvIHsgXAorCWlmICghZml4dXBf aW5oZXJpdGVkIHx8ICghY3VycmVudF9jb25maWctPm5hbWUgJiYgIXBpcGVfY29uZmlnLT5uYW1l KSkgeyBcCisJCVBJUEVfQ09ORl9DSEVDS19CT09MKG5hbWUpOyBcCisJfSBlbHNlIHsgXAorCQlw aXBlX2NvbmZpZ19lcnIoYWRqdXN0LCBfX3N0cmluZ2lmeShuYW1lKSwgXAorCQkJICAidW5hYmxl IHRvIHZlcmlmeSB3aGV0aGVyIHN0YXRlIG1hdGNoZXMgZXhhY3RseSwgZm9yY2luZyBtb2Rlc2V0 IChleHBlY3RlZCAlcywgZm91bmQgJXMpXG4iLCBcCisJCQkgIHllc25vKGN1cnJlbnRfY29uZmln LT5uYW1lKSwgXAorCQkJICB5ZXNubyhwaXBlX2NvbmZpZy0+bmFtZSkpOyBcCisJCXJldCA9IGZh bHNlOyBcCisJfSBcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIFBJUEVfQ09ORl9DSEVDS19QKG5h bWUpIGRvIHsgXAorCWlmIChjdXJyZW50X2NvbmZpZy0+bmFtZSAhPSBwaXBlX2NvbmZpZy0+bmFt ZSkgeyBcCisJCXBpcGVfY29uZmlnX2VycihhZGp1c3QsIF9fc3RyaW5naWZ5KG5hbWUpLCBcCisJ CQkgICIoZXhwZWN0ZWQgJXAsIGZvdW5kICVwKVxuIiwgXAorCQkJICBjdXJyZW50X2NvbmZpZy0+ bmFtZSwgXAorCQkJICBwaXBlX2NvbmZpZy0+bmFtZSk7IFwKKwkJcmV0ID0gZmFsc2U7IFwKKwl9 IFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgUElQRV9DT05GX0NIRUNLX01fTihuYW1lKSBkbyB7 IFwKKwlpZiAoIWludGVsX2NvbXBhcmVfbGlua19tX24oJmN1cnJlbnRfY29uZmlnLT5uYW1lLCBc CisJCQkJICAgICZwaXBlX2NvbmZpZy0+bmFtZSxcCisJCQkJICAgIGFkanVzdCkpIHsgXAorCQlw aXBlX2NvbmZpZ19lcnIoYWRqdXN0LCBfX3N0cmluZ2lmeShuYW1lKSwgXAorCQkJICAiKGV4cGVj dGVkIHR1ICVpIGdtY2ggJWkvJWkgbGluayAlaS8laSwgIiBcCisJCQkgICJmb3VuZCB0dSAlaSwg Z21jaCAlaS8laSBsaW5rICVpLyVpKVxuIiwgXAorCQkJICBjdXJyZW50X2NvbmZpZy0+bmFtZS50 dSwgXAorCQkJICBjdXJyZW50X2NvbmZpZy0+bmFtZS5nbWNoX20sIFwKKwkJCSAgY3VycmVudF9j b25maWctPm5hbWUuZ21jaF9uLCBcCisJCQkgIGN1cnJlbnRfY29uZmlnLT5uYW1lLmxpbmtfbSwg XAorCQkJICBjdXJyZW50X2NvbmZpZy0+bmFtZS5saW5rX24sIFwKKwkJCSAgcGlwZV9jb25maWct Pm5hbWUudHUsIFwKKwkJCSAgcGlwZV9jb25maWctPm5hbWUuZ21jaF9tLCBcCisJCQkgIHBpcGVf Y29uZmlnLT5uYW1lLmdtY2hfbiwgXAorCQkJICBwaXBlX2NvbmZpZy0+bmFtZS5saW5rX20sIFwK KwkJCSAgcGlwZV9jb25maWctPm5hbWUubGlua19uKTsgXAorCQlyZXQgPSBmYWxzZTsgXAorCX0g XAorfSB3aGlsZSAoMCkKKworLyogVGhpcyBpcyByZXF1aXJlZCBmb3IgQkRXKyB3aGVyZSB0aGVy ZSBpcyBvbmx5IG9uZSBzZXQgb2YgcmVnaXN0ZXJzIGZvcgorICogc3dpdGNoaW5nIGJldHdlZW4g aGlnaCBhbmQgbG93IFJSLgorICogVGhpcyBtYWNybyBjYW4gYmUgdXNlZCB3aGVuZXZlciBhIGNv bXBhcmlzb24gaGFzIHRvIGJlIG1hZGUgYmV0d2VlbiBvbmUKKyAqIGh3IHN0YXRlIGFuZCBtdWx0 aXBsZSBzdyBzdGF0ZSB2YXJpYWJsZXMuCisgKi8KKyNkZWZpbmUgUElQRV9DT05GX0NIRUNLX01f Tl9BTFQobmFtZSwgYWx0X25hbWUpIGRvIHsgXAorCWlmICghaW50ZWxfY29tcGFyZV9saW5rX21f bigmY3VycmVudF9jb25maWctPm5hbWUsIFwKKwkJCQkgICAgJnBpcGVfY29uZmlnLT5uYW1lLCBh ZGp1c3QpICYmIFwKKwkgICAgIWludGVsX2NvbXBhcmVfbGlua19tX24oJmN1cnJlbnRfY29uZmln LT5hbHRfbmFtZSwgXAorCQkJCSAgICAmcGlwZV9jb25maWctPm5hbWUsIGFkanVzdCkpIHsgXAor CQlwaXBlX2NvbmZpZ19lcnIoYWRqdXN0LCBfX3N0cmluZ2lmeShuYW1lKSwgXAorCQkJICAiKGV4 cGVjdGVkIHR1ICVpIGdtY2ggJWkvJWkgbGluayAlaS8laSwgIiBcCisJCQkgICJvciB0dSAlaSBn bWNoICVpLyVpIGxpbmsgJWkvJWksICIgXAorCQkJICAiZm91bmQgdHUgJWksIGdtY2ggJWkvJWkg bGluayAlaS8laSlcbiIsIFwKKwkJCSAgY3VycmVudF9jb25maWctPm5hbWUudHUsIFwKKwkJCSAg Y3VycmVudF9jb25maWctPm5hbWUuZ21jaF9tLCBcCisJCQkgIGN1cnJlbnRfY29uZmlnLT5uYW1l LmdtY2hfbiwgXAorCQkJICBjdXJyZW50X2NvbmZpZy0+bmFtZS5saW5rX20sIFwKKwkJCSAgY3Vy cmVudF9jb25maWctPm5hbWUubGlua19uLCBcCisJCQkgIGN1cnJlbnRfY29uZmlnLT5hbHRfbmFt ZS50dSwgXAorCQkJICBjdXJyZW50X2NvbmZpZy0+YWx0X25hbWUuZ21jaF9tLCBcCisJCQkgIGN1 cnJlbnRfY29uZmlnLT5hbHRfbmFtZS5nbWNoX24sIFwKKwkJCSAgY3VycmVudF9jb25maWctPmFs dF9uYW1lLmxpbmtfbSwgXAorCQkJICBjdXJyZW50X2NvbmZpZy0+YWx0X25hbWUubGlua19uLCBc CisJCQkgIHBpcGVfY29uZmlnLT5uYW1lLnR1LCBcCisJCQkgIHBpcGVfY29uZmlnLT5uYW1lLmdt Y2hfbSwgXAorCQkJICBwaXBlX2NvbmZpZy0+bmFtZS5nbWNoX24sIFwKKwkJCSAgcGlwZV9jb25m aWctPm5hbWUubGlua19tLCBcCisJCQkgIHBpcGVfY29uZmlnLT5uYW1lLmxpbmtfbik7IFwKKwkJ cmV0ID0gZmFsc2U7IFwKKwl9IFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgUElQRV9DT05GX0NI RUNLX0ZMQUdTKG5hbWUsIG1hc2spIGRvIHsgXAorCWlmICgoY3VycmVudF9jb25maWctPm5hbWUg XiBwaXBlX2NvbmZpZy0+bmFtZSkgJiAobWFzaykpIHsgXAorCQlwaXBlX2NvbmZpZ19lcnIoYWRq dXN0LCBfX3N0cmluZ2lmeShuYW1lKSwgXAorCQkJICAiKCV4KSAoZXhwZWN0ZWQgJWksIGZvdW5k ICVpKVxuIiwgXAorCQkJICAobWFzayksIFwKKwkJCSAgY3VycmVudF9jb25maWctPm5hbWUgJiAo bWFzayksIFwKKwkJCSAgcGlwZV9jb25maWctPm5hbWUgJiAobWFzaykpOyBcCisJCXJldCA9IGZh bHNlOyBcCisJfSBcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIFBJUEVfQ09ORl9DSEVDS19DTE9D S19GVVpaWShuYW1lKSBkbyB7IFwKKwlpZiAoIWludGVsX2Z1enp5X2Nsb2NrX2NoZWNrKGN1cnJl bnRfY29uZmlnLT5uYW1lLCBwaXBlX2NvbmZpZy0+bmFtZSkpIHsgXAorCQlwaXBlX2NvbmZpZ19l cnIoYWRqdXN0LCBfX3N0cmluZ2lmeShuYW1lKSwgXAorCQkJICAiKGV4cGVjdGVkICVpLCBmb3Vu ZCAlaSlcbiIsIFwKKwkJCSAgY3VycmVudF9jb25maWctPm5hbWUsIFwKKwkJCSAgcGlwZV9jb25m aWctPm5hbWUpOyBcCisJCXJldCA9IGZhbHNlOyBcCisJfSBcCit9IHdoaWxlICgwKQorCisjZGVm aW5lIFBJUEVfQ09ORl9DSEVDS19JTkZPRlJBTUUobmFtZSkgZG8geyBcCisJaWYgKCFpbnRlbF9j b21wYXJlX2luZm9mcmFtZSgmY3VycmVudF9jb25maWctPmluZm9mcmFtZXMubmFtZSwgXAorCQkJ CSAgICAgJnBpcGVfY29uZmlnLT5pbmZvZnJhbWVzLm5hbWUpKSB7IFwKKwkJcGlwZV9jb25maWdf aW5mb2ZyYW1lX2VycihkZXZfcHJpdiwgYWRqdXN0LCBfX3N0cmluZ2lmeShuYW1lKSwgXAorCQkJ CQkgICZjdXJyZW50X2NvbmZpZy0+aW5mb2ZyYW1lcy5uYW1lLCBcCisJCQkJCSAgJnBpcGVfY29u ZmlnLT5pbmZvZnJhbWVzLm5hbWUpOyBcCisJCXJldCA9IGZhbHNlOyBcCisJfSBcCit9IHdoaWxl ICgwKQorCisjZGVmaW5lIFBJUEVfQ09ORl9RVUlSSyhxdWlyaykgXAorCSgoY3VycmVudF9jb25m aWctPnF1aXJrcyB8IHBpcGVfY29uZmlnLT5xdWlya3MpICYgKHF1aXJrKSkKKworCVBJUEVfQ09O Rl9DSEVDS19JKGNwdV90cmFuc2NvZGVyKTsKKworCVBJUEVfQ09ORl9DSEVDS19CT09MKGhhc19w Y2hfZW5jb2Rlcik7CisJUElQRV9DT05GX0NIRUNLX0koZmRpX2xhbmVzKTsKKwlQSVBFX0NPTkZf Q0hFQ0tfTV9OKGZkaV9tX24pOworCisJUElQRV9DT05GX0NIRUNLX0kobGFuZV9jb3VudCk7CisJ UElQRV9DT05GX0NIRUNLX1gobGFuZV9sYXRfb3B0aW1fbWFzayk7CisKKwlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA8IDgpIHsKKwkJUElQRV9DT05GX0NIRUNLX01fTihkcF9tX24pOworCisJCWlm IChjdXJyZW50X2NvbmZpZy0+aGFzX2RycnMpCisJCQlQSVBFX0NPTkZfQ0hFQ0tfTV9OKGRwX20y X24yKTsKKwl9IGVsc2UKKwkJUElQRV9DT05GX0NIRUNLX01fTl9BTFQoZHBfbV9uLCBkcF9tMl9u Mik7CisKKwlQSVBFX0NPTkZfQ0hFQ0tfWChvdXRwdXRfdHlwZXMpOworCisJUElQRV9DT05GX0NI RUNLX0koYmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaGRpc3BsYXkpOworCVBJUEVfQ09ORl9DSEVD S19JKGJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbCk7CisJUElQRV9DT05GX0NIRUNLX0ko YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaGJsYW5rX3N0YXJ0KTsKKwlQSVBFX0NPTkZfQ0hFQ0tf SShiYXNlLmFkanVzdGVkX21vZGUuY3J0Y19oYmxhbmtfZW5kKTsKKwlQSVBFX0NPTkZfQ0hFQ0tf SShiYXNlLmFkanVzdGVkX21vZGUuY3J0Y19oc3luY19zdGFydCk7CisJUElQRV9DT05GX0NIRUNL X0koYmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHN5bmNfZW5kKTsKKworCVBJUEVfQ09ORl9DSEVD S19JKGJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZkaXNwbGF5KTsKKwlQSVBFX0NPTkZfQ0hFQ0tf SShiYXNlLmFkanVzdGVkX21vZGUuY3J0Y192dG90YWwpOworCVBJUEVfQ09ORl9DSEVDS19JKGJh c2UuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZibGFua19zdGFydCk7CisJUElQRV9DT05GX0NIRUNLX0ko YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdmJsYW5rX2VuZCk7CisJUElQRV9DT05GX0NIRUNLX0ko YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdnN5bmNfc3RhcnQpOworCVBJUEVfQ09ORl9DSEVDS19J KGJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZzeW5jX2VuZCk7CisKKwlQSVBFX0NPTkZfQ0hFQ0tf SShwaXhlbF9tdWx0aXBsaWVyKTsKKwlQSVBFX0NPTkZfQ0hFQ0tfSShvdXRwdXRfZm9ybWF0KTsK KwlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChoYXNfaGRtaV9zaW5rKTsKKwlpZiAoKElOVEVMX0dFTihk ZXZfcHJpdikgPCA4ICYmICFJU19IQVNXRUxMKGRldl9wcml2KSkgfHwKKwkgICAgSVNfVkFMTEVZ VklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCisJCVBJUEVfQ09ORl9D SEVDS19CT09MKGxpbWl0ZWRfY29sb3JfcmFuZ2UpOworCisJUElQRV9DT05GX0NIRUNLX0JPT0wo aGRtaV9zY3JhbWJsaW5nKTsKKwlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChoZG1pX2hpZ2hfdG1kc19j bG9ja19yYXRpbyk7CisJUElQRV9DT05GX0NIRUNLX0JPT0xfSU5DT01QTEVURShoYXNfaW5mb2Zy YW1lKTsKKworCVBJUEVfQ09ORl9DSEVDS19CT09MX0lOQ09NUExFVEUoaGFzX2F1ZGlvKTsKKwor CVBJUEVfQ09ORl9DSEVDS19GTEFHUyhiYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MsCisJCQkgICAg ICBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSk7CisKKwlpZiAoIVBJUEVfQ09ORl9RVUlSSyhQSVBF X0NPTkZJR19RVUlSS19NT0RFX1NZTkNfRkxBR1MpKSB7CisJCVBJUEVfQ09ORl9DSEVDS19GTEFH UyhiYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MsCisJCQkJICAgICAgRFJNX01PREVfRkxBR19QSFNZ TkMpOworCQlQSVBFX0NPTkZfQ0hFQ0tfRkxBR1MoYmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzLAor CQkJCSAgICAgIERSTV9NT0RFX0ZMQUdfTkhTWU5DKTsKKwkJUElQRV9DT05GX0NIRUNLX0ZMQUdT KGJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncywKKwkJCQkgICAgICBEUk1fTU9ERV9GTEFHX1BWU1lO Qyk7CisJCVBJUEVfQ09ORl9DSEVDS19GTEFHUyhiYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MsCisJ CQkJICAgICAgRFJNX01PREVfRkxBR19OVlNZTkMpOworCX0KKworCVBJUEVfQ09ORl9DSEVDS19Y KGdtY2hfcGZpdC5jb250cm9sKTsKKwkvKiBwZml0IHJhdGlvcyBhcmUgYXV0b2NvbXB1dGVkIGJ5 IHRoZSBodyBvbiBnZW40KyAqLworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkKKwkJUElQ RV9DT05GX0NIRUNLX1goZ21jaF9wZml0LnBnbV9yYXRpb3MpOworCVBJUEVfQ09ORl9DSEVDS19Y KGdtY2hfcGZpdC5sdmRzX2JvcmRlcl9iaXRzKTsKKworCWlmICghYWRqdXN0KSB7CisJCVBJUEVf Q09ORl9DSEVDS19JKHBpcGVfc3JjX3cpOworCQlQSVBFX0NPTkZfQ0hFQ0tfSShwaXBlX3NyY19o KTsKKworCQlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChwY2hfcGZpdC5lbmFibGVkKTsKKwkJaWYgKGN1 cnJlbnRfY29uZmlnLT5wY2hfcGZpdC5lbmFibGVkKSB7CisJCQlQSVBFX0NPTkZfQ0hFQ0tfWChw Y2hfcGZpdC5wb3MpOworCQkJUElQRV9DT05GX0NIRUNLX1gocGNoX3BmaXQuc2l6ZSk7CisJCX0K KworCQlQSVBFX0NPTkZfQ0hFQ0tfSShzY2FsZXJfc3RhdGUuc2NhbGVyX2lkKTsKKwkJUElQRV9D T05GX0NIRUNLX0NMT0NLX0ZVWlpZKHBpeGVsX3JhdGUpOworCisJCVBJUEVfQ09ORl9DSEVDS19Y KGdhbW1hX21vZGUpOworCQlpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCisJCQlQSVBFX0NP TkZfQ0hFQ0tfWChjZ21fbW9kZSk7CisJCWVsc2UKKwkJCVBJUEVfQ09ORl9DSEVDS19YKGNzY19t b2RlKTsKKwkJUElQRV9DT05GX0NIRUNLX0JPT0woZ2FtbWFfZW5hYmxlKTsKKwkJUElQRV9DT05G X0NIRUNLX0JPT0woY3NjX2VuYWJsZSk7CisJfQorCisJUElQRV9DT05GX0NIRUNLX0JPT0woZG91 YmxlX3dpZGUpOworCisJUElQRV9DT05GX0NIRUNLX1Aoc2hhcmVkX2RwbGwpOworCVBJUEVfQ09O Rl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuZHBsbCk7CisJUElQRV9DT05GX0NIRUNLX1goZHBsbF9o d19zdGF0ZS5kcGxsX21kKTsKKwlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLmZwMCk7 CisJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5mcDEpOworCVBJUEVfQ09ORl9DSEVD S19YKGRwbGxfaHdfc3RhdGUud3JwbGwpOworCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3Rh dGUuc3BsbCk7CisJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5jdHJsMSk7CisJUElQ RV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5jZmdjcjEpOworCVBJUEVfQ09ORl9DSEVDS19Y KGRwbGxfaHdfc3RhdGUuY2ZnY3IyKTsKKwlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRl LmNmZ2NyMCk7CisJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5lYmIwKTsKKwlQSVBF X0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLmViYjQpOworCVBJUEVfQ09ORl9DSEVDS19YKGRw bGxfaHdfc3RhdGUucGxsMCk7CisJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5wbGwx KTsKKwlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLnBsbDIpOworCVBJUEVfQ09ORl9D SEVDS19YKGRwbGxfaHdfc3RhdGUucGxsMyk7CisJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19z dGF0ZS5wbGw2KTsKKwlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLnBsbDgpOworCVBJ UEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGxsOSk7CisJUElQRV9DT05GX0NIRUNLX1go ZHBsbF9od19zdGF0ZS5wbGwxMCk7CisJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5w Y3NkdzEyKTsKKwlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3JlZmNsa2luX2N0 bCk7CisJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19jbGt0b3AyX2NvcmVjbGtj dGwxKTsKKwlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX2Nsa3RvcDJfaHNjbGtj dGwpOworCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUubWdfcGxsX2RpdjApOworCVBJ UEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUubWdfcGxsX2RpdjEpOworCVBJUEVfQ09ORl9D SEVDS19YKGRwbGxfaHdfc3RhdGUubWdfcGxsX2xmKTsKKwlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxs X2h3X3N0YXRlLm1nX3BsbF9mcmFjX2xvY2spOworCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdf c3RhdGUubWdfcGxsX3NzYyk7CisJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19w bGxfYmlhcyk7CisJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19wbGxfdGRjX2Nv bGRzdF9iaWFzKTsKKworCVBJUEVfQ09ORl9DSEVDS19YKGRzaV9wbGwuY3RybCk7CisJUElQRV9D T05GX0NIRUNLX1goZHNpX3BsbC5kaXYpOworCisJaWYgKElTX0c0WChkZXZfcHJpdikgfHwgSU5U RUxfR0VOKGRldl9wcml2KSA+PSA1KQorCQlQSVBFX0NPTkZfQ0hFQ0tfSShwaXBlX2JwcCk7CisK KwlQSVBFX0NPTkZfQ0hFQ0tfQ0xPQ0tfRlVaWlkoYmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xv Y2spOworCVBJUEVfQ09ORl9DSEVDS19DTE9DS19GVVpaWShwb3J0X2Nsb2NrKTsKKworCVBJUEVf Q09ORl9DSEVDS19JKG1pbl92b2x0YWdlX2xldmVsKTsKKworCVBJUEVfQ09ORl9DSEVDS19YKGlu Zm9mcmFtZXMuZW5hYmxlKTsKKwlQSVBFX0NPTkZfQ0hFQ0tfWChpbmZvZnJhbWVzLmdjcCk7CisJ UElQRV9DT05GX0NIRUNLX0lORk9GUkFNRShhdmkpOworCVBJUEVfQ09ORl9DSEVDS19JTkZPRlJB TUUoc3BkKTsKKwlQSVBFX0NPTkZfQ0hFQ0tfSU5GT0ZSQU1FKGhkbWkpOworCisjdW5kZWYgUElQ RV9DT05GX0NIRUNLX1gKKyN1bmRlZiBQSVBFX0NPTkZfQ0hFQ0tfSQorI3VuZGVmIFBJUEVfQ09O Rl9DSEVDS19CT09MCisjdW5kZWYgUElQRV9DT05GX0NIRUNLX0JPT0xfSU5DT01QTEVURQorI3Vu ZGVmIFBJUEVfQ09ORl9DSEVDS19QCisjdW5kZWYgUElQRV9DT05GX0NIRUNLX0ZMQUdTCisjdW5k ZWYgUElQRV9DT05GX0NIRUNLX0NMT0NLX0ZVWlpZCisjdW5kZWYgUElQRV9DT05GX1FVSVJLCisK KwlyZXR1cm4gcmV0OworfQorCit2b2lkIGludGVsX3BpcGVfY29uZmlnX3Nhbml0eV9jaGVjayhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJICAgIGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKK3sKKwlpZiAocGlwZV9jb25maWctPmhhc19w Y2hfZW5jb2RlcikgeworCQlpbnQgZmRpX2RvdGNsb2NrID0gaW50ZWxfZG90Y2xvY2tfY2FsY3Vs YXRlKGludGVsX2ZkaV9saW5rX2ZyZXEoZGV2X3ByaXYsIHBpcGVfY29uZmlnKSwKKwkJCQkJCQkg ICAgJnBpcGVfY29uZmlnLT5mZGlfbV9uKTsKKwkJaW50IGRvdGNsb2NrID0gcGlwZV9jb25maWct PmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOworCisJCS8qCisJCSAqIEZESSBhbHJlYWR5 IHByb3ZpZGVkIG9uZSBpZGVhIGZvciB0aGUgZG90Y2xvY2suCisJCSAqIFllbGwgaWYgdGhlIGVu Y29kZXIgZGlzYWdyZWVzLgorCQkgKi8KKwkJV0FSTighaW50ZWxfZnV6enlfY2xvY2tfY2hlY2so ZmRpX2RvdGNsb2NrLCBkb3RjbG9jayksCisJCSAgICAgIkZESSBkb3RjbG9jayBhbmQgZW5jb2Rl ciBkb3RjbG9jayBtaXNtYXRjaCwgZmRpOiAlaSwgZW5jb2RlcjogJWlcbiIsCisJCSAgICAgZmRp X2RvdGNsb2NrLCBkb3RjbG9jayk7CisJfQorfQorCiBzdGF0aWMgdm9pZCB2ZXJpZnlfd21fc3Rh dGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkJICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq bmV3X3N0YXRlKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmVy aWZ5LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZXJpZnkuaAppbmRleCA0Yjc1MWVh Li5mYWFmOGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3ZlcmlmeS5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3ZlcmlmeS5oCkBAIC0xMCw3ICsxMCwx NSBAQCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZTsKIHN0cnVjdCBkcm1fY3J0YzsKIHN0cnVjdCBk cm1fY3J0Y19zdGF0ZTsKIHN0cnVjdCBkcm1fZGV2aWNlOworc3RydWN0IGRybV9pOTE1X3ByaXZh dGU7CitzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZTsKIAordm9pZCBpbnRlbF9waXBlX2NvbmZpZ19z YW5pdHlfY2hlY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCSAgICBj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpOworYm9vbCBpbnRlbF9w aXBlX2NvbmZpZ19jb21wYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJ CSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3VycmVudF9jb25maWcsCisJCQkgICAg ICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAorCQkJICAgICAgIGJvb2wg YWRqdXN0KTsKIHZvaWQgaW50ZWxfdmVyaWZ5X21vZGVzZXRfY3J0YyhzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCiAJCQkgICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCQkJICAg ICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX3N0YXRlLAotLSAKMi4yMC4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=