From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dongwon Kim Subject: [RFC PATCH 35/60] hyper_dmabuf: 128bit hyper_dmabuf_id with random keys Date: Tue, 19 Dec 2017 11:29:51 -0800 Message-ID: <1513711816-2618-35-git-send-email-dongwon.kim@intel.com> References: <1513711816-2618-1-git-send-email-dongwon.kim@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1513711816-2618-1-git-send-email-dongwon.kim@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: linux-kernel@vger.kernel.org Cc: xen-devel@lists.xenproject.org, mateuszx.potrola@intel.com, dri-devel@lists.freedesktop.org, dongwon.kim@intel.com List-Id: dri-devel@lists.freedesktop.org VGhlIGxlbmd0aCBvZiBoeXBlcl9kbWFidWZfaWQgaXMgaW5jcmVhc2VkIHRvIDEyOGJpdCBieSBh ZGRpbmcKcmFuZG9tIGtleSAoOTZiaXQpIHRvIHRoZSBpZC4gVGhpcyBpcyB0byBwcmV2ZW50IHBv c3NpYmxlIGxlYWsKb2YgdGhlIGlkIGJ5IGd1ZXNzaW5nIG9uIGltcG9ydGVyIFZNIChieSB1bmF1 dGhvcml6ZWQgYXBwbGljYXRpb24pLgoKaHlwZXJfZG1hYnVmX2lkX3QgaXMgbm93IGRlZmluZWQg YXMsCgoJdHlwZWRlZiBzdHJ1Y3QgewoJICAgIGludCBpZDsKCSAgICBpbnQgcm5nX2tleVszXTsK CX0gaHlwZXJfZG1hYnVmX2lkX3Q7CgpTaWduZWQtb2ZmLWJ5OiBEb25nd29uIEtpbSA8ZG9uZ3dv bi5raW1AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFi dWZfZHJ2LmMgICAgICAgIHwgICAyICstCiBkcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJf ZG1hYnVmX2Rydi5oICAgICAgICB8ICAgMyArLQogZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5 cGVyX2RtYWJ1Zl9pZC5jICAgICAgICAgfCAgNTcgKysrKy0tCiBkcml2ZXJzL3hlbi9oeXBlcl9k bWFidWYvaHlwZXJfZG1hYnVmX2lkLmggICAgICAgICB8ICAxNyArLQogZHJpdmVycy94ZW4vaHlw ZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9pbXAuYyAgICAgICAgfCAgNTEgKysrLS0tCiBkcml2ZXJz L3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2lvY3RsLmMgICAgICB8IDE5OSArKysrKysr KysrKysrLS0tLS0tLS0KIGRyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfbGlz dC5jICAgICAgIHwgIDg3ICsrKysrKy0tLQogZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVy X2RtYWJ1Zl9saXN0LmggICAgICAgfCAgMTAgKy0KIGRyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9o eXBlcl9kbWFidWZfbXNnLmMgICAgICAgIHwgMTE1ICsrKysrKystLS0tLQogZHJpdmVycy94ZW4v aHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9tc2cuaCAgICAgICAgfCAgIDIgKy0KIC4uLi94ZW4v aHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9yZW1vdGVfc3luYy5jICAgIHwgIDIxICsrLQogLi4u L3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX3JlbW90ZV9zeW5jLmggICAgfCAgIDIgKy0K IGRyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfc3RydWN0LmggICAgIHwgIDIw ICsrLQogLi4uL3hlbi9oeXBlcl9kbWFidWYveGVuL2h5cGVyX2RtYWJ1Zl94ZW5fY29tbS5oICAg fCAgIDIgLQogaW5jbHVkZS91YXBpL3hlbi9oeXBlcl9kbWFidWYuaCAgICAgICAgICAgICAgICAg ICAgfCAgMTMgKy0KIDE1IGZpbGVzIGNoYW5nZWQsIDM3MiBpbnNlcnRpb25zKCspLCAyMjkgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2Rt YWJ1Zl9kcnYuYyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfZHJ2LmMK aW5kZXggOTJkNzEwZS4uYzgwMmMzZSAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vaHlwZXJfZG1h YnVmL2h5cGVyX2RtYWJ1Zl9kcnYuYworKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlw ZXJfZG1hYnVmX2Rydi5jCkBAIC0zMCw5ICszMCw5IEBACiAjaW5jbHVkZSA8bGludXgvbW9kdWxl Lmg+CiAjaW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+CiAjaW5jbHVkZSA8bGludXgvZGV2aWNl Lmg+CisjaW5jbHVkZSAiaHlwZXJfZG1hYnVmX2Rydi5oIgogI2luY2x1ZGUgImh5cGVyX2RtYWJ1 Zl9jb25mLmgiCiAjaW5jbHVkZSAiaHlwZXJfZG1hYnVmX21zZy5oIgotI2luY2x1ZGUgImh5cGVy X2RtYWJ1Zl9kcnYuaCIKICNpbmNsdWRlICJoeXBlcl9kbWFidWZfbGlzdC5oIgogI2luY2x1ZGUg Imh5cGVyX2RtYWJ1Zl9pZC5oIgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFi dWYvaHlwZXJfZG1hYnVmX2Rydi5oIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2Rt YWJ1Zl9kcnYuaAppbmRleCA5MWZkYTA0Li5mZmU0ZDUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hl bi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2Rydi5oCisrKyBiL2RyaXZlcnMveGVuL2h5cGVy X2RtYWJ1Zi9oeXBlcl9kbWFidWZfZHJ2LmgKQEAgLTI2LDExICsyNiwxMiBAQAogI2RlZmluZSBf X0xJTlVYX1BVQkxJQ19IWVBFUl9ETUFCVUZfRFJWX0hfXwogCiAjaW5jbHVkZSA8bGludXgvZGV2 aWNlLmg+CisjaW5jbHVkZSA8eGVuL2h5cGVyX2RtYWJ1Zi5oPgogCiBzdHJ1Y3QgaHlwZXJfZG1h YnVmX3JlcTsKIAogc3RydWN0IGxpc3RfcmV1c2FibGVfaWQgewotCWludCBpZDsKKwloeXBlcl9k bWFidWZfaWRfdCBoaWQ7CiAJc3RydWN0IGxpc3RfaGVhZCBsaXN0OwogfTsKIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9pZC5jIGIvZHJpdmVycy94 ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9pZC5jCmluZGV4IGZlOTUwOTEuLmY1OWRlZTMg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfaWQuYwor KysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2lkLmMKQEAgLTI4LDEz ICsyOCwxNCBAQAogCiAjaW5jbHVkZSA8bGludXgvbGlzdC5oPgogI2luY2x1ZGUgPGxpbnV4L3Ns YWIuaD4KLSNpbmNsdWRlICJoeXBlcl9kbWFidWZfbXNnLmgiCisjaW5jbHVkZSA8bGludXgvcmFu ZG9tLmg+CiAjaW5jbHVkZSAiaHlwZXJfZG1hYnVmX2Rydi5oIgogI2luY2x1ZGUgImh5cGVyX2Rt YWJ1Zl9pZC5oIgorI2luY2x1ZGUgImh5cGVyX2RtYWJ1Zl9tc2cuaCIKIAogZXh0ZXJuIHN0cnVj dCBoeXBlcl9kbWFidWZfcHJpdmF0ZSBoeXBlcl9kbWFidWZfcHJpdmF0ZTsKIAotdm9pZCBzdG9y ZV9yZXVzYWJsZV9pZChpbnQgaWQpCit2b2lkIHN0b3JlX3JldXNhYmxlX2hpZChoeXBlcl9kbWFi dWZfaWRfdCBoaWQpCiB7CiAJc3RydWN0IGxpc3RfcmV1c2FibGVfaWQgKnJldXNhYmxlX2hlYWQg PSBoeXBlcl9kbWFidWZfcHJpdmF0ZS5pZF9xdWV1ZTsKIAlzdHJ1Y3QgbGlzdF9yZXVzYWJsZV9p ZCAqbmV3X3JldXNhYmxlOwpAQCAtNDcsMTUgKzQ4LDE1IEBAIHZvaWQgc3RvcmVfcmV1c2FibGVf aWQoaW50IGlkKQogCQlyZXR1cm47CiAJfQogCi0JbmV3X3JldXNhYmxlLT5pZCA9IGlkOworCW5l d19yZXVzYWJsZS0+aGlkID0gaGlkOwogCiAJbGlzdF9hZGQoJm5ld19yZXVzYWJsZS0+bGlzdCwg JnJldXNhYmxlX2hlYWQtPmxpc3QpOwogfQogCi1zdGF0aWMgaW50IHJldHJpZXZlX3JldXNhYmxl X2lkKHZvaWQpCitzdGF0aWMgaHlwZXJfZG1hYnVmX2lkX3QgcmV0cmlldmVfcmV1c2FibGVfaGlk KHZvaWQpCiB7CiAJc3RydWN0IGxpc3RfcmV1c2FibGVfaWQgKnJldXNhYmxlX2hlYWQgPSBoeXBl cl9kbWFidWZfcHJpdmF0ZS5pZF9xdWV1ZTsKLQlpbnQgaWQ7CisJaHlwZXJfZG1hYnVmX2lkX3Qg aGlkID0gey0xLCB7MCwwLDB9fTsKIAogCS8qIGNoZWNrIHRoZXJlIGlzIHJldXNhYmxlIGlkICov CiAJaWYgKCFsaXN0X2VtcHR5KCZyZXVzYWJsZV9oZWFkLT5saXN0KSkgewpAQCAtNjQsMTIgKzY1 LDExIEBAIHN0YXRpYyBpbnQgcmV0cmlldmVfcmV1c2FibGVfaWQodm9pZCkKIAkJCQkJCSBsaXN0 KTsKIAogCQlsaXN0X2RlbCgmcmV1c2FibGVfaGVhZC0+bGlzdCk7Ci0JCWlkID0gcmV1c2FibGVf aGVhZC0+aWQ7CisJCWhpZCA9IHJldXNhYmxlX2hlYWQtPmhpZDsKIAkJa2ZyZWUocmV1c2FibGVf aGVhZCk7Ci0JCXJldHVybiBpZDsKIAl9CiAKLQlyZXR1cm4gLUVOT0VOVDsKKwlyZXR1cm4gaGlk OwogfQogCiB2b2lkIGRlc3Ryb3lfcmV1c2FibGVfbGlzdCh2b2lkKQpAQCAtOTIsMzEgKzkyLDUw IEBAIHZvaWQgZGVzdHJveV9yZXVzYWJsZV9saXN0KHZvaWQpCiAJfQogfQogCi1pbnQgaHlwZXJf ZG1hYnVmX2dldF9pZCh2b2lkKQoraHlwZXJfZG1hYnVmX2lkX3QgaHlwZXJfZG1hYnVmX2dldF9o aWQodm9pZCkKIHsKLQlzdGF0aWMgaW50IGlkID0gMDsKKwlzdGF0aWMgaW50IGNvdW50ID0gMDsK KwloeXBlcl9kbWFidWZfaWRfdCBoaWQ7CiAJc3RydWN0IGxpc3RfcmV1c2FibGVfaWQgKnJldXNh YmxlX2hlYWQ7Ci0JaW50IHJldDsKIAotCS8qIGZpcnN0IGNsYSB0byBoeXBlcl9kbWFidWZfZ2V0 X2lkICovCi0JaWYgKGlkID09IDApIHsKKwkvKiBmaXJzdCBjYWxsIHRvIGh5cGVyX2RtYWJ1Zl9n ZXRfaWQgKi8KKwlpZiAoY291bnQgPT0gMCkgewogCQlyZXVzYWJsZV9oZWFkID0ga21hbGxvYyhz aXplb2YoKnJldXNhYmxlX2hlYWQpLCBHRlBfS0VSTkVMKTsKIAogCQlpZiAoIXJldXNhYmxlX2hl YWQpIHsKIAkJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAogCQkJCSJObyBt ZW1vcnkgbGVmdCB0byBiZSBhbGxvY2F0ZWRcbiIpOwotCQkJcmV0dXJuIC1FTk9NRU07CisJCQly ZXR1cm4gKGh5cGVyX2RtYWJ1Zl9pZF90KXstMSwgezAsMCwwfX07CiAJCX0KIAotCQlyZXVzYWJs ZV9oZWFkLT5pZCA9IC0xOyAvKiBsaXN0IGhlYWQgaGF2ZSBpbnZhbGlkIGlkICovCisJCXJldXNh YmxlX2hlYWQtPmhpZC5pZCA9IC0xOyAvKiBsaXN0IGhlYWQgaGFzIGFuIGludmFsaWQgY291bnQg Ki8KIAkJSU5JVF9MSVNUX0hFQUQoJnJldXNhYmxlX2hlYWQtPmxpc3QpOwogCQloeXBlcl9kbWFi dWZfcHJpdmF0ZS5pZF9xdWV1ZSA9IHJldXNhYmxlX2hlYWQ7CiAJfQogCi0JcmV0ID0gcmV0cmll dmVfcmV1c2FibGVfaWQoKTsKKwloaWQgPSByZXRyaWV2ZV9yZXVzYWJsZV9oaWQoKTsKIAotCWlm IChyZXQgPCAwICYmIGlkIDwgSFlQRVJfRE1BQlVGX0lEX01BWCkKLQkJcmV0dXJuIEhZUEVSX0RN QUJVRl9JRF9DUkVBVEUoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZG9taWQsIGlkKyspOworCS8qY3Jl YXRpbmcgYSBuZXcgSC1JRCBvbmx5IGlmIG5vdGhpbmcgaW4gdGhlIHJldXNhYmxlIGlkIHF1ZXVl CisJICogYW5kIGNvdW50IGlzIGxlc3MgdGhhbiBtYXhpbXVtIGFsbG93ZWQKKwkgKi8KKwlpZiAo aGlkLmlkID09IC0xICYmIGNvdW50IDwgSFlQRVJfRE1BQlVGX0lEX01BWCkgeworCQloaWQuaWQg PSBIWVBFUl9ETUFCVUZfSURfQ1JFQVRFKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRvbWlkLCBjb3Vu dCsrKTsKKwkJLyogcmFuZG9tIGRhdGEgZW1iZWRkZWQgaW4gdGhlIGlkIGZvciBzZWN1cml0eSAq LworCQlnZXRfcmFuZG9tX2J5dGVzKCZoaWQucm5nX2tleVswXSwgMTIpOworCX0KKworCXJldHVy biBoaWQ7Cit9CisKK2Jvb2wgaHlwZXJfZG1hYnVmX2hpZF9rZXljb21wKGh5cGVyX2RtYWJ1Zl9p ZF90IGhpZDEsIGh5cGVyX2RtYWJ1Zl9pZF90IGhpZDIpCit7CisJaW50IGk7CisKKwkvKiBjb21w YXJlIGtleXMgKi8KKwlmb3IgKGk9MDsgaTwzOyBpKyspIHsKKwkJaWYgKGhpZDEucm5nX2tleVtp XSAhPSBoaWQyLnJuZ19rZXlbaV0pCisJCQlyZXR1cm4gZmFsc2U7CisJfQogCi0JcmV0dXJuIHJl dDsKKwlyZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1 Zi9oeXBlcl9kbWFidWZfaWQuaCBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFi dWZfaWQuaAppbmRleCA0Mzk0OTAzLi5hMzMzNmQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9o eXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2lkLmgKKysrIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1h YnVmL2h5cGVyX2RtYWJ1Zl9pZC5oCkBAIC0yNSwyNCArMjUsMjMgQEAKICNpZm5kZWYgX19IWVBF Ul9ETUFCVUZfSURfSF9fCiAjZGVmaW5lIF9fSFlQRVJfRE1BQlVGX0lEX0hfXwogCi0vKiBJbXBv cnRlciBjb21iaW5lIHNvdXJjZSBkb21haW4gaWQgd2l0aCBnaXZlbiBoeXBlcl9kbWFidWZfaWQK LSAqIHRvIG1ha2UgaXQgdW5pcXVlIGluIGNhc2UgdGhlcmUgYXJlIG11bHRpcGxlIGV4cG9ydGVy cyAqLworI2RlZmluZSBIWVBFUl9ETUFCVUZfSURfQ1JFQVRFKGRvbWlkLCBjbnQpIFwKKyAgICAg ICAgKCgoKGRvbWlkKSAmIDB4RkYpIDw8IDI0KSB8ICgoY250KSAmIDB4RkZGRkZGKSkKIAotI2Rl ZmluZSBIWVBFUl9ETUFCVUZfSURfQ1JFQVRFKGRvbWlkLCBpZCkgXAotCSgoKChkb21pZCkgJiAw eEZGKSA8PCAyNCkgfCAoKGlkKSAmIDB4RkZGRkZGKSkKLQotI2RlZmluZSBIWVBFUl9ETUFCVUZf RE9NX0lEKGlkKSBcCi0JKCgoaWQpID4+IDI0KSAmIDB4RkYpCisjZGVmaW5lIEhZUEVSX0RNQUJV Rl9ET01fSUQoaGlkKSBcCisgICAgICAgICgoKGhpZC5pZCkgPj4gMjQpICYgMHhGRikKIAogLyog Y3VycmVudGx5IG1heGltdW0gbnVtYmVyIG9mIGJ1ZmZlcnMgc2hhcmVkCiAgKiBhdCBhbnkgZ2l2 ZW4gbW9tZW50IGlzIGxpbWl0ZWQgdG8gMTAwMAogICovCiAjZGVmaW5lIEhZUEVSX0RNQUJVRl9J RF9NQVggMTAwMAogCi12b2lkIHN0b3JlX3JldXNhYmxlX2lkKGludCBpZCk7Cit2b2lkIHN0b3Jl X3JldXNhYmxlX2hpZChoeXBlcl9kbWFidWZfaWRfdCBoaWQpOwogCiB2b2lkIGRlc3Ryb3lfcmV1 c2FibGVfbGlzdCh2b2lkKTsKIAotaW50IGh5cGVyX2RtYWJ1Zl9nZXRfaWQodm9pZCk7CitoeXBl cl9kbWFidWZfaWRfdCBoeXBlcl9kbWFidWZfZ2V0X2hpZCh2b2lkKTsKKworYm9vbCBoeXBlcl9k bWFidWZfaGlkX2tleWNvbXAoaHlwZXJfZG1hYnVmX2lkX3QgaGlkMSwgaHlwZXJfZG1hYnVmX2lk X3QgaGlkMik7CiAKICNlbmRpZiAvKl9fSFlQRVJfRE1BQlVGX0lEX0gqLwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9pbXAuYyBiL2RyaXZlcnMveGVu L2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfaW1wLmMKaW5kZXggMzRkZmExOC4uMmJmMDgzNSAx MDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9pbXAuYwor KysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2ltcC5jCkBAIC0zMywx MSArMzMsMTEgQEAKICNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+CiAjaW5jbHVkZSA8eGVuL2dy YW50X3RhYmxlLmg+CiAjaW5jbHVkZSA8YXNtL3hlbi9wYWdlLmg+CisjaW5jbHVkZSAiaHlwZXJf ZG1hYnVmX2Rydi5oIgogI2luY2x1ZGUgImh5cGVyX2RtYWJ1Zl9zdHJ1Y3QuaCIKICNpbmNsdWRl ICJoeXBlcl9kbWFidWZfaW1wLmgiCiAjaW5jbHVkZSAiaHlwZXJfZG1hYnVmX2lkLmgiCiAjaW5j bHVkZSAiaHlwZXJfZG1hYnVmX21zZy5oIgotI2luY2x1ZGUgImh5cGVyX2RtYWJ1Zl9kcnYuaCIK ICNpbmNsdWRlICJoeXBlcl9kbWFidWZfbGlzdC5oIgogCiBleHRlcm4gc3RydWN0IGh5cGVyX2Rt YWJ1Zl9wcml2YXRlIGh5cGVyX2RtYWJ1Zl9wcml2YXRlOwpAQCAtMjU4LDE1ICsyNTgsMjAgQEAg aW50IGh5cGVyX2RtYWJ1Zl9jbGVhbnVwX3NndF9pbmZvKHN0cnVjdCBoeXBlcl9kbWFidWZfc2d0 X2luZm8gKnNndF9pbmZvLCBpbnQgZm8KIAogI2RlZmluZSBXQUlUX0FGVEVSX1NZTkNfUkVRIDAK IAotaW5saW5lIGludCBoeXBlcl9kbWFidWZfc3luY19yZXF1ZXN0KGludCBpZCwgaW50IGRtYWJ1 Zl9vcHMpCitpbmxpbmUgaW50IGh5cGVyX2RtYWJ1Zl9zeW5jX3JlcXVlc3QoaHlwZXJfZG1hYnVm X2lkX3QgaGlkLCBpbnQgZG1hYnVmX29wcykKIHsKIAlzdHJ1Y3QgaHlwZXJfZG1hYnVmX3JlcSAq cmVxOwogCXN0cnVjdCBoeXBlcl9kbWFidWZfYmFja2VuZF9vcHMgKm9wcyA9IGh5cGVyX2RtYWJ1 Zl9wcml2YXRlLmJhY2tlbmRfb3BzOwotCWludCBvcGVyYW5kc1syXTsKKwlpbnQgb3BlcmFuZHNb NV07CisJaW50IGk7CiAJaW50IHJldDsKIAotCW9wZXJhbmRzWzBdID0gaWQ7Ci0Jb3BlcmFuZHNb MV0gPSBkbWFidWZfb3BzOworCW9wZXJhbmRzWzBdID0gaGlkLmlkOworCisJZm9yIChpPTA7IGk8 MzsgaSsrKQorCQlvcGVyYW5kc1tpKzFdID0gaGlkLnJuZ19rZXlbaV07CisKKwlvcGVyYW5kc1s0 XSA9IGRtYWJ1Zl9vcHM7CiAKIAlyZXEgPSBrY2FsbG9jKDEsIHNpemVvZigqcmVxKSwgR0ZQX0tF Uk5FTCk7CiAKQEAgLTI3OSw3ICsyODQsNyBAQCBpbmxpbmUgaW50IGh5cGVyX2RtYWJ1Zl9zeW5j X3JlcXVlc3QoaW50IGlkLCBpbnQgZG1hYnVmX29wcykKIAloeXBlcl9kbWFidWZfY3JlYXRlX3Jl cXVlc3QocmVxLCBIWVBFUl9ETUFCVUZfT1BTX1RPX1NPVVJDRSwgJm9wZXJhbmRzWzBdKTsKIAog CS8qIHNlbmQgcmVxdWVzdCBhbmQgd2FpdCBmb3IgYSByZXNwb25zZSAqLwotCXJldCA9IG9wcy0+ c2VuZF9yZXEoSFlQRVJfRE1BQlVGX0RPTV9JRChpZCksIHJlcSwgV0FJVF9BRlRFUl9TWU5DX1JF USk7CisJcmV0ID0gb3BzLT5zZW5kX3JlcShIWVBFUl9ETUFCVUZfRE9NX0lEKGhpZCksIHJlcSwg V0FJVF9BRlRFUl9TWU5DX1JFUSk7CiAKIAlrZnJlZShyZXEpOwogCkBAIC0yOTcsNyArMzAyLDcg QEAgc3RhdGljIGludCBoeXBlcl9kbWFidWZfb3BzX2F0dGFjaChzdHJ1Y3QgZG1hX2J1ZiogZG1h YnVmLCBzdHJ1Y3QgZGV2aWNlKiBkZXYsCiAKIAlzZ3RfaW5mbyA9IChzdHJ1Y3QgaHlwZXJfZG1h YnVmX2ltcG9ydGVkX3NndF9pbmZvICopYXR0YWNoLT5kbWFidWYtPnByaXY7CiAKLQlyZXQgPSBo eXBlcl9kbWFidWZfc3luY19yZXF1ZXN0KHNndF9pbmZvLT5oeXBlcl9kbWFidWZfaWQsCisJcmV0 ID0gaHlwZXJfZG1hYnVmX3N5bmNfcmVxdWVzdChzZ3RfaW5mby0+aGlkLAogCQkJCQlIWVBFUl9E TUFCVUZfT1BTX0FUVEFDSCk7CiAKIAlpZiAocmV0IDwgMCkgewpAQCAtMzE5LDcgKzMyNCw3IEBA IHN0YXRpYyB2b2lkIGh5cGVyX2RtYWJ1Zl9vcHNfZGV0YWNoKHN0cnVjdCBkbWFfYnVmKiBkbWFi dWYsIHN0cnVjdCBkbWFfYnVmX2F0dGFjCiAKIAlzZ3RfaW5mbyA9IChzdHJ1Y3QgaHlwZXJfZG1h YnVmX2ltcG9ydGVkX3NndF9pbmZvICopYXR0YWNoLT5kbWFidWYtPnByaXY7CiAKLQlyZXQgPSBo eXBlcl9kbWFidWZfc3luY19yZXF1ZXN0KHNndF9pbmZvLT5oeXBlcl9kbWFidWZfaWQsCisJcmV0 ID0gaHlwZXJfZG1hYnVmX3N5bmNfcmVxdWVzdChzZ3RfaW5mby0+aGlkLAogCQkJCQlIWVBFUl9E TUFCVUZfT1BTX0RFVEFDSCk7CiAKIAlpZiAocmV0IDwgMCkgewpAQCAtMzU4LDcgKzM2Myw3IEBA IHN0YXRpYyBzdHJ1Y3Qgc2dfdGFibGUqIGh5cGVyX2RtYWJ1Zl9vcHNfbWFwKHN0cnVjdCBkbWFf YnVmX2F0dGFjaG1lbnQgKmF0dGFjaG1lCiAgICAgICAgICAgICAgICAgZ290byBlcnJfZnJlZV9z ZzsKICAgICAgICAgfQogCi0JcmV0ID0gaHlwZXJfZG1hYnVmX3N5bmNfcmVxdWVzdChzZ3RfaW5m by0+aHlwZXJfZG1hYnVmX2lkLAorCXJldCA9IGh5cGVyX2RtYWJ1Zl9zeW5jX3JlcXVlc3Qoc2d0 X2luZm8tPmhpZCwKIAkJCQkJSFlQRVJfRE1BQlVGX09QU19NQVApOwogCiAJa2ZyZWUocGFnZV9p bmZvLT5wYWdlcyk7CkBAIC0zODEsOCArMzg2LDggQEAgc3RhdGljIHN0cnVjdCBzZ190YWJsZSog aHlwZXJfZG1hYnVmX29wc19tYXAoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNobWUK IH0KIAogc3RhdGljIHZvaWQgaHlwZXJfZG1hYnVmX29wc191bm1hcChzdHJ1Y3QgZG1hX2J1Zl9h dHRhY2htZW50ICphdHRhY2htZW50LAotCQkJCQkJc3RydWN0IHNnX3RhYmxlICpzZywKLQkJCQkJ CWVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKKwkJCQkgICBzdHJ1Y3Qgc2dfdGFibGUgKnNn LAorCQkJCSAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKIHsKIAlzdHJ1Y3QgaHlwZXJf ZG1hYnVmX2ltcG9ydGVkX3NndF9pbmZvICpzZ3RfaW5mbzsKIAlpbnQgcmV0OwpAQCAtMzk3LDcg KzQwMiw3IEBAIHN0YXRpYyB2b2lkIGh5cGVyX2RtYWJ1Zl9vcHNfdW5tYXAoc3RydWN0IGRtYV9i dWZfYXR0YWNobWVudCAqYXR0YWNobWVudCwKIAlzZ19mcmVlX3RhYmxlKHNnKTsKIAlrZnJlZShz Zyk7CiAKLQlyZXQgPSBoeXBlcl9kbWFidWZfc3luY19yZXF1ZXN0KHNndF9pbmZvLT5oeXBlcl9k bWFidWZfaWQsCisJcmV0ID0gaHlwZXJfZG1hYnVmX3N5bmNfcmVxdWVzdChzZ3RfaW5mby0+aGlk LAogCQkJCQlIWVBFUl9ETUFCVUZfT1BTX1VOTUFQKTsKIAogCWlmIChyZXQgPCAwKSB7CkBAIC00 MzcsNyArNDQyLDcgQEAgc3RhdGljIHZvaWQgaHlwZXJfZG1hYnVmX29wc19yZWxlYXNlKHN0cnVj dCBkbWFfYnVmICpkbWFfYnVmKQogCWZpbmFsX3JlbGVhc2UgPSBzZ3RfaW5mbyAmJiAhc2d0X2lu Zm8tPnZhbGlkICYmCiAJCSAgICAgICAgIXNndF9pbmZvLT5udW1faW1wb3J0ZXJzOwogCi0JcmV0 ID0gaHlwZXJfZG1hYnVmX3N5bmNfcmVxdWVzdChzZ3RfaW5mby0+aHlwZXJfZG1hYnVmX2lkLAor CXJldCA9IGh5cGVyX2RtYWJ1Zl9zeW5jX3JlcXVlc3Qoc2d0X2luZm8tPmhpZCwKIAkJCQkJSFlQ RVJfRE1BQlVGX09QU19SRUxFQVNFKTsKIAlpZiAocmV0IDwgMCkgewogCQlkZXZfd2FybihoeXBl cl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCkBAIC00NDksNyArNDU0LDcgQEAgc3RhdGljIHZvaWQg aHlwZXJfZG1hYnVmX29wc19yZWxlYXNlKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmKQogCSAqIFRo YXQgaGFzIHRvIGJlIGRvbmUgYWZ0ZXIgc2VuZGluZyBzeW5jIHJlcXVlc3QKIAkgKi8KIAlpZiAo ZmluYWxfcmVsZWFzZSkgewotCQloeXBlcl9kbWFidWZfcmVtb3ZlX2ltcG9ydGVkKHNndF9pbmZv LT5oeXBlcl9kbWFidWZfaWQpOworCQloeXBlcl9kbWFidWZfcmVtb3ZlX2ltcG9ydGVkKHNndF9p bmZvLT5oaWQpOwogCQlrZnJlZShzZ3RfaW5mbyk7CiAJfQogfQpAQCAtNDY0LDcgKzQ2OSw3IEBA IHN0YXRpYyBpbnQgaHlwZXJfZG1hYnVmX29wc19iZWdpbl9jcHVfYWNjZXNzKHN0cnVjdCBkbWFf YnVmICpkbWFidWYsIGVudW0gZG1hX2RhCiAKIAlzZ3RfaW5mbyA9IChzdHJ1Y3QgaHlwZXJfZG1h YnVmX2ltcG9ydGVkX3NndF9pbmZvICopZG1hYnVmLT5wcml2OwogCi0JcmV0ID0gaHlwZXJfZG1h YnVmX3N5bmNfcmVxdWVzdChzZ3RfaW5mby0+aHlwZXJfZG1hYnVmX2lkLAorCXJldCA9IGh5cGVy X2RtYWJ1Zl9zeW5jX3JlcXVlc3Qoc2d0X2luZm8tPmhpZCwKIAkJCQkJSFlQRVJfRE1BQlVGX09Q U19CRUdJTl9DUFVfQUNDRVNTKTsKIAlpZiAocmV0IDwgMCkgewogCQlkZXZfZXJyKGh5cGVyX2Rt YWJ1Zl9wcml2YXRlLmRldmljZSwKQEAgLTQ4NCw3ICs0ODksNyBAQCBzdGF0aWMgaW50IGh5cGVy X2RtYWJ1Zl9vcHNfZW5kX2NwdV9hY2Nlc3Moc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwgZW51bSBk bWFfZGF0YQogCiAJc2d0X2luZm8gPSAoc3RydWN0IGh5cGVyX2RtYWJ1Zl9pbXBvcnRlZF9zZ3Rf aW5mbyAqKWRtYWJ1Zi0+cHJpdjsKIAotCXJldCA9IGh5cGVyX2RtYWJ1Zl9zeW5jX3JlcXVlc3Qo c2d0X2luZm8tPmh5cGVyX2RtYWJ1Zl9pZCwKKwlyZXQgPSBoeXBlcl9kbWFidWZfc3luY19yZXF1 ZXN0KHNndF9pbmZvLT5oaWQsCiAJCQkJCUhZUEVSX0RNQUJVRl9PUFNfRU5EX0NQVV9BQ0NFU1Mp OwogCWlmIChyZXQgPCAwKSB7CiAJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNl LApAQCAtNTA0LDcgKzUwOSw3IEBAIHN0YXRpYyB2b2lkICpoeXBlcl9kbWFidWZfb3BzX2ttYXBf YXRvbWljKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHVuc2lnbmVkIGxvbmcKIAogCXNndF9pbmZv ID0gKHN0cnVjdCBoeXBlcl9kbWFidWZfaW1wb3J0ZWRfc2d0X2luZm8gKilkbWFidWYtPnByaXY7 CiAKLQlyZXQgPSBoeXBlcl9kbWFidWZfc3luY19yZXF1ZXN0KHNndF9pbmZvLT5oeXBlcl9kbWFi dWZfaWQsCisJcmV0ID0gaHlwZXJfZG1hYnVmX3N5bmNfcmVxdWVzdChzZ3RfaW5mby0+aGlkLAog CQkJCQlIWVBFUl9ETUFCVUZfT1BTX0tNQVBfQVRPTUlDKTsKIAlpZiAocmV0IDwgMCkgewogCQlk ZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKQEAgLTUyNCw3ICs1MjksNyBAQCBz dGF0aWMgdm9pZCBoeXBlcl9kbWFidWZfb3BzX2t1bm1hcF9hdG9taWMoc3RydWN0IGRtYV9idWYg KmRtYWJ1ZiwgdW5zaWduZWQgbG9uZwogCiAJc2d0X2luZm8gPSAoc3RydWN0IGh5cGVyX2RtYWJ1 Zl9pbXBvcnRlZF9zZ3RfaW5mbyAqKWRtYWJ1Zi0+cHJpdjsKIAotCXJldCA9IGh5cGVyX2RtYWJ1 Zl9zeW5jX3JlcXVlc3Qoc2d0X2luZm8tPmh5cGVyX2RtYWJ1Zl9pZCwKKwlyZXQgPSBoeXBlcl9k bWFidWZfc3luY19yZXF1ZXN0KHNndF9pbmZvLT5oaWQsCiAJCQkJCUhZUEVSX0RNQUJVRl9PUFNf S1VOTUFQX0FUT01JQyk7CiAJaWYgKHJldCA8IDApIHsKIAkJZGV2X2VycihoeXBlcl9kbWFidWZf cHJpdmF0ZS5kZXZpY2UsCkBAIC01NDIsNyArNTQ3LDcgQEAgc3RhdGljIHZvaWQgKmh5cGVyX2Rt YWJ1Zl9vcHNfa21hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCB1bnNpZ25lZCBsb25nIHBnbnVt KQogCiAJc2d0X2luZm8gPSAoc3RydWN0IGh5cGVyX2RtYWJ1Zl9pbXBvcnRlZF9zZ3RfaW5mbyAq KWRtYWJ1Zi0+cHJpdjsKIAotCXJldCA9IGh5cGVyX2RtYWJ1Zl9zeW5jX3JlcXVlc3Qoc2d0X2lu Zm8tPmh5cGVyX2RtYWJ1Zl9pZCwKKwlyZXQgPSBoeXBlcl9kbWFidWZfc3luY19yZXF1ZXN0KHNn dF9pbmZvLT5oaWQsCiAJCQkJCUhZUEVSX0RNQUJVRl9PUFNfS01BUCk7CiAJaWYgKHJldCA8IDAp IHsKIAkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCkBAIC01NjIsNyArNTY3 LDcgQEAgc3RhdGljIHZvaWQgaHlwZXJfZG1hYnVmX29wc19rdW5tYXAoc3RydWN0IGRtYV9idWYg KmRtYWJ1ZiwgdW5zaWduZWQgbG9uZyBwZ251bSwKIAogCXNndF9pbmZvID0gKHN0cnVjdCBoeXBl cl9kbWFidWZfaW1wb3J0ZWRfc2d0X2luZm8gKilkbWFidWYtPnByaXY7CiAKLQlyZXQgPSBoeXBl cl9kbWFidWZfc3luY19yZXF1ZXN0KHNndF9pbmZvLT5oeXBlcl9kbWFidWZfaWQsCisJcmV0ID0g aHlwZXJfZG1hYnVmX3N5bmNfcmVxdWVzdChzZ3RfaW5mby0+aGlkLAogCQkJCQlIWVBFUl9ETUFC VUZfT1BTX0tVTk1BUCk7CiAJaWYgKHJldCA8IDApIHsKIAkJZGV2X2VycihoeXBlcl9kbWFidWZf cHJpdmF0ZS5kZXZpY2UsCkBAIC01ODAsNyArNTg1LDcgQEAgc3RhdGljIGludCBoeXBlcl9kbWFi dWZfb3BzX21tYXAoc3RydWN0IGRtYV9idWYgKmRtYWJ1Ziwgc3RydWN0IHZtX2FyZWFfc3RydWN0 ICoKIAogCXNndF9pbmZvID0gKHN0cnVjdCBoeXBlcl9kbWFidWZfaW1wb3J0ZWRfc2d0X2luZm8g KilkbWFidWYtPnByaXY7CiAKLQlyZXQgPSBoeXBlcl9kbWFidWZfc3luY19yZXF1ZXN0KHNndF9p bmZvLT5oeXBlcl9kbWFidWZfaWQsCisJcmV0ID0gaHlwZXJfZG1hYnVmX3N5bmNfcmVxdWVzdChz Z3RfaW5mby0+aGlkLAogCQkJCQlIWVBFUl9ETUFCVUZfT1BTX01NQVApOwogCWlmIChyZXQgPCAw KSB7CiAJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLApAQCAtNjAwLDcgKzYw NSw3IEBAIHN0YXRpYyB2b2lkICpoeXBlcl9kbWFidWZfb3BzX3ZtYXAoc3RydWN0IGRtYV9idWYg KmRtYWJ1ZikKIAogCXNndF9pbmZvID0gKHN0cnVjdCBoeXBlcl9kbWFidWZfaW1wb3J0ZWRfc2d0 X2luZm8gKilkbWFidWYtPnByaXY7CiAKLQlyZXQgPSBoeXBlcl9kbWFidWZfc3luY19yZXF1ZXN0 KHNndF9pbmZvLT5oeXBlcl9kbWFidWZfaWQsCisJcmV0ID0gaHlwZXJfZG1hYnVmX3N5bmNfcmVx dWVzdChzZ3RfaW5mby0+aGlkLAogCQkJCQlIWVBFUl9ETUFCVUZfT1BTX1ZNQVApOwogCWlmIChy ZXQgPCAwKSB7CiAJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLApAQCAtNjIw LDcgKzYyNSw3IEBAIHN0YXRpYyB2b2lkIGh5cGVyX2RtYWJ1Zl9vcHNfdnVubWFwKHN0cnVjdCBk bWFfYnVmICpkbWFidWYsIHZvaWQgKnZhZGRyKQogCiAJc2d0X2luZm8gPSAoc3RydWN0IGh5cGVy X2RtYWJ1Zl9pbXBvcnRlZF9zZ3RfaW5mbyAqKWRtYWJ1Zi0+cHJpdjsKIAotCXJldCA9IGh5cGVy X2RtYWJ1Zl9zeW5jX3JlcXVlc3Qoc2d0X2luZm8tPmh5cGVyX2RtYWJ1Zl9pZCwKKwlyZXQgPSBo eXBlcl9kbWFidWZfc3luY19yZXF1ZXN0KHNndF9pbmZvLT5oaWQsCiAJCQkJCUhZUEVSX0RNQUJV Rl9PUFNfVlVOTUFQKTsKIAlpZiAocmV0IDwgMCkgewogCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9w cml2YXRlLmRldmljZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBl cl9kbWFidWZfaW9jdGwuYyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZf aW9jdGwuYwppbmRleCBmN2Q5OGMxLi5mMTU4MWQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9o eXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2lvY3RsLmMKKysrIGIvZHJpdmVycy94ZW4vaHlwZXJf ZG1hYnVmL2h5cGVyX2RtYWJ1Zl9pb2N0bC5jCkBAIC0zNSwxMyArMzUsMTIgQEAKICNpbmNsdWRl IDxsaW51eC9kbWEtYnVmLmg+CiAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KICNpbmNsdWRlIDxs aW51eC9saXN0Lmg+Ci0jaW5jbHVkZSA8eGVuL2h5cGVyX2RtYWJ1Zi5oPgorI2luY2x1ZGUgImh5 cGVyX2RtYWJ1Zl9kcnYuaCIKKyNpbmNsdWRlICJoeXBlcl9kbWFidWZfaWQuaCIKICNpbmNsdWRl ICJoeXBlcl9kbWFidWZfc3RydWN0LmgiCiAjaW5jbHVkZSAiaHlwZXJfZG1hYnVmX2lvY3RsLmgi CiAjaW5jbHVkZSAiaHlwZXJfZG1hYnVmX2xpc3QuaCIKICNpbmNsdWRlICJoeXBlcl9kbWFidWZf bXNnLmgiCi0jaW5jbHVkZSAiaHlwZXJfZG1hYnVmX2Rydi5oIgotI2luY2x1ZGUgImh5cGVyX2Rt YWJ1Zl9pZC5oIgogI2luY2x1ZGUgImh5cGVyX2RtYWJ1Zl9pbXAuaCIKICNpbmNsdWRlICJoeXBl cl9kbWFidWZfcXVlcnkuaCIKIApAQCAtOTMsNiArOTIsOCBAQCBzdGF0aWMgaW50IGh5cGVyX2Rt YWJ1Zl9leHBvcnRfcmVtb3RlKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkICpkYXRhKQogCXN0cnVj dCBoeXBlcl9kbWFidWZfc2d0X2luZm8gKnNndF9pbmZvOwogCXN0cnVjdCBoeXBlcl9kbWFidWZf cmVxICpyZXE7CiAJaW50IG9wZXJhbmRzW01BWF9OVU1CRVJfT0ZfT1BFUkFORFNdOworCWh5cGVy X2RtYWJ1Zl9pZF90IGhpZDsKKwlpbnQgaTsKIAlpbnQgcmV0ID0gMDsKIAogCWlmICghZGF0YSkg ewpAQCAtMTEzLDI1ICsxMTQsMjcgQEAgc3RhdGljIGludCBoeXBlcl9kbWFidWZfZXhwb3J0X3Jl bW90ZShzdHJ1Y3QgZmlsZSAqZmlscCwgdm9pZCAqZGF0YSkKIAkgKiB0byB0aGUgc2FtZSBkb21h aW4gYW5kIGlmIHllcyBhbmQgaXQncyB2YWxpZCBzZ3RfaW5mbywKIAkgKiBpdCByZXR1cm5zIGh5 cGVyX2RtYWJ1Zl9pZCBvZiBwcmUtZXhwb3J0ZWQgc2d0X2luZm8KIAkgKi8KLQlyZXQgPSBoeXBl cl9kbWFidWZfZmluZF9pZF9leHBvcnRlZChkbWFfYnVmLCBleHBvcnRfcmVtb3RlX2F0dHItPnJl bW90ZV9kb21haW4pOwotCXNndF9pbmZvID0gaHlwZXJfZG1hYnVmX2ZpbmRfZXhwb3J0ZWQocmV0 KTsKLQlpZiAocmV0ICE9IC1FTk9FTlQgJiYgc2d0X2luZm8gIT0gTlVMTCkgewotCQlpZiAoc2d0 X2luZm8tPnZhbGlkKSB7Ci0JCQkvKgotCQkJICogQ2hlY2sgaWYgdW5leHBvcnQgaXMgYWxyZWFk eSBzY2hlZHVsZWQgZm9yIHRoYXQgYnVmZmVyLAotCQkJICogaWYgc28gdHJ5IHRvIGNhbmNlbCBp dC4gSWYgdGhhdCB3aWxsIGZhaWwsIGJ1ZmZlciBuZWVkcwotCQkJICogdG8gYmUgcmVleHBvcnQg b25jZSBhZ2Fpbi4KLQkJCSAqLwotCQkJaWYgKHNndF9pbmZvLT51bmV4cG9ydF9zY2hlZHVsZWQp IHsKLQkJCQlpZiAoIWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmc2d0X2luZm8tPnVuZXhwb3J0 X3dvcmspKSB7Ci0JCQkJCWRtYV9idWZfcHV0KGRtYV9idWYpOwotCQkJCQlnb3RvIHJlZXhwb3J0 OworCWhpZCA9IGh5cGVyX2RtYWJ1Zl9maW5kX2hpZF9leHBvcnRlZChkbWFfYnVmLCBleHBvcnRf cmVtb3RlX2F0dHItPnJlbW90ZV9kb21haW4pOworCWlmIChoaWQuaWQgIT0gLTEpIHsKKwkJc2d0 X2luZm8gPSBoeXBlcl9kbWFidWZfZmluZF9leHBvcnRlZChoaWQpOworCQlpZiAoc2d0X2luZm8g IT0gTlVMTCkgeworCQkJaWYgKHNndF9pbmZvLT52YWxpZCkgeworCQkJCS8qCisJCQkJICogQ2hl Y2sgaWYgdW5leHBvcnQgaXMgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIHRoYXQgYnVmZmVyLAorCQkJ CSAqIGlmIHNvIHRyeSB0byBjYW5jZWwgaXQuIElmIHRoYXQgd2lsbCBmYWlsLCBidWZmZXIgbmVl ZHMKKwkJCQkgKiB0byBiZSByZWV4cG9ydCBvbmNlIGFnYWluLgorCQkJCSAqLworCQkJCWlmIChz Z3RfaW5mby0+dW5leHBvcnRfc2NoZWR1bGVkKSB7CisJCQkJCWlmICghY2FuY2VsX2RlbGF5ZWRf d29ya19zeW5jKCZzZ3RfaW5mby0+dW5leHBvcnRfd29yaykpIHsKKwkJCQkJCWRtYV9idWZfcHV0 KGRtYV9idWYpOworCQkJCQkJZ290byByZWV4cG9ydDsKKwkJCQkJfQorCQkJCQlzZ3RfaW5mby0+ dW5leHBvcnRfc2NoZWR1bGVkID0gMDsKIAkJCQl9Ci0JCQkJc2d0X2luZm8tPnVuZXhwb3J0X3Nj aGVkdWxlZCA9IDA7CisJCQkJZG1hX2J1Zl9wdXQoZG1hX2J1Zik7CisJCQkJZXhwb3J0X3JlbW90 ZV9hdHRyLT5oaWQgPSBoaWQ7CisJCQkJcmV0dXJuIDA7CiAJCQl9Ci0JCQlkbWFfYnVmX3B1dChk bWFfYnVmKTsKLQkJCWV4cG9ydF9yZW1vdGVfYXR0ci0+aHlwZXJfZG1hYnVmX2lkID0gcmV0Owot CQkJcmV0dXJuIDA7CiAJCX0KIAl9CiAKQEAgLTE0MiwxMSArMTQ1LDYgQEAgc3RhdGljIGludCBo eXBlcl9kbWFidWZfZXhwb3J0X3JlbW90ZShzdHJ1Y3QgZmlsZSAqZmlscCwgdm9pZCAqZGF0YSkK IAkJcmV0dXJuIFBUUl9FUlIoYXR0YWNobWVudCk7CiAJfQogCi0JLyogQ2xlYXIgcmV0LCBhcyB0 aGF0IHdpbGwgY2F1c2Ugd2hvbGUgaW9jdGwgdG8gcmV0dXJuIGZhaWx1cmUKLQkgKiB0byB1c2Vy c3BhY2UsIHdoaWNoIGlzIG5vdCB0cnVlCi0JICovCi0JcmV0ID0gMDsKLQogCXNndCA9IGRtYV9i dWZfbWFwX2F0dGFjaG1lbnQoYXR0YWNobWVudCwgRE1BX0JJRElSRUNUSU9OQUwpOwogCiAJaWYg KElTX0VSUihzZ3QpKSB7CkBAIC0xNjEsNyArMTU5LDE1IEBAIHN0YXRpYyBpbnQgaHlwZXJfZG1h YnVmX2V4cG9ydF9yZW1vdGUoc3RydWN0IGZpbGUgKmZpbHAsIHZvaWQgKmRhdGEpCiAJCXJldHVy biAtRU5PTUVNOwogCX0KIAotCXNndF9pbmZvLT5oeXBlcl9kbWFidWZfaWQgPSBoeXBlcl9kbWFi dWZfZ2V0X2lkKCk7CisJc2d0X2luZm8tPmhpZCA9IGh5cGVyX2RtYWJ1Zl9nZXRfaGlkKCk7CisK KwkvKiBubyBtb3JlIGV4cG9ydGVkIGRtYWJ1ZiBhbGxvd2VkICovCisJaWYoc2d0X2luZm8tPmhp ZC5pZCA9PSAtMSkgeworCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJ CSJleGNlZWRzIGFsbG93ZWQgbnVtYmVyIG9mIGRtYWJ1ZiB0byBiZSBleHBvcnRlZFxuIik7CisJ CS8qIFRPRE86IENsZWFudXAgc2d0ICovCisJCXJldHVybiAtRU5PTUVNOworCX0KIAogCS8qIFRP RE86IFdlIG1pZ2h0IG5lZWQgdG8gY29uc2lkZXIgdXNpbmcgcG9ydCBudW1iZXIgb24gZXZlbnQg Y2hhbm5lbD8gKi8KIAlzZ3RfaW5mby0+aHlwZXJfZG1hYnVmX3Jkb21haW4gPSBleHBvcnRfcmVt b3RlX2F0dHItPnJlbW90ZV9kb21haW47CkBAIC0xOTgsOCArMjA0LDggQEAgc3RhdGljIGludCBo eXBlcl9kbWFidWZfZXhwb3J0X3JlbW90ZShzdHJ1Y3QgZmlsZSAqZmlscCwgdm9pZCAqZGF0YSkK IAogCXNndF9pbmZvLT5hY3RpdmVfc2d0cy0+c2d0ID0gc2d0OwogCXNndF9pbmZvLT5hY3RpdmVf YXR0YWNoZWQtPmF0dGFjaCA9IGF0dGFjaG1lbnQ7Ci0Jc2d0X2luZm8tPnZhX2ttYXBwZWQtPnZh ZGRyID0gTlVMTDsgLyogZmlyc3QgdmFkZHIgaXMgTlVMTCAqLwotCXNndF9pbmZvLT52YV92bWFw cGVkLT52YWRkciA9IE5VTEw7IC8qIGZpcnN0IHZhZGRyIGlzIE5VTEwgKi8KKwlzZ3RfaW5mby0+ dmFfa21hcHBlZC0+dmFkZHIgPSBOVUxMOworCXNndF9pbmZvLT52YV92bWFwcGVkLT52YWRkciA9 IE5VTEw7CiAKIAkvKiBpbml0aWFsaXplIGxpc3Qgb2Ygc2d0LCBhdHRhY2htZW50IGFuZCB2YWRk ciBmb3IgZG1hYnVmIHN5bmMKIAkgKiB2aWEgc2hhZG93IGRtYS1idWYKQEAgLTIyMSwyMyArMjI3 LDI3IEBAIHN0YXRpYyBpbnQgaHlwZXJfZG1hYnVmX2V4cG9ydF9yZW1vdGUoc3RydWN0IGZpbGUg KmZpbHAsIHZvaWQgKmRhdGEpCiAJaHlwZXJfZG1hYnVmX3JlZ2lzdGVyX2V4cG9ydGVkKHNndF9p bmZvKTsKIAogCXBhZ2VfaW5mby0+aHlwZXJfZG1hYnVmX3Jkb21haW4gPSBzZ3RfaW5mby0+aHlw ZXJfZG1hYnVmX3Jkb21haW47Ci0JcGFnZV9pbmZvLT5oeXBlcl9kbWFidWZfaWQgPSBzZ3RfaW5m by0+aHlwZXJfZG1hYnVmX2lkOyAvKiBtYXkgbm90IGJlIG5lZWRlZCAqLworCXBhZ2VfaW5mby0+ aGlkID0gc2d0X2luZm8tPmhpZDsgLyogbWF5IG5vdCBiZSBuZWVkZWQgKi8KIAotCWV4cG9ydF9y ZW1vdGVfYXR0ci0+aHlwZXJfZG1hYnVmX2lkID0gc2d0X2luZm8tPmh5cGVyX2RtYWJ1Zl9pZDsK KwlleHBvcnRfcmVtb3RlX2F0dHItPmhpZCA9IHNndF9pbmZvLT5oaWQ7CiAKIAkvKiBub3cgY3Jl YXRlIHJlcXVlc3QgZm9yIGltcG9ydGVyIHZpYSByaW5nICovCi0Jb3BlcmFuZHNbMF0gPSBwYWdl X2luZm8tPmh5cGVyX2RtYWJ1Zl9pZDsKLQlvcGVyYW5kc1sxXSA9IHBhZ2VfaW5mby0+bmVudHM7 Ci0Jb3BlcmFuZHNbMl0gPSBwYWdlX2luZm8tPmZyc3Rfb2ZzdDsKLQlvcGVyYW5kc1szXSA9IHBh Z2VfaW5mby0+bGFzdF9sZW47Ci0Jb3BlcmFuZHNbNF0gPSBvcHMtPnNoYXJlX3BhZ2VzIChwYWdl X2luZm8tPnBhZ2VzLCBleHBvcnRfcmVtb3RlX2F0dHItPnJlbW90ZV9kb21haW4sCisJb3BlcmFu ZHNbMF0gPSBwYWdlX2luZm8tPmhpZC5pZDsKKworCWZvciAoaT0wOyBpPDM7IGkrKykKKwkJb3Bl cmFuZHNbaSsxXSA9IHBhZ2VfaW5mby0+aGlkLnJuZ19rZXlbaV07CisKKwlvcGVyYW5kc1s0XSA9 IHBhZ2VfaW5mby0+bmVudHM7CisJb3BlcmFuZHNbNV0gPSBwYWdlX2luZm8tPmZyc3Rfb2ZzdDsK KwlvcGVyYW5kc1s2XSA9IHBhZ2VfaW5mby0+bGFzdF9sZW47CisJb3BlcmFuZHNbN10gPSBvcHMt PnNoYXJlX3BhZ2VzIChwYWdlX2luZm8tPnBhZ2VzLCBleHBvcnRfcmVtb3RlX2F0dHItPnJlbW90 ZV9kb21haW4sCiAJCQkJCXBhZ2VfaW5mby0+bmVudHMsICZzZ3RfaW5mby0+cmVmc19pbmZvKTsK IAotCS8qIGRyaXZlci9hcHBsaWNhdGlvbiBzcGVjaWZpYyBwcml2YXRlIGluZm8sIG1heCAzMiBi eXRlcyAqLwotCW9wZXJhbmRzWzVdID0gZXhwb3J0X3JlbW90ZV9hdHRyLT5wcml2YXRlWzBdOwot CW9wZXJhbmRzWzZdID0gZXhwb3J0X3JlbW90ZV9hdHRyLT5wcml2YXRlWzFdOwotCW9wZXJhbmRz WzddID0gZXhwb3J0X3JlbW90ZV9hdHRyLT5wcml2YXRlWzJdOwotCW9wZXJhbmRzWzhdID0gZXhw b3J0X3JlbW90ZV9hdHRyLT5wcml2YXRlWzNdOworCS8qIGRyaXZlci9hcHBsaWNhdGlvbiBzcGVj aWZpYyBwcml2YXRlIGluZm8sIG1heCA0eDQgYnl0ZXMgKi8KKwlvcGVyYW5kc1s4XSA9IGV4cG9y dF9yZW1vdGVfYXR0ci0+cHJpdmF0ZVswXTsKKwlvcGVyYW5kc1s5XSA9IGV4cG9ydF9yZW1vdGVf YXR0ci0+cHJpdmF0ZVsxXTsKKwlvcGVyYW5kc1sxMF0gPSBleHBvcnRfcmVtb3RlX2F0dHItPnBy aXZhdGVbMl07CisJb3BlcmFuZHNbMTFdID0gZXhwb3J0X3JlbW90ZV9hdHRyLT5wcml2YXRlWzNd OwogCiAJcmVxID0ga2NhbGxvYygxLCBzaXplb2YoKnJlcSksIEdGUF9LRVJORUwpOwogCkBAIC0y NzAsNyArMjgwLDcgQEAgc3RhdGljIGludCBoeXBlcl9kbWFidWZfZXhwb3J0X3JlbW90ZShzdHJ1 Y3QgZmlsZSAqZmlscCwgdm9pZCAqZGF0YSkKIAlrZnJlZShyZXEpOwogCiBmYWlsX21hcF9yZXE6 Ci0JaHlwZXJfZG1hYnVmX3JlbW92ZV9leHBvcnRlZChzZ3RfaW5mby0+aHlwZXJfZG1hYnVmX2lk KTsKKwloeXBlcl9kbWFidWZfcmVtb3ZlX2V4cG9ydGVkKHNndF9pbmZvLT5oaWQpOwogCiBmYWls X2V4cG9ydDoKIAlkbWFfYnVmX3VubWFwX2F0dGFjaG1lbnQoc2d0X2luZm8tPmFjdGl2ZV9hdHRh Y2hlZC0+YXR0YWNoLApAQCAtMjk4LDcgKzMwOCw4IEBAIHN0YXRpYyBpbnQgaHlwZXJfZG1hYnVm X2V4cG9ydF9mZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdm9pZCAqZGF0YSkKIAlzdHJ1Y3Qg aHlwZXJfZG1hYnVmX2ltcG9ydGVkX3NndF9pbmZvICpzZ3RfaW5mbzsKIAlzdHJ1Y3QgaHlwZXJf ZG1hYnVmX3JlcSAqcmVxOwogCXN0cnVjdCBwYWdlICoqZGF0YV9wYWdlczsKLQlpbnQgb3BlcmFu ZDsKKwlpbnQgb3BlcmFuZHNbNF07CisJaW50IGk7CiAJaW50IHJldCA9IDA7CiAKIAlkZXZfZGJn KGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgIiVzIGVudHJ5XG4iLCBfX2Z1bmNfXyk7CkBA IC0zMTEsNyArMzIyLDcgQEAgc3RhdGljIGludCBoeXBlcl9kbWFidWZfZXhwb3J0X2ZkX2lvY3Rs KHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkICpkYXRhKQogCWV4cG9ydF9mZF9hdHRyID0gKHN0cnVj dCBpb2N0bF9oeXBlcl9kbWFidWZfZXhwb3J0X2ZkICopZGF0YTsKIAogCS8qIGxvb2sgZm9yIGRt YWJ1ZiBmb3IgdGhlIGlkICovCi0Jc2d0X2luZm8gPSBoeXBlcl9kbWFidWZfZmluZF9pbXBvcnRl ZChleHBvcnRfZmRfYXR0ci0+aHlwZXJfZG1hYnVmX2lkKTsKKwlzZ3RfaW5mbyA9IGh5cGVyX2Rt YWJ1Zl9maW5kX2ltcG9ydGVkKGV4cG9ydF9mZF9hdHRyLT5oaWQpOwogCiAJLyogY2FuJ3QgZmlu ZCBzZ3QgZnJvbSB0aGUgdGFibGUgKi8KIAlpZiAoIXNndF9pbmZvKSB7CkBAIC0zMjQsOSArMzM1 LDE0IEBAIHN0YXRpYyBpbnQgaHlwZXJfZG1hYnVmX2V4cG9ydF9mZF9pb2N0bChzdHJ1Y3QgZmls ZSAqZmlscCwgdm9pZCAqZGF0YSkKIAlzZ3RfaW5mby0+bnVtX2ltcG9ydGVycysrOwogCiAJLyog c2VuZCBub3RpZmljYXRpb24gZm9yIGV4cG9ydF9mZCB0byBleHBvcnRlciAqLwotCW9wZXJhbmQg PSBzZ3RfaW5mby0+aHlwZXJfZG1hYnVmX2lkOworCW9wZXJhbmRzWzBdID0gc2d0X2luZm8tPmhp ZC5pZDsKIAotCWRldl9kYmcoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLCAiRXhwb3J0aW5n IGZkIG9mIGJ1ZmZlciAlZFxuIiwgb3BlcmFuZCk7CisJZm9yIChpPTA7IGk8MzsgaSsrKQorCQlv cGVyYW5kc1tpKzFdID0gc2d0X2luZm8tPmhpZC5ybmdfa2V5W2ldOworCisJZGV2X2RiZyhoeXBl cl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsICJFeHBvcnRpbmcgZmQgb2YgYnVmZmVyIHtpZDolZCBr ZXk6JWQgJWQgJWR9XG4iLAorCQlzZ3RfaW5mby0+aGlkLmlkLCBzZ3RfaW5mby0+aGlkLnJuZ19r ZXlbMF0sIHNndF9pbmZvLT5oaWQucm5nX2tleVsxXSwKKwkJc2d0X2luZm8tPmhpZC5ybmdfa2V5 WzJdKTsKIAogCXJlcSA9IGtjYWxsb2MoMSwgc2l6ZW9mKCpyZXEpLCBHRlBfS0VSTkVMKTsKIApA QCAtMzM2LDMwICszNTIsMzcgQEAgc3RhdGljIGludCBoeXBlcl9kbWFidWZfZXhwb3J0X2ZkX2lv Y3RsKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkICpkYXRhKQogCQlyZXR1cm4gLUVOT01FTTsKIAl9 CiAKLQloeXBlcl9kbWFidWZfY3JlYXRlX3JlcXVlc3QocmVxLCBIWVBFUl9ETUFCVUZfRVhQT1JU X0ZELCAmb3BlcmFuZCk7CisJaHlwZXJfZG1hYnVmX2NyZWF0ZV9yZXF1ZXN0KHJlcSwgSFlQRVJf RE1BQlVGX0VYUE9SVF9GRCwgJm9wZXJhbmRzWzBdKTsKIAotCXJldCA9IG9wcy0+c2VuZF9yZXEo SFlQRVJfRE1BQlVGX0RPTV9JRChvcGVyYW5kKSwgcmVxLCB0cnVlKTsKKwlyZXQgPSBvcHMtPnNl bmRfcmVxKEhZUEVSX0RNQUJVRl9ET01fSUQoc2d0X2luZm8tPmhpZCksIHJlcSwgdHJ1ZSk7CiAK IAlpZiAocmV0IDwgMCkgewogCQkvKiBpbiBjYXNlIG9mIHRpbWVvdXQgb3RoZXIgZW5kIGV2ZW50 dWFsbHkgd2lsbCByZWNlaXZlIHJlcXVlc3QsIHNvIHdlIG5lZWQgdG8gdW5kbyBpdCAqLwotCQlo eXBlcl9kbWFidWZfY3JlYXRlX3JlcXVlc3QocmVxLCBIWVBFUl9ETUFCVUZfRVhQT1JUX0ZEX0ZB SUxFRCwgJm9wZXJhbmQpOwotCQlvcHMtPnNlbmRfcmVxKEhZUEVSX0RNQUJVRl9ET01fSUQob3Bl cmFuZCksIHJlcSwgZmFsc2UpOworCQloeXBlcl9kbWFidWZfY3JlYXRlX3JlcXVlc3QocmVxLCBI WVBFUl9ETUFCVUZfRVhQT1JUX0ZEX0ZBSUxFRCwgJm9wZXJhbmRzWzBdKTsKKwkJb3BzLT5zZW5k X3JlcShvcGVyYW5kc1swXSwgcmVxLCBmYWxzZSk7CiAJCWtmcmVlKHJlcSk7CiAJCWRldl9lcnIo aHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLCAiRmFpbGVkIHRvIGNyZWF0ZSBzZ3Qgb3Igbm90 aWZ5IGV4cG9ydGVyXG4iKTsKIAkJc2d0X2luZm8tPm51bV9pbXBvcnRlcnMtLTsKIAkJbXV0ZXhf dW5sb2NrKCZoeXBlcl9kbWFidWZfcHJpdmF0ZS5sb2NrKTsKIAkJcmV0dXJuIHJldDsKIAl9CisK IAlrZnJlZShyZXEpOwogCiAJaWYgKHJldCA9PSBIWVBFUl9ETUFCVUZfUkVRX0VSUk9SKSB7CiAJ CWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAotCQkJIkJ1ZmZlciBpbnZhbGlk ICVkLCBjYW5ub3QgaW1wb3J0XG4iLCBvcGVyYW5kKTsKKwkJCSJCdWZmZXIgaW52YWxpZCB7aWQ6 JWQga2V5OiVkICVkICVkfSwgY2Fubm90IGltcG9ydFxuIiwKKwkJCXNndF9pbmZvLT5oaWQuaWQs IHNndF9pbmZvLT5oaWQucm5nX2tleVswXSwgc2d0X2luZm8tPmhpZC5ybmdfa2V5WzFdLAorCQkJ c2d0X2luZm8tPmhpZC5ybmdfa2V5WzJdKTsKKwogCQlzZ3RfaW5mby0+bnVtX2ltcG9ydGVycy0t OwogCQltdXRleF91bmxvY2soJmh5cGVyX2RtYWJ1Zl9wcml2YXRlLmxvY2spOwogCQlyZXR1cm4g LUVJTlZBTDsKIAl9IGVsc2UgewotCQlkZXZfZGJnKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmlj ZSwgIkNhbiBpbXBvcnQgYnVmZmVyICVkXG4iLCBvcGVyYW5kKTsKKwkJZGV2X2RiZyhoeXBlcl9k bWFidWZfcHJpdmF0ZS5kZXZpY2UsICJDYW4gaW1wb3J0IGJ1ZmZlciB7aWQ6JWQga2V5OiVkICVk ICVkfVxuIiwKKwkJCXNndF9pbmZvLT5oaWQuaWQsIHNndF9pbmZvLT5oaWQucm5nX2tleVswXSwg c2d0X2luZm8tPmhpZC5ybmdfa2V5WzFdLAorCQkJc2d0X2luZm8tPmhpZC5ybmdfa2V5WzJdKTsK KwogCQlyZXQgPSAwOwogCX0KIApAQCAtMzY3LDIyICszOTAsMjkgQEAgc3RhdGljIGludCBoeXBl cl9kbWFidWZfZXhwb3J0X2ZkX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkICpkYXRhKQog CQkgICIlcyBGb3VuZCBidWZmZXIgZ3JlZiAlZCAgb2ZmICVkIGxhc3QgbGVuICVkIG5lbnRzICVk IGRvbWFpbiAlZFxuIiwgX19mdW5jX18sCiAJCSAgc2d0X2luZm8tPnJlZl9oYW5kbGUsIHNndF9p bmZvLT5mcnN0X29mc3QsCiAJCSAgc2d0X2luZm8tPmxhc3RfbGVuLCBzZ3RfaW5mby0+bmVudHMs Ci0JCSAgSFlQRVJfRE1BQlVGX0RPTV9JRChzZ3RfaW5mby0+aHlwZXJfZG1hYnVmX2lkKSk7CisJ CSAgSFlQRVJfRE1BQlVGX0RPTV9JRChzZ3RfaW5mby0+aGlkKSk7CiAKIAlpZiAoIXNndF9pbmZv LT5zZ3QpIHsKIAkJZGV2X2RiZyhoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCi0JCQkiJXMg YnVmZmVyICVkIHBhZ2VzIG5vdCBtYXBwZWQgeWV0XG4iLCBfX2Z1bmNfXyxzZ3RfaW5mby0+aHlw ZXJfZG1hYnVmX2lkKTsKKwkJCSIlcyBidWZmZXIge2lkOiVkIGtleTolZCAlZCAlZH0gcGFnZXMg bm90IG1hcHBlZCB5ZXRcbiIsIF9fZnVuY19fLAorCQkJc2d0X2luZm8tPmhpZC5pZCwgc2d0X2lu Zm8tPmhpZC5ybmdfa2V5WzBdLCBzZ3RfaW5mby0+aGlkLnJuZ19rZXlbMV0sCisJCQlzZ3RfaW5m by0+aGlkLnJuZ19rZXlbMl0pOworCiAJCWRhdGFfcGFnZXMgPSBvcHMtPm1hcF9zaGFyZWRfcGFn ZXMoc2d0X2luZm8tPnJlZl9oYW5kbGUsCi0JCQkJCQkgICBIWVBFUl9ETUFCVUZfRE9NX0lEKHNn dF9pbmZvLT5oeXBlcl9kbWFidWZfaWQpLAorCQkJCQkJICAgSFlQRVJfRE1BQlVGX0RPTV9JRChz Z3RfaW5mby0+aGlkKSwKIAkJCQkJCSAgIHNndF9pbmZvLT5uZW50cywKIAkJCQkJCSAgICZzZ3Rf aW5mby0+cmVmc19pbmZvKTsKIAogCQlpZiAoIWRhdGFfcGFnZXMpIHsKLQkJCWRldl9lcnIoaHlw ZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLCAiQ2Fubm90IG1hcCBwYWdlcyBvZiBidWZmZXIgJWRc biIsIG9wZXJhbmQpOworCQkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCisJ CQkJIkNhbm5vdCBtYXAgcGFnZXMgb2YgYnVmZmVyIHtpZDolZCBrZXk6JWQgJWQgJWR9XG4iLAor CQkJCXNndF9pbmZvLT5oaWQuaWQsIHNndF9pbmZvLT5oaWQucm5nX2tleVswXSwgc2d0X2luZm8t PmhpZC5ybmdfa2V5WzFdLAorCQkJCXNndF9pbmZvLT5oaWQucm5nX2tleVsyXSk7CisKIAkJCXNn dF9pbmZvLT5udW1faW1wb3J0ZXJzLS07CiAJCQlyZXEgPSBrY2FsbG9jKDEsIHNpemVvZigqcmVx KSwgR0ZQX0tFUk5FTCk7Ci0JCQloeXBlcl9kbWFidWZfY3JlYXRlX3JlcXVlc3QocmVxLCBIWVBF Ul9ETUFCVUZfRVhQT1JUX0ZEX0ZBSUxFRCwgJm9wZXJhbmQpOwotCQkJb3BzLT5zZW5kX3JlcShI WVBFUl9ETUFCVUZfRE9NX0lEKG9wZXJhbmQpLCByZXEsIGZhbHNlKTsKKwkJCWh5cGVyX2RtYWJ1 Zl9jcmVhdGVfcmVxdWVzdChyZXEsIEhZUEVSX0RNQUJVRl9FWFBPUlRfRkRfRkFJTEVELCAmb3Bl cmFuZHNbMF0pOworCQkJb3BzLT5zZW5kX3JlcShIWVBFUl9ETUFCVUZfRE9NX0lEKHNndF9pbmZv LT5oaWQpLCByZXEsIGZhbHNlKTsKIAkJCWtmcmVlKHJlcSk7CiAJCQltdXRleF91bmxvY2soJmh5 cGVyX2RtYWJ1Zl9wcml2YXRlLmxvY2spOwogCQkJcmV0dXJuIC1FSU5WQUw7CkBAIC00MDEsNiAr NDMxLDcgQEAgc3RhdGljIGludCBoeXBlcl9kbWFidWZfZXhwb3J0X2ZkX2lvY3RsKHN0cnVjdCBm aWxlICpmaWxwLCB2b2lkICpkYXRhKQogCX0KIAogCW11dGV4X3VubG9jaygmaHlwZXJfZG1hYnVm X3ByaXZhdGUubG9jayk7CisKIAlkZXZfZGJnKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwg IiVzIGV4aXRcbiIsIF9fZnVuY19fKTsKIAlyZXR1cm4gcmV0OwogfQpAQCAtNDExLDggKzQ0Miw4 IEBAIHN0YXRpYyBpbnQgaHlwZXJfZG1hYnVmX2V4cG9ydF9mZF9pb2N0bChzdHJ1Y3QgZmlsZSAq ZmlscCwgdm9pZCAqZGF0YSkKIHN0YXRpYyB2b2lkIGh5cGVyX2RtYWJ1Zl9kZWxheWVkX3VuZXhw b3J0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsKIAlzdHJ1Y3QgaHlwZXJfZG1hYnVmX3Jl cSAqcmVxOwotCWludCBoeXBlcl9kbWFidWZfaWQ7Ci0JaW50IHJldDsKKwlpbnQgaSwgcmV0Owor CWludCBvcGVyYW5kc1s0XTsKIAlzdHJ1Y3QgaHlwZXJfZG1hYnVmX2JhY2tlbmRfb3BzICpvcHMg PSBoeXBlcl9kbWFidWZfcHJpdmF0ZS5iYWNrZW5kX29wczsKIAlzdHJ1Y3QgaHlwZXJfZG1hYnVm X3NndF9pbmZvICpzZ3RfaW5mbyA9CiAJCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgaHlwZXJf ZG1hYnVmX3NndF9pbmZvLCB1bmV4cG9ydF93b3JrLndvcmspOwpAQCAtNDIwLDEwICs0NTEsMTEg QEAgc3RhdGljIHZvaWQgaHlwZXJfZG1hYnVmX2RlbGF5ZWRfdW5leHBvcnQoc3RydWN0IHdvcmtf c3RydWN0ICp3b3JrKQogCWlmICghc2d0X2luZm8pCiAJCXJldHVybjsKIAotCWh5cGVyX2RtYWJ1 Zl9pZCA9IHNndF9pbmZvLT5oeXBlcl9kbWFidWZfaWQ7Ci0KIAlkZXZfZGJnKGh5cGVyX2RtYWJ1 Zl9wcml2YXRlLmRldmljZSwKLQkJIk1hcmtpbmcgYnVmZmVyICVkIGFzIGludmFsaWRcbiIsIGh5 cGVyX2RtYWJ1Zl9pZCk7CisJCSJNYXJraW5nIGJ1ZmZlciB7aWQ6JWQga2V5OiVkICVkICVkfSBh cyBpbnZhbGlkXG4iLAorCQlzZ3RfaW5mby0+aGlkLmlkLCBzZ3RfaW5mby0+aGlkLnJuZ19rZXlb MF0sIHNndF9pbmZvLT5oaWQucm5nX2tleVsxXSwKKwkJc2d0X2luZm8tPmhpZC5ybmdfa2V5WzJd KTsKKwogCS8qIG5vIGxvbmdlciB2YWxpZCAqLwogCXNndF9pbmZvLT52YWxpZCA9IDA7CiAKQEAg LTQzNSwxMiArNDY3LDIwIEBAIHN0YXRpYyB2b2lkIGh5cGVyX2RtYWJ1Zl9kZWxheWVkX3VuZXhw b3J0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJcmV0dXJuOwogCX0KIAotCWh5cGVyX2Rt YWJ1Zl9jcmVhdGVfcmVxdWVzdChyZXEsIEhZUEVSX0RNQUJVRl9OT1RJRllfVU5FWFBPUlQsICZo eXBlcl9kbWFidWZfaWQpOworCW9wZXJhbmRzWzBdID0gc2d0X2luZm8tPmhpZC5pZDsKKworCWZv ciAoaT0wOyBpPDM7IGkrKykKKwkJb3BlcmFuZHNbaSsxXSA9IHNndF9pbmZvLT5oaWQucm5nX2tl eVtpXTsKKworCWh5cGVyX2RtYWJ1Zl9jcmVhdGVfcmVxdWVzdChyZXEsIEhZUEVSX0RNQUJVRl9O T1RJRllfVU5FWFBPUlQsICZvcGVyYW5kc1swXSk7CiAKIAkvKiBOb3cgc2VuZCB1bmV4cG9ydCBy ZXF1ZXN0IHRvIHJlbW90ZSBkb21haW4sIG1hcmtpbmcgdGhhdCBidWZmZXIgc2hvdWxkIG5vdCBi ZSB1c2VkIGFueW1vcmUgKi8KIAlyZXQgPSBvcHMtPnNlbmRfcmVxKHNndF9pbmZvLT5oeXBlcl9k bWFidWZfcmRvbWFpbiwgcmVxLCB0cnVlKTsKIAlpZiAocmV0IDwgMCkgewotCQlkZXZfZXJyKGh5 cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgInVuZXhwb3J0IG1lc3NhZ2UgZm9yIGJ1ZmZlciAl ZCBmYWlsZWRcbiIsIGh5cGVyX2RtYWJ1Zl9pZCk7CisJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3By aXZhdGUuZGV2aWNlLAorCQkJInVuZXhwb3J0IG1lc3NhZ2UgZm9yIGJ1ZmZlciB7aWQ6JWQga2V5 OiVkICVkICVkfSBmYWlsZWRcbiIsCisJCQlzZ3RfaW5mby0+aGlkLmlkLCBzZ3RfaW5mby0+aGlk LnJuZ19rZXlbMF0sIHNndF9pbmZvLT5oaWQucm5nX2tleVsxXSwKKwkJCXNndF9pbmZvLT5oaWQu cm5nX2tleVsyXSk7CiAJfQogCiAJLyogZnJlZSBtc2cgKi8KQEAgLTQ1NiwxMiArNDk2LDE1IEBA IHN0YXRpYyB2b2lkIGh5cGVyX2RtYWJ1Zl9kZWxheWVkX3VuZXhwb3J0KHN0cnVjdCB3b3JrX3N0 cnVjdCAqd29yaykKIAkgKi8KIAlpZiAoIXNndF9pbmZvLT5pbXBvcnRlcl9leHBvcnRlZCkgewog CQlkZXZfZGJnKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKLQkJCSJjbGFuaW5nIHVwIGJ1 ZmZlciAlZCBjb21wbGV0bHlcbiIsIGh5cGVyX2RtYWJ1Zl9pZCk7CisJCQkiY2xhbmluZyB1cCBi dWZmZXIge2lkOiVkIGtleTolZCAlZCAlZH0gY29tcGxldGx5XG4iLAorCQkJc2d0X2luZm8tPmhp ZC5pZCwgc2d0X2luZm8tPmhpZC5ybmdfa2V5WzBdLCBzZ3RfaW5mby0+aGlkLnJuZ19rZXlbMV0s CisJCQlzZ3RfaW5mby0+aGlkLnJuZ19rZXlbMl0pOworCiAJCWh5cGVyX2RtYWJ1Zl9jbGVhbnVw X3NndF9pbmZvKHNndF9pbmZvLCBmYWxzZSk7Ci0JCWh5cGVyX2RtYWJ1Zl9yZW1vdmVfZXhwb3J0 ZWQoaHlwZXJfZG1hYnVmX2lkKTsKLQkJa2ZyZWUoc2d0X2luZm8pOworCQloeXBlcl9kbWFidWZf cmVtb3ZlX2V4cG9ydGVkKHNndF9pbmZvLT5oaWQpOwogCQkvKiByZWdpc3RlciBoeXBlcl9kbWFi dWZfaWQgdG8gdGhlIGxpc3QgZm9yIHJldXNlICovCi0JCXN0b3JlX3JldXNhYmxlX2lkKGh5cGVy X2RtYWJ1Zl9pZCk7CisJCXN0b3JlX3JldXNhYmxlX2hpZChzZ3RfaW5mby0+aGlkKTsKKwkJa2Zy ZWUoc2d0X2luZm8pOwogCX0KIH0KIApAQCAtNDgyLDkgKzUyNSwxMiBAQCBzdGF0aWMgaW50IGh5 cGVyX2RtYWJ1Zl91bmV4cG9ydChzdHJ1Y3QgZmlsZSAqZmlscCwgdm9pZCAqZGF0YSkKIAl1bmV4 cG9ydF9hdHRyID0gKHN0cnVjdCBpb2N0bF9oeXBlcl9kbWFidWZfdW5leHBvcnQgKilkYXRhOwog CiAJLyogZmluZCBkbWFidWYgaW4gZXhwb3J0IGxpc3QgKi8KLQlzZ3RfaW5mbyA9IGh5cGVyX2Rt YWJ1Zl9maW5kX2V4cG9ydGVkKHVuZXhwb3J0X2F0dHItPmh5cGVyX2RtYWJ1Zl9pZCk7CisJc2d0 X2luZm8gPSBoeXBlcl9kbWFidWZfZmluZF9leHBvcnRlZCh1bmV4cG9ydF9hdHRyLT5oaWQpOwog Ci0JZGV2X2RiZyhoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsICJzY2hlZHVsaW5nIHVuZXhw b3J0IG9mIGJ1ZmZlciAlZFxuIiwgdW5leHBvcnRfYXR0ci0+aHlwZXJfZG1hYnVmX2lkKTsKKwlk ZXZfZGJnKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJInNjaGVkdWxpbmcgdW5leHBv cnQgb2YgYnVmZmVyIHtpZDolZCBrZXk6JWQgJWQgJWR9XG4iLAorCQl1bmV4cG9ydF9hdHRyLT5o aWQuaWQsIHVuZXhwb3J0X2F0dHItPmhpZC5ybmdfa2V5WzBdLAorCQl1bmV4cG9ydF9hdHRyLT5o aWQucm5nX2tleVsxXSwgdW5leHBvcnRfYXR0ci0+aGlkLnJuZ19rZXlbMl0pOwogCiAJLyogZmFp bGVkIHRvIGZpbmQgY29ycmVzcG9uZGluZyBlbnRyeSBpbiBleHBvcnQgbGlzdCAqLwogCWlmIChz Z3RfaW5mbyA9PSBOVUxMKSB7CkBAIC01MTgsOCArNTY0LDggQEAgc3RhdGljIGludCBoeXBlcl9k bWFidWZfcXVlcnkoc3RydWN0IGZpbGUgKmZpbHAsIHZvaWQgKmRhdGEpCiAKIAlxdWVyeV9hdHRy ID0gKHN0cnVjdCBpb2N0bF9oeXBlcl9kbWFidWZfcXVlcnkgKilkYXRhOwogCi0Jc2d0X2luZm8g PSBoeXBlcl9kbWFidWZfZmluZF9leHBvcnRlZChxdWVyeV9hdHRyLT5oeXBlcl9kbWFidWZfaWQp OwotCWltcG9ydGVkX3NndF9pbmZvID0gaHlwZXJfZG1hYnVmX2ZpbmRfaW1wb3J0ZWQocXVlcnlf YXR0ci0+aHlwZXJfZG1hYnVmX2lkKTsKKwlzZ3RfaW5mbyA9IGh5cGVyX2RtYWJ1Zl9maW5kX2V4 cG9ydGVkKHF1ZXJ5X2F0dHItPmhpZCk7CisJaW1wb3J0ZWRfc2d0X2luZm8gPSBoeXBlcl9kbWFi dWZfZmluZF9pbXBvcnRlZChxdWVyeV9hdHRyLT5oaWQpOwogCiAJLyogaWYgZG1hYnVmIGNhbid0 IGJlIGZvdW5kIGluIGJvdGggbGlzdHMsIHJldHVybiAqLwogCWlmICghKHNndF9pbmZvICYmIGlt cG9ydGVkX3NndF9pbmZvKSkgewpAQCAtNTQ0LDcgKzU5MCw3IEBAIHN0YXRpYyBpbnQgaHlwZXJf ZG1hYnVmX3F1ZXJ5KHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkICpkYXRhKQogCQkJaWYgKHNndF9p bmZvKSB7CiAJCQkJcXVlcnlfYXR0ci0+aW5mbyA9IDB4RkZGRkZGRkY7IC8qIG15c2VsZiAqLwog CQkJfSBlbHNlIHsKLQkJCQlxdWVyeV9hdHRyLT5pbmZvID0gKEhZUEVSX0RNQUJVRl9ET01fSUQo aW1wb3J0ZWRfc2d0X2luZm8tPmh5cGVyX2RtYWJ1Zl9pZCkpOworCQkJCXF1ZXJ5X2F0dHItPmlu Zm8gPSBIWVBFUl9ETUFCVUZfRE9NX0lEKGltcG9ydGVkX3NndF9pbmZvLT5oaWQpOwogCQkJfQog CQkJYnJlYWs7CiAKQEAgLTY3NCwxMCArNzIwLDExIEBAIHN0YXRpYyB2b2lkIGh5cGVyX2RtYWJ1 Zl9lbWVyZ2VuY3lfcmVsZWFzZShzdHJ1Y3QgaHlwZXJfZG1hYnVmX3NndF9pbmZvKiBzZ3RfaW5m CiAKIAlpZiAoc2d0X2luZm8tPmZpbHAgPT0gZmlscCkgewogCQlkZXZfZGJnKGh5cGVyX2RtYWJ1 Zl9wcml2YXRlLmRldmljZSwKLQkJCSJFeGVjdXRpbmcgZW1lcmdlbmN5IHJlbGVhc2Ugb2YgYnVm ZmVyICVkXG4iLAotCQkJIHNndF9pbmZvLT5oeXBlcl9kbWFidWZfaWQpOworCQkJIkV4ZWN1dGlu ZyBlbWVyZ2VuY3kgcmVsZWFzZSBvZiBidWZmZXIge2lkOiVkIGtleTolZCAlZCAlZH1cbiIsCisJ CQkgc2d0X2luZm8tPmhpZC5pZCwgc2d0X2luZm8tPmhpZC5ybmdfa2V5WzBdLAorCQkJIHNndF9p bmZvLT5oaWQucm5nX2tleVsxXSwgc2d0X2luZm8tPmhpZC5ybmdfa2V5WzJdKTsKIAotCQl1bmV4 cG9ydF9hdHRyLmh5cGVyX2RtYWJ1Zl9pZCA9IHNndF9pbmZvLT5oeXBlcl9kbWFidWZfaWQ7CisJ CXVuZXhwb3J0X2F0dHIuaGlkID0gc2d0X2luZm8tPmhpZDsKIAkJdW5leHBvcnRfYXR0ci5kZWxh eV9tcyA9IDA7CiAKIAkJaHlwZXJfZG1hYnVmX3VuZXhwb3J0KGZpbHAsICZ1bmV4cG9ydF9hdHRy KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfbGlz dC5jIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9saXN0LmMKaW5kZXgg OTBjOGM1Ni4uMjFmYzdkMCAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5 cGVyX2RtYWJ1Zl9saXN0LmMKKysrIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2Rt YWJ1Zl9saXN0LmMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+ CiAjaW5jbHVkZSAiaHlwZXJfZG1hYnVmX2Rydi5oIgogI2luY2x1ZGUgImh5cGVyX2RtYWJ1Zl9s aXN0LmgiCisjaW5jbHVkZSAiaHlwZXJfZG1hYnVmX2lkLmgiCiAKIGV4dGVybiBzdHJ1Y3QgaHlw ZXJfZG1hYnVmX3ByaXZhdGUgaHlwZXJfZG1hYnVmX3ByaXZhdGU7CiAKQEAgLTUxLDEzICs1Miwx NSBAQCBzdGF0aWMgc3NpemVfdCBoeXBlcl9kbWFidWZfaW1wb3J0ZWRfc2hvdyhzdHJ1Y3QgZGV2 aWNlICpkcnYsIHN0cnVjdCBkZXZpY2VfYXR0cgogCXNpemVfdCB0b3RhbCA9IDA7CiAKIAloYXNo X2Zvcl9lYWNoKGh5cGVyX2RtYWJ1Zl9oYXNoX2ltcG9ydGVkLCBia3QsIGluZm9fZW50cnksIG5v ZGUpIHsKLQkJaW50IGlkID0gaW5mb19lbnRyeS0+aW5mby0+aHlwZXJfZG1hYnVmX2lkOworCQlo eXBlcl9kbWFidWZfaWRfdCBoaWQgPSBpbmZvX2VudHJ5LT5pbmZvLT5oaWQ7CiAJCWludCBuZW50 cyA9IGluZm9fZW50cnktPmluZm8tPm5lbnRzOwogCQlib29sIHZhbGlkID0gaW5mb19lbnRyeS0+ aW5mby0+dmFsaWQ7CiAJCWludCBudW1faW1wb3J0ZXJzID0gaW5mb19lbnRyeS0+aW5mby0+bnVt X2ltcG9ydGVyczsKIAkJdG90YWwgKz0gbmVudHM7Ci0JCWNvdW50ICs9IHNjbnByaW50ZihidWYg KyBjb3VudCwgUEFHRV9TSVpFIC0gY291bnQsICJpZDolZCwgbmVudHM6JWQsIHY6JWMsIG51bWk6 JWRcbiIsCi0JCQkJICAgaWQsIG5lbnRzLCAodmFsaWQgPyAndCcgOiAnZicpLCBudW1faW1wb3J0 ZXJzKTsKKwkJY291bnQgKz0gc2NucHJpbnRmKGJ1ZiArIGNvdW50LCBQQUdFX1NJWkUgLSBjb3Vu dCwKKwkJCQkgICAiaGlkOntpZDolZCBrZXlzOiVkICVkICVkfSwgbmVudHM6JWQsIHY6JWMsIG51 bWk6JWRcbiIsCisJCQkJICAgaGlkLmlkLCBoaWQucm5nX2tleVswXSwgaGlkLnJuZ19rZXlbMV0s IGhpZC5ybmdfa2V5WzJdLAorCQkJCSAgIG5lbnRzLCAodmFsaWQgPyAndCcgOiAnZicpLCBudW1f aW1wb3J0ZXJzKTsKIAl9CiAJY291bnQgKz0gc2NucHJpbnRmKGJ1ZiArIGNvdW50LCBQQUdFX1NJ WkUgLSBjb3VudCwgInRvdGFsIG5lbnRzOiAlbHVcbiIsCiAJCQkgICB0b3RhbCk7CkBAIC03Mywx MyArNzYsMTUgQEAgc3RhdGljIHNzaXplX3QgaHlwZXJfZG1hYnVmX2V4cG9ydGVkX3Nob3coc3Ry dWN0IGRldmljZSAqZHJ2LCBzdHJ1Y3QgZGV2aWNlX2F0dHIKIAlzaXplX3QgdG90YWwgPSAwOwog CiAJaGFzaF9mb3JfZWFjaChoeXBlcl9kbWFidWZfaGFzaF9leHBvcnRlZCwgYmt0LCBpbmZvX2Vu dHJ5LCBub2RlKSB7Ci0JCWludCBpZCA9IGluZm9fZW50cnktPmluZm8tPmh5cGVyX2RtYWJ1Zl9p ZDsKKwkJaHlwZXJfZG1hYnVmX2lkX3QgaGlkID0gaW5mb19lbnRyeS0+aW5mby0+aGlkOwogCQlp bnQgbmVudHMgPSBpbmZvX2VudHJ5LT5pbmZvLT5uZW50czsKIAkJYm9vbCB2YWxpZCA9IGluZm9f ZW50cnktPmluZm8tPnZhbGlkOwogCQlpbnQgaW1wb3J0ZXJfZXhwb3J0ZWQgPSBpbmZvX2VudHJ5 LT5pbmZvLT5pbXBvcnRlcl9leHBvcnRlZDsKIAkJdG90YWwgKz0gbmVudHM7Ci0JCWNvdW50ICs9 IHNjbnByaW50ZihidWYgKyBjb3VudCwgUEFHRV9TSVpFIC0gY291bnQsICJpZDolZCwgbmVudHM6 JWQsIHY6JWMsIGllOiVkXG4iLAotCQkJCSAgIGlkLCBuZW50cywgKHZhbGlkID8gJ3QnIDogJ2Yn KSwgaW1wb3J0ZXJfZXhwb3J0ZWQpOworCQljb3VudCArPSBzY25wcmludGYoYnVmICsgY291bnQs IFBBR0VfU0laRSAtIGNvdW50LAorCQkJCSAgICJoaWQ6e2hpZDolZCBrZXlzOiVkICVkICVkfSwg bmVudHM6JWQsIHY6JWMsIGllOiVkXG4iLAorCQkJCSAgIGhpZC5pZCwgaGlkLnJuZ19rZXlbMF0s IGhpZC5ybmdfa2V5WzFdLCBoaWQucm5nX2tleVsyXSwKKwkJCQkgICBuZW50cywgKHZhbGlkID8g J3QnIDogJ2YnKSwgaW1wb3J0ZXJfZXhwb3J0ZWQpOwogCX0KIAljb3VudCArPSBzY25wcmludGYo YnVmICsgY291bnQsIFBBR0VfU0laRSAtIGNvdW50LCAidG90YWwgbmVudHM6ICVsdVxuIiwKIAkJ CSAgIHRvdGFsKTsKQEAgLTE0NCw3ICsxNDksNyBAQCBpbnQgaHlwZXJfZG1hYnVmX3JlZ2lzdGVy X2V4cG9ydGVkKHN0cnVjdCBoeXBlcl9kbWFidWZfc2d0X2luZm8gKmluZm8pCiAJaW5mb19lbnRy eS0+aW5mbyA9IGluZm87CiAKIAloYXNoX2FkZChoeXBlcl9kbWFidWZfaGFzaF9leHBvcnRlZCwg JmluZm9fZW50cnktPm5vZGUsCi0JCSBpbmZvX2VudHJ5LT5pbmZvLT5oeXBlcl9kbWFidWZfaWQp OworCQkgaW5mb19lbnRyeS0+aW5mby0+aGlkLmlkKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTY0 LDc0ICsxNjksMTAyIEBAIGludCBoeXBlcl9kbWFidWZfcmVnaXN0ZXJfaW1wb3J0ZWQoc3RydWN0 IGh5cGVyX2RtYWJ1Zl9pbXBvcnRlZF9zZ3RfaW5mbyogaW5mbykKIAlpbmZvX2VudHJ5LT5pbmZv ID0gaW5mbzsKIAogCWhhc2hfYWRkKGh5cGVyX2RtYWJ1Zl9oYXNoX2ltcG9ydGVkLCAmaW5mb19l bnRyeS0+bm9kZSwKLQkJIGluZm9fZW50cnktPmluZm8tPmh5cGVyX2RtYWJ1Zl9pZCk7CisJCSBp bmZvX2VudHJ5LT5pbmZvLT5oaWQuaWQpOwogCiAJcmV0dXJuIDA7CiB9CiAKLXN0cnVjdCBoeXBl cl9kbWFidWZfc2d0X2luZm8gKmh5cGVyX2RtYWJ1Zl9maW5kX2V4cG9ydGVkKGludCBpZCkKK3N0 cnVjdCBoeXBlcl9kbWFidWZfc2d0X2luZm8gKmh5cGVyX2RtYWJ1Zl9maW5kX2V4cG9ydGVkKGh5 cGVyX2RtYWJ1Zl9pZF90IGhpZCkKIHsKIAlzdHJ1Y3QgaHlwZXJfZG1hYnVmX2luZm9fZW50cnlf ZXhwb3J0ZWQgKmluZm9fZW50cnk7CiAJaW50IGJrdDsKIAogCWhhc2hfZm9yX2VhY2goaHlwZXJf ZG1hYnVmX2hhc2hfZXhwb3J0ZWQsIGJrdCwgaW5mb19lbnRyeSwgbm9kZSkKLQkJaWYoaW5mb19l bnRyeS0+aW5mby0+aHlwZXJfZG1hYnVmX2lkID09IGlkKQotCQkJcmV0dXJuIGluZm9fZW50cnkt PmluZm87CisJCS8qIGNoZWNraW5nIGhpZC5pZCBmaXJzdCAqLworCQlpZihpbmZvX2VudHJ5LT5p bmZvLT5oaWQuaWQgPT0gaGlkLmlkKSB7CisJCQkvKiB0aGVuIGtleSBpcyBjb21wYXJlZCAqLwor CQkJaWYoaHlwZXJfZG1hYnVmX2hpZF9rZXljb21wKGluZm9fZW50cnktPmluZm8tPmhpZCwgaGlk KSkKKwkJCQlyZXR1cm4gaW5mb19lbnRyeS0+aW5mbzsKKwkJCS8qIGlmIGtleSBpcyB1bm1hdGNo ZWQsIGdpdmVuIEhJRCBpcyBpbnZhbGlkLCBzbyByZXR1cm5pbmcgTlVMTCAqLworCQkJZWxzZQor CQkJCWJyZWFrOworCQl9CiAKIAlyZXR1cm4gTlVMTDsKIH0KIAogLyogc2VhcmNoIGZvciBwcmUt ZXhwb3J0ZWQgc2d0IGFuZCByZXR1cm4gaWQgb2YgaXQgaWYgaXQgZXhpc3QgKi8KLWludCBoeXBl cl9kbWFidWZfZmluZF9pZF9leHBvcnRlZChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCBpbnQgZG9t aWQpCitoeXBlcl9kbWFidWZfaWRfdCBoeXBlcl9kbWFidWZfZmluZF9oaWRfZXhwb3J0ZWQoc3Ry dWN0IGRtYV9idWYgKmRtYWJ1ZiwgaW50IGRvbWlkKQogewogCXN0cnVjdCBoeXBlcl9kbWFidWZf aW5mb19lbnRyeV9leHBvcnRlZCAqaW5mb19lbnRyeTsKKwloeXBlcl9kbWFidWZfaWRfdCBoaWQg PSB7LTEsIHswLCAwLCAwfX07CiAJaW50IGJrdDsKIAogCWhhc2hfZm9yX2VhY2goaHlwZXJfZG1h YnVmX2hhc2hfZXhwb3J0ZWQsIGJrdCwgaW5mb19lbnRyeSwgbm9kZSkKIAkJaWYoaW5mb19lbnRy eS0+aW5mby0+ZG1hX2J1ZiA9PSBkbWFidWYgJiYKIAkJICAgaW5mb19lbnRyeS0+aW5mby0+aHlw ZXJfZG1hYnVmX3Jkb21haW4gPT0gZG9taWQpCi0JCQlyZXR1cm4gaW5mb19lbnRyeS0+aW5mby0+ aHlwZXJfZG1hYnVmX2lkOworCQkJcmV0dXJuIGluZm9fZW50cnktPmluZm8tPmhpZDsKIAotCXJl dHVybiAtRU5PRU5UOworCXJldHVybiBoaWQ7CiB9CiAKLXN0cnVjdCBoeXBlcl9kbWFidWZfaW1w b3J0ZWRfc2d0X2luZm8gKmh5cGVyX2RtYWJ1Zl9maW5kX2ltcG9ydGVkKGludCBpZCkKK3N0cnVj dCBoeXBlcl9kbWFidWZfaW1wb3J0ZWRfc2d0X2luZm8gKmh5cGVyX2RtYWJ1Zl9maW5kX2ltcG9y dGVkKGh5cGVyX2RtYWJ1Zl9pZF90IGhpZCkKIHsKIAlzdHJ1Y3QgaHlwZXJfZG1hYnVmX2luZm9f ZW50cnlfaW1wb3J0ZWQgKmluZm9fZW50cnk7CiAJaW50IGJrdDsKIAogCWhhc2hfZm9yX2VhY2go aHlwZXJfZG1hYnVmX2hhc2hfaW1wb3J0ZWQsIGJrdCwgaW5mb19lbnRyeSwgbm9kZSkKLQkJaWYo aW5mb19lbnRyeS0+aW5mby0+aHlwZXJfZG1hYnVmX2lkID09IGlkKQotCQkJcmV0dXJuIGluZm9f ZW50cnktPmluZm87CisJCS8qIGNoZWNraW5nIGhpZC5pZCBmaXJzdCAqLworCQlpZihpbmZvX2Vu dHJ5LT5pbmZvLT5oaWQuaWQgPT0gaGlkLmlkKSB7CisJCQkvKiB0aGVuIGtleSBpcyBjb21wYXJl ZCAqLworCQkJaWYoaHlwZXJfZG1hYnVmX2hpZF9rZXljb21wKGluZm9fZW50cnktPmluZm8tPmhp ZCwgaGlkKSkKKwkJCQlyZXR1cm4gaW5mb19lbnRyeS0+aW5mbzsKKwkJCS8qIGlmIGtleSBpcyB1 bm1hdGNoZWQsIGdpdmVuIEhJRCBpcyBpbnZhbGlkLCBzbyByZXR1cm5pbmcgTlVMTCAqLworCQkJ ZWxzZSB7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KIAogCXJldHVybiBOVUxMOwogfQogCi1pbnQg aHlwZXJfZG1hYnVmX3JlbW92ZV9leHBvcnRlZChpbnQgaWQpCitpbnQgaHlwZXJfZG1hYnVmX3Jl bW92ZV9leHBvcnRlZChoeXBlcl9kbWFidWZfaWRfdCBoaWQpCiB7CiAJc3RydWN0IGh5cGVyX2Rt YWJ1Zl9pbmZvX2VudHJ5X2V4cG9ydGVkICppbmZvX2VudHJ5OwogCWludCBia3Q7CiAKIAloYXNo X2Zvcl9lYWNoKGh5cGVyX2RtYWJ1Zl9oYXNoX2V4cG9ydGVkLCBia3QsIGluZm9fZW50cnksIG5v ZGUpCi0JCWlmKGluZm9fZW50cnktPmluZm8tPmh5cGVyX2RtYWJ1Zl9pZCA9PSBpZCkgewotCQkJ aGFzaF9kZWwoJmluZm9fZW50cnktPm5vZGUpOwotCQkJa2ZyZWUoaW5mb19lbnRyeSk7Ci0JCQly ZXR1cm4gMDsKKwkJLyogY2hlY2tpbmcgaGlkLmlkIGZpcnN0ICovCisJCWlmKGluZm9fZW50cnkt PmluZm8tPmhpZC5pZCA9PSBoaWQuaWQpIHsKKwkJCS8qIHRoZW4ga2V5IGlzIGNvbXBhcmVkICov CisJCQlpZihoeXBlcl9kbWFidWZfaGlkX2tleWNvbXAoaW5mb19lbnRyeS0+aW5mby0+aGlkLCBo aWQpKSB7CisJCQkJaGFzaF9kZWwoJmluZm9fZW50cnktPm5vZGUpOworCQkJCWtmcmVlKGluZm9f ZW50cnkpOworCQkJCXJldHVybiAwOworCQkJfSBlbHNlIHsKKwkJCQlicmVhazsKKwkJCX0KIAkJ fQogCiAJcmV0dXJuIC1FTk9FTlQ7CiB9CiAKLWludCBoeXBlcl9kbWFidWZfcmVtb3ZlX2ltcG9y dGVkKGludCBpZCkKK2ludCBoeXBlcl9kbWFidWZfcmVtb3ZlX2ltcG9ydGVkKGh5cGVyX2RtYWJ1 Zl9pZF90IGhpZCkKIHsKIAlzdHJ1Y3QgaHlwZXJfZG1hYnVmX2luZm9fZW50cnlfaW1wb3J0ZWQg KmluZm9fZW50cnk7CiAJaW50IGJrdDsKIAogCWhhc2hfZm9yX2VhY2goaHlwZXJfZG1hYnVmX2hh c2hfaW1wb3J0ZWQsIGJrdCwgaW5mb19lbnRyeSwgbm9kZSkKLQkJaWYoaW5mb19lbnRyeS0+aW5m by0+aHlwZXJfZG1hYnVmX2lkID09IGlkKSB7Ci0JCQloYXNoX2RlbCgmaW5mb19lbnRyeS0+bm9k ZSk7Ci0JCQlrZnJlZShpbmZvX2VudHJ5KTsKLQkJCXJldHVybiAwOworCQkvKiBjaGVja2luZyBo aWQuaWQgZmlyc3QgKi8KKwkJaWYoaW5mb19lbnRyeS0+aW5mby0+aGlkLmlkID09IGhpZC5pZCkg eworCQkJLyogdGhlbiBrZXkgaXMgY29tcGFyZWQgKi8KKwkJCWlmKGh5cGVyX2RtYWJ1Zl9oaWRf a2V5Y29tcChpbmZvX2VudHJ5LT5pbmZvLT5oaWQsIGhpZCkpIHsKKwkJCQloYXNoX2RlbCgmaW5m b19lbnRyeS0+bm9kZSk7CisJCQkJa2ZyZWUoaW5mb19lbnRyeSk7CisJCQkJcmV0dXJuIDA7CisJ CQl9IGVsc2UgeworCQkJCWJyZWFrOworCQkJfQogCQl9CiAKIAlyZXR1cm4gLUVOT0VOVDsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfbGlzdC5oIGIv ZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9saXN0LmgKaW5kZXggOTI1YjBk MS4uOGY2NGRiOCAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2Rt YWJ1Zl9saXN0LmgKKysrIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9s aXN0LmgKQEAgLTQ5LDE3ICs0OSwxNyBAQCBpbnQgaHlwZXJfZG1hYnVmX3RhYmxlX2Rlc3Ryb3ko dm9pZCk7CiBpbnQgaHlwZXJfZG1hYnVmX3JlZ2lzdGVyX2V4cG9ydGVkKHN0cnVjdCBoeXBlcl9k bWFidWZfc2d0X2luZm8gKmluZm8pOwogCiAvKiBzZWFyY2ggZm9yIHByZS1leHBvcnRlZCBzZ3Qg YW5kIHJldHVybiBpZCBvZiBpdCBpZiBpdCBleGlzdCAqLwotaW50IGh5cGVyX2RtYWJ1Zl9maW5k X2lkX2V4cG9ydGVkKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIGludCBkb21pZCk7CitoeXBlcl9k bWFidWZfaWRfdCBoeXBlcl9kbWFidWZfZmluZF9oaWRfZXhwb3J0ZWQoc3RydWN0IGRtYV9idWYg KmRtYWJ1ZiwgaW50IGRvbWlkKTsKIAogaW50IGh5cGVyX2RtYWJ1Zl9yZWdpc3Rlcl9pbXBvcnRl ZChzdHJ1Y3QgaHlwZXJfZG1hYnVmX2ltcG9ydGVkX3NndF9pbmZvKiBpbmZvKTsKIAotc3RydWN0 IGh5cGVyX2RtYWJ1Zl9zZ3RfaW5mbyAqaHlwZXJfZG1hYnVmX2ZpbmRfZXhwb3J0ZWQoaW50IGlk KTsKK3N0cnVjdCBoeXBlcl9kbWFidWZfc2d0X2luZm8gKmh5cGVyX2RtYWJ1Zl9maW5kX2V4cG9y dGVkKGh5cGVyX2RtYWJ1Zl9pZF90IGhpZCk7CiAKLXN0cnVjdCBoeXBlcl9kbWFidWZfaW1wb3J0 ZWRfc2d0X2luZm8gKmh5cGVyX2RtYWJ1Zl9maW5kX2ltcG9ydGVkKGludCBpZCk7CitzdHJ1Y3Qg aHlwZXJfZG1hYnVmX2ltcG9ydGVkX3NndF9pbmZvICpoeXBlcl9kbWFidWZfZmluZF9pbXBvcnRl ZChoeXBlcl9kbWFidWZfaWRfdCBoaWQpOwogCi1pbnQgaHlwZXJfZG1hYnVmX3JlbW92ZV9leHBv cnRlZChpbnQgaWQpOworaW50IGh5cGVyX2RtYWJ1Zl9yZW1vdmVfZXhwb3J0ZWQoaHlwZXJfZG1h YnVmX2lkX3QgaGlkKTsKIAotaW50IGh5cGVyX2RtYWJ1Zl9yZW1vdmVfaW1wb3J0ZWQoaW50IGlk KTsKK2ludCBoeXBlcl9kbWFidWZfcmVtb3ZlX2ltcG9ydGVkKGh5cGVyX2RtYWJ1Zl9pZF90IGhp ZCk7CiAKIHZvaWQgaHlwZXJfZG1hYnVmX2ZvcmVhY2hfZXhwb3J0ZWQoCiAJdm9pZCAoKmZ1bmMp KHN0cnVjdCBoeXBlcl9kbWFidWZfc2d0X2luZm8gKiwgdm9pZCAqYXR0ciksCmRpZmYgLS1naXQg YS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX21zZy5jIGIvZHJpdmVycy94 ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9tc2cuYwppbmRleCA1ZjY0MjYxLi4xMmViYWQz IDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX21zZy5j CisrKyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfbXNnLmMKQEAgLTYw LDMyICs2MCwzNiBAQCB2b2lkIGh5cGVyX2RtYWJ1Zl9jcmVhdGVfcmVxdWVzdChzdHJ1Y3QgaHlw ZXJfZG1hYnVmX3JlcSAqcmVxLAogCWNhc2UgSFlQRVJfRE1BQlVGX0VYUE9SVDoKIAkJLyogZXhw b3J0aW5nIHBhZ2VzIGZvciBkbWFidWYgKi8KIAkJLyogY29tbWFuZCA6IEhZUEVSX0RNQUJVRl9F WFBPUlQsCi0JCSAqIG9wZXJhbmRzMCA6IGh5cGVyX2RtYWJ1Zl9pZAotCQkgKiBvcGVyYW5kczEg OiBudW1iZXIgb2YgcGFnZXMgdG8gYmUgc2hhcmVkCi0JCSAqIG9wZXJhbmRzMiA6IG9mZnNldCBv ZiBkYXRhIGluIHRoZSBmaXJzdCBwYWdlCi0JCSAqIG9wZXJhbmRzMyA6IGxlbmd0aCBvZiBkYXRh IGluIHRoZSBsYXN0IHBhZ2UKLQkJICogb3BlcmFuZHM0IDogdG9wLWxldmVsIHJlZmVyZW5jZSBu dW1iZXIgZm9yIHNoYXJlZCBwYWdlcwotCQkgKiBvcGVyYW5kczV+OCA6IERyaXZlci1zcGVjaWZp YyBwcml2YXRlIGRhdGEgKGUuZy4gZ3JhcGhpYyBidWZmZXIncyBtZXRhIGluZm8pCisJCSAqIG9w ZXJhbmRzMH4zIDogaHlwZXJfZG1hYnVmX2lkCisJCSAqIG9wZXJhbmRzNCA6IG51bWJlciBvZiBw YWdlcyB0byBiZSBzaGFyZWQKKwkJICogb3BlcmFuZHM1IDogb2Zmc2V0IG9mIGRhdGEgaW4gdGhl IGZpcnN0IHBhZ2UKKwkJICogb3BlcmFuZHM2IDogbGVuZ3RoIG9mIGRhdGEgaW4gdGhlIGxhc3Qg cGFnZQorCQkgKiBvcGVyYW5kczcgOiB0b3AtbGV2ZWwgcmVmZXJlbmNlIG51bWJlciBmb3Igc2hh cmVkIHBhZ2VzCisJCSAqIG9wZXJhbmRzOH4xMSA6IERyaXZlci1zcGVjaWZpYyBwcml2YXRlIGRh dGEgKGUuZy4gZ3JhcGhpYyBidWZmZXIncyBtZXRhIGluZm8pCiAJCSAqLwotCQlmb3IgKGk9MDsg aSA8IDg7IGkrKykKKwkJZm9yIChpPTA7IGkgPCAxMTsgaSsrKQogCQkJcmVxLT5vcGVyYW5kc1tp XSA9IG9wZXJhbmRzW2ldOwogCQlicmVhazsKIAogCWNhc2UgSFlQRVJfRE1BQlVGX05PVElGWV9V TkVYUE9SVDoKIAkJLyogZGVzdHJveSBzZ19saXN0IGZvciBoeXBlcl9kbWFidWZfaWQgb24gcmVt b3RlIHNpZGUgKi8KIAkJLyogY29tbWFuZCA6IERNQUJVRl9ERVNUUk9ZLAotCQkgKiBvcGVyYW5k czAgOiBoeXBlcl9kbWFidWZfaWQKKwkJICogb3BlcmFuZHMwfjMgOiBoeXBlcl9kbWFidWZfaWRf dCBoaWQKIAkJICovCi0JCXJlcS0+b3BlcmFuZHNbMF0gPSBvcGVyYW5kc1swXTsKKworCQlmb3Ig KGk9MDsgaSA8IDQ7IGkrKykKKwkJCXJlcS0+b3BlcmFuZHNbaV0gPSBvcGVyYW5kc1tpXTsKIAkJ YnJlYWs7CiAKIAljYXNlIEhZUEVSX0RNQUJVRl9FWFBPUlRfRkQ6CiAJY2FzZSBIWVBFUl9ETUFC VUZfRVhQT1JUX0ZEX0ZBSUxFRDoKIAkJLyogZG1hYnVmIGZkIGlzIGJlaW5nIGNyZWF0ZWQgb24g aW1wb3J0ZWQgc2lkZSBvciBpbXBvcnRpbmcgZmFpbGVkICovCiAJCS8qIGNvbW1hbmQgOiBIWVBF Ul9ETUFCVUZfRVhQT1JUX0ZEIG9yIEhZUEVSX0RNQUJVRl9FWFBPUlRfRkRfRkFJTEVELAotCQkg KiBvcGVyYW5kczAgOiBoeXBlcl9kbWFidWZfaWQKKwkJICogb3BlcmFuZHMwfjMgOiBoeXBlcl9k bWFidWZfaWQKIAkJICovCi0JCXJlcS0+b3BlcmFuZHNbMF0gPSBvcGVyYW5kc1swXTsKKworCQlm b3IgKGk9MDsgaSA8IDQ7IGkrKykKKwkJCXJlcS0+b3BlcmFuZHNbaV0gPSBvcGVyYW5kc1tpXTsK IAkJYnJlYWs7CiAKIAljYXNlIEhZUEVSX0RNQUJVRl9PUFNfVE9fUkVNT1RFOgpAQCAtOTgsMTAg KzEwMiwxMCBAQCB2b2lkIGh5cGVyX2RtYWJ1Zl9jcmVhdGVfcmVxdWVzdChzdHJ1Y3QgaHlwZXJf ZG1hYnVmX3JlcSAqcmVxLAogCQkvKiBub3RpZnlpbmcgZG1hYnVmIG1hcC91bm1hcCB0byBleHBv cnRlciwgbWFwIHdpbGwgbWFrZSB0aGUgZHJpdmVyIHRvIGRvIHNoYWRvdyBtYXBwaW5nCiAJCSog b3IgdW5tYXBwaW5nIGZvciBzeW5jaHJvbml6YXRpb24gd2l0aCBvcmlnaW5hbCBleHBvcnRlciAo ZS5nLiBpOTE1KSAqLwogCQkvKiBjb21tYW5kIDogRE1BQlVGX09QU19UT19TT1VSQ0UuCi0JCSAq IG9wZXJhbmRzMCA6IGh5cGVyX2RtYWJ1Zl9pZAotCQkgKiBvcGVyYW5kczEgOiBtYXAoPTEpL3Vu bWFwKD0yKS9hdHRhY2goPTMpL2RldGFjaCg9NCkKKwkJICogb3BlcmFuZHMwfjMgOiBoeXBlcl9k bWFidWZfaWQKKwkJICogb3BlcmFuZHM0IDogbWFwKD0xKS91bm1hcCg9MikvYXR0YWNoKD0zKS9k ZXRhY2goPTQpCiAJCSAqLwotCQlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKQorCQlmb3IgKGkgPSAw OyBpIDwgNTsgaSsrKQogCQkJcmVxLT5vcGVyYW5kc1tpXSA9IG9wZXJhbmRzW2ldOwogCQlicmVh azsKIApAQCAtMTI2LDEyICsxMzAsMTIgQEAgdm9pZCBjbWRfcHJvY2Vzc193b3JrKHN0cnVjdCB3 b3JrX3N0cnVjdCAqd29yaykKIAljYXNlIEhZUEVSX0RNQUJVRl9FWFBPUlQ6CiAJCS8qIGV4cG9y dGluZyBwYWdlcyBmb3IgZG1hYnVmICovCiAJCS8qIGNvbW1hbmQgOiBIWVBFUl9ETUFCVUZfRVhQ T1JULAotCQkgKiBvcGVyYW5kczAgOiBoeXBlcl9kbWFidWZfaWQKLQkJICogb3BlcmFuZHMxIDog bnVtYmVyIG9mIHBhZ2VzIHRvIGJlIHNoYXJlZAotCQkgKiBvcGVyYW5kczIgOiBvZmZzZXQgb2Yg ZGF0YSBpbiB0aGUgZmlyc3QgcGFnZQotCQkgKiBvcGVyYW5kczMgOiBsZW5ndGggb2YgZGF0YSBp biB0aGUgbGFzdCBwYWdlCi0JCSAqIG9wZXJhbmRzNCA6IHRvcC1sZXZlbCByZWZlcmVuY2UgbnVt YmVyIGZvciBzaGFyZWQgcGFnZXMKLQkJICogb3BlcmFuZHM1fjggOiBEcml2ZXItc3BlY2lmaWMg cHJpdmF0ZSBkYXRhIChlLmcuIGdyYXBoaWMgYnVmZmVyJ3MgbWV0YSBpbmZvKQorCQkgKiBvcGVy YW5kczB+MyA6IGh5cGVyX2RtYWJ1Zl9pZAorCQkgKiBvcGVyYW5kczQgOiBudW1iZXIgb2YgcGFn ZXMgdG8gYmUgc2hhcmVkCisJCSAqIG9wZXJhbmRzNSA6IG9mZnNldCBvZiBkYXRhIGluIHRoZSBm aXJzdCBwYWdlCisJCSAqIG9wZXJhbmRzNiA6IGxlbmd0aCBvZiBkYXRhIGluIHRoZSBsYXN0IHBh Z2UKKwkJICogb3BlcmFuZHM3IDogdG9wLWxldmVsIHJlZmVyZW5jZSBudW1iZXIgZm9yIHNoYXJl ZCBwYWdlcworCQkgKiBvcGVyYW5kczh+MTEgOiBEcml2ZXItc3BlY2lmaWMgcHJpdmF0ZSBkYXRh IChlLmcuIGdyYXBoaWMgYnVmZmVyJ3MgbWV0YSBpbmZvKQogCQkgKi8KIAkJaW1wb3J0ZWRfc2d0 X2luZm8gPSBrY2FsbG9jKDEsIHNpemVvZigqaW1wb3J0ZWRfc2d0X2luZm8pLCBHRlBfS0VSTkVM KTsKIApAQCAtMTQxLDI1ICsxNDUsMzEgQEAgdm9pZCBjbWRfcHJvY2Vzc193b3JrKHN0cnVjdCB3 b3JrX3N0cnVjdCAqd29yaykKIAkJCWJyZWFrOwogCQl9CiAKLQkJaW1wb3J0ZWRfc2d0X2luZm8t Pmh5cGVyX2RtYWJ1Zl9pZCA9IHJlcS0+b3BlcmFuZHNbMF07Ci0JCWltcG9ydGVkX3NndF9pbmZv LT5mcnN0X29mc3QgPSByZXEtPm9wZXJhbmRzWzJdOwotCQlpbXBvcnRlZF9zZ3RfaW5mby0+bGFz dF9sZW4gPSByZXEtPm9wZXJhbmRzWzNdOwotCQlpbXBvcnRlZF9zZ3RfaW5mby0+bmVudHMgPSBy ZXEtPm9wZXJhbmRzWzFdOwotCQlpbXBvcnRlZF9zZ3RfaW5mby0+cmVmX2hhbmRsZSA9IHJlcS0+ b3BlcmFuZHNbNF07CisJCWltcG9ydGVkX3NndF9pbmZvLT5oaWQuaWQgPSByZXEtPm9wZXJhbmRz WzBdOworCisJCWZvciAoaT0wOyBpPDM7IGkrKykKKwkJCWltcG9ydGVkX3NndF9pbmZvLT5oaWQu cm5nX2tleVtpXSA9IHJlcS0+b3BlcmFuZHNbaSsxXTsKKworCQlpbXBvcnRlZF9zZ3RfaW5mby0+ bmVudHMgPSByZXEtPm9wZXJhbmRzWzRdOworCQlpbXBvcnRlZF9zZ3RfaW5mby0+ZnJzdF9vZnN0 ID0gcmVxLT5vcGVyYW5kc1s1XTsKKwkJaW1wb3J0ZWRfc2d0X2luZm8tPmxhc3RfbGVuID0gcmVx LT5vcGVyYW5kc1s2XTsKKwkJaW1wb3J0ZWRfc2d0X2luZm8tPnJlZl9oYW5kbGUgPSByZXEtPm9w ZXJhbmRzWzddOwogCiAJCWRldl9kYmcoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLCAiRE1B QlVGIHdhcyBleHBvcnRlZFxuIik7Ci0JCWRldl9kYmcoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2 aWNlLCAiXHRoeXBlcl9kbWFidWZfaWQgJWRcbiIsIHJlcS0+b3BlcmFuZHNbMF0pOwotCQlkZXZf ZGJnKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgIlx0bmVudHMgJWRcbiIsIHJlcS0+b3Bl cmFuZHNbMV0pOwotCQlkZXZfZGJnKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgIlx0Zmly c3Qgb2Zmc2V0ICVkXG4iLCByZXEtPm9wZXJhbmRzWzJdKTsKLQkJZGV2X2RiZyhoeXBlcl9kbWFi dWZfcHJpdmF0ZS5kZXZpY2UsICJcdGxhc3QgbGVuICVkXG4iLCByZXEtPm9wZXJhbmRzWzNdKTsK LQkJZGV2X2RiZyhoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsICJcdGdyZWZpZCAlZFxuIiwg cmVxLT5vcGVyYW5kc1s0XSk7CisJCWRldl9kYmcoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNl LCAiXHRoaWR7aWQ6JWQga2V5OiVkICVkICVkfVxuIiwKKwkJCXJlcS0+b3BlcmFuZHNbMF0sIHJl cS0+b3BlcmFuZHNbMV0sIHJlcS0+b3BlcmFuZHNbMl0sCisJCQlyZXEtPm9wZXJhbmRzWzNdKTsK KwkJZGV2X2RiZyhoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsICJcdG5lbnRzICVkXG4iLCBy ZXEtPm9wZXJhbmRzWzRdKTsKKwkJZGV2X2RiZyhoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2Us ICJcdGZpcnN0IG9mZnNldCAlZFxuIiwgcmVxLT5vcGVyYW5kc1s1XSk7CisJCWRldl9kYmcoaHlw ZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLCAiXHRsYXN0IGxlbiAlZFxuIiwgcmVxLT5vcGVyYW5k c1s2XSk7CisJCWRldl9kYmcoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLCAiXHRncmVmaWQg JWRcbiIsIHJlcS0+b3BlcmFuZHNbN10pOwogCiAJCWZvciAoaT0wOyBpPDQ7IGkrKykKLQkJCWlt cG9ydGVkX3NndF9pbmZvLT5wcml2YXRlW2ldID0gcmVxLT5vcGVyYW5kc1s1K2ldOworCQkJaW1w b3J0ZWRfc2d0X2luZm8tPnByaXZhdGVbaV0gPSByZXEtPm9wZXJhbmRzWzgraV07CiAKIAkJaW1w b3J0ZWRfc2d0X2luZm8tPnZhbGlkID0gMTsKIAkJaHlwZXJfZG1hYnVmX3JlZ2lzdGVyX2ltcG9y dGVkKGltcG9ydGVkX3NndF9pbmZvKTsKLQkJYnJlYWs7CisJYnJlYWs7CiAKIAljYXNlIEhZUEVS X0RNQUJVRl9PUFNfVE9fUkVNT1RFOgogCQkvKiBub3RpZnlpbmcgZG1hYnVmIG1hcC91bm1hcCB0 byBpbXBvcnRlciAocHJvYmFibHkgbm90IG5lZWRlZCkgKi8KQEAgLTE4Miw2ICsxOTIsOCBAQCBp bnQgaHlwZXJfZG1hYnVmX21zZ19wYXJzZShpbnQgZG9taWQsIHN0cnVjdCBoeXBlcl9kbWFidWZf cmVxICpyZXEpCiAJc3RydWN0IGh5cGVyX2RtYWJ1Zl9yZXEgKnRlbXBfcmVxOwogCXN0cnVjdCBo eXBlcl9kbWFidWZfaW1wb3J0ZWRfc2d0X2luZm8gKnNndF9pbmZvOwogCXN0cnVjdCBoeXBlcl9k bWFidWZfc2d0X2luZm8gKmV4cF9zZ3RfaW5mbzsKKwloeXBlcl9kbWFidWZfaWRfdCBoaWQgPSB7 cmVxLT5vcGVyYW5kc1swXSwgLyogaGlkLmlkICovCisJCQkgICAgICAge3JlcS0+b3BlcmFuZHNb MV0sIHJlcS0+b3BlcmFuZHNbMl0sIHJlcS0+b3BlcmFuZHNbM119fTsgLyogaGlkLnJuZ19rZXkg Ki8KIAlpbnQgcmV0OwogCiAJaWYgKCFyZXEpIHsKQEAgLTIwMywxMiArMjE1LDEyIEBAIGludCBo eXBlcl9kbWFidWZfbXNnX3BhcnNlKGludCBkb21pZCwgc3RydWN0IGh5cGVyX2RtYWJ1Zl9yZXEg KnJlcSkKIAlpZiAocmVxLT5jb21tYW5kID09IEhZUEVSX0RNQUJVRl9OT1RJRllfVU5FWFBPUlQp IHsKIAkJLyogZGVzdHJveSBzZ19saXN0IGZvciBoeXBlcl9kbWFidWZfaWQgb24gcmVtb3RlIHNp ZGUgKi8KIAkJLyogY29tbWFuZCA6IEhZUEVSX0RNQUJVRl9OT1RJRllfVU5FWFBPUlQsCi0JCSAq IG9wZXJhbmRzMCA6IGh5cGVyX2RtYWJ1Zl9pZAorCQkgKiBvcGVyYW5kczB+MyA6IGh5cGVyX2Rt YWJ1Zl9pZAogCQkgKi8KIAkJZGV2X2RiZyhoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCiAJ CQkiJXM6IHByb2Nlc3NpbmcgSFlQRVJfRE1BQlVGX05PVElGWV9VTkVYUE9SVFxuIiwgX19mdW5j X18pOwogCi0JCXNndF9pbmZvID0gaHlwZXJfZG1hYnVmX2ZpbmRfaW1wb3J0ZWQocmVxLT5vcGVy YW5kc1swXSk7CisJCXNndF9pbmZvID0gaHlwZXJfZG1hYnVmX2ZpbmRfaW1wb3J0ZWQoaGlkKTsK IAogCQlpZiAoc2d0X2luZm8pIHsKIAkJCS8qIGlmIGFueXRoaW5nIGlzIHN0aWxsIHVzaW5nIGRt YV9idWYgKi8KQEAgLTIyMCw3ICsyMzIsNyBAQCBpbnQgaHlwZXJfZG1hYnVmX21zZ19wYXJzZShp bnQgZG9taWQsIHN0cnVjdCBoeXBlcl9kbWFidWZfcmVxICpyZXEpCiAJCQkJc2d0X2luZm8tPnZh bGlkID0gMDsKIAkJCX0gZWxzZSB7CiAJCQkJLyogTm8gb25lIGlzIHVzaW5nIGJ1ZmZlciwgcmVt b3ZlIGl0IGZyb20gaW1wb3J0ZWQgbGlzdCAqLwotCQkJCWh5cGVyX2RtYWJ1Zl9yZW1vdmVfaW1w b3J0ZWQocmVxLT5vcGVyYW5kc1swXSk7CisJCQkJaHlwZXJfZG1hYnVmX3JlbW92ZV9pbXBvcnRl ZChoaWQpOwogCQkJCWtmcmVlKHNndF9pbmZvKTsKIAkJCX0KIAkJfSBlbHNlIHsKQEAgLTIzNiwx MyArMjQ4LDE0IEBAIGludCBoeXBlcl9kbWFidWZfbXNnX3BhcnNlKGludCBkb21pZCwgc3RydWN0 IGh5cGVyX2RtYWJ1Zl9yZXEgKnJlcSkKIAkJICogb3IgdW5tYXBwaW5nIGZvciBzeW5jaHJvbml6 YXRpb24gd2l0aCBvcmlnaW5hbCBleHBvcnRlciAoZS5nLiBpOTE1KSAqLwogCiAJCS8qIGNvbW1h bmQgOiBETUFCVUZfT1BTX1RPX1NPVVJDRS4KLQkJICogb3BlcmFuZHMwIDogaHlwZXJfZG1hYnVm X2lkCisJCSAqIG9wZXJhbmRzMH4zIDogaHlwZXJfZG1hYnVmX2lkCiAJCSAqIG9wZXJhbmRzMSA6 IGVudW0gaHlwZXJfZG1hYnVmX29wcyB7Li4uLn0KIAkJICovCiAJCWRldl9kYmcoaHlwZXJfZG1h YnVmX3ByaXZhdGUuZGV2aWNlLAogCQkJIiVzOiBIWVBFUl9ETUFCVUZfT1BTX1RPX1NPVVJDRVxu IiwgX19mdW5jX18pOwogCi0JCXJldCA9IGh5cGVyX2RtYWJ1Zl9yZW1vdGVfc3luYyhyZXEtPm9w ZXJhbmRzWzBdLCByZXEtPm9wZXJhbmRzWzFdKTsKKwkJcmV0ID0gaHlwZXJfZG1hYnVmX3JlbW90 ZV9zeW5jKGhpZCwgcmVxLT5vcGVyYW5kc1s0XSk7CisKIAkJaWYgKHJldCkKIAkJCXJlcS0+c3Rh dHVzID0gSFlQRVJfRE1BQlVGX1JFUV9FUlJPUjsKIAkJZWxzZQpAQCAtMjU1LDIwICsyNjgsMjgg QEAgaW50IGh5cGVyX2RtYWJ1Zl9tc2dfcGFyc2UoaW50IGRvbWlkLCBzdHJ1Y3QgaHlwZXJfZG1h YnVmX3JlcSAqcmVxKQogCWlmIChyZXEtPmNvbW1hbmQgPT0gSFlQRVJfRE1BQlVGX0VYUE9SVF9G RCkgewogCQkvKiBmaW5kIGEgY29ycmVzcG9uZGluZyBTR1QgZm9yIHRoZSBpZCAqLwogCQlkZXZf ZGJnKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKLQkJCSJQcm9jZXNzaW5nIEhZUEVSX0RN QUJVRl9FWFBPUlRfRkQgJWRcbiIsIHJlcS0+b3BlcmFuZHNbMF0pOwotCQlleHBfc2d0X2luZm8g PSBoeXBlcl9kbWFidWZfZmluZF9leHBvcnRlZChyZXEtPm9wZXJhbmRzWzBdKTsKKwkJCSJQcm9j ZXNzaW5nIEhZUEVSX0RNQUJVRl9FWFBPUlRfRkQgZm9yIGJ1ZmZlciB7aWQ6JWQga2V5OiVkICVk ICVkfVxuIiwKKwkJCWhpZC5pZCwgaGlkLnJuZ19rZXlbMF0sIGhpZC5ybmdfa2V5WzFdLCBoaWQu cm5nX2tleVsyXSk7CisKKwkJZXhwX3NndF9pbmZvID0gaHlwZXJfZG1hYnVmX2ZpbmRfZXhwb3J0 ZWQoaGlkKTsKIAogCQlpZiAoIWV4cF9zZ3RfaW5mbykgewogCQkJZGV2X2VycihoeXBlcl9kbWFi dWZfcHJpdmF0ZS5kZXZpY2UsCi0JCQkJImNyaXRpY2FsIGVycjogcmVxdWVzdGVkIHNndF9pbmZv IGNhbid0IGJlIGZvdW5kICVkXG4iLCByZXEtPm9wZXJhbmRzWzBdKTsKKwkJCQkiY3JpdGljYWwg ZXJyOiByZXF1ZXN0ZWQgc2d0X2luZm8gY2FuJ3QgYmUgZm91bmQgZm9yIGJ1ZmZlciB7aWQ6JWQg a2V5OiVkICVkICVkfVxuIiwKKwkJCQloaWQuaWQsIGhpZC5ybmdfa2V5WzBdLCBoaWQucm5nX2tl eVsxXSwgaGlkLnJuZ19rZXlbMl0pOworCiAJCQlyZXEtPnN0YXR1cyA9IEhZUEVSX0RNQUJVRl9S RVFfRVJST1I7CiAJCX0gZWxzZSBpZiAoIWV4cF9zZ3RfaW5mby0+dmFsaWQpIHsKIAkJCWRldl9k YmcoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAotCQkJCSJCdWZmZXIgbm8gbG9uZ2VyIHZh bGlkIC0gY2Fubm90IGV4cG9ydCBmZCAlZFxuIiwgcmVxLT5vcGVyYW5kc1swXSk7CisJCQkJIkJ1 ZmZlciBubyBsb25nZXIgdmFsaWQgLSBjYW5ub3QgZXhwb3J0IGZkIGZvciBidWZmZXIge2lkOiVk IGtleTolZCAlZCAlZH1cbiIsCisJCQkJaGlkLmlkLCBoaWQucm5nX2tleVswXSwgaGlkLnJuZ19r ZXlbMV0sIGhpZC5ybmdfa2V5WzJdKTsKKwogCQkJcmVxLT5zdGF0dXMgPSBIWVBFUl9ETUFCVUZf UkVRX0VSUk9SOwogCQl9IGVsc2UgewogCQkJZGV2X2RiZyhoeXBlcl9kbWFidWZfcHJpdmF0ZS5k ZXZpY2UsCi0JCQkJIkJ1ZmZlciBzdGlsbCB2YWxpZCAtIGNhbiBleHBvcnQgZmQlZFxuIiwgcmVx LT5vcGVyYW5kc1swXSk7CisJCQkJIkJ1ZmZlciBzdGlsbCB2YWxpZCAtIGNhbiBleHBvcnQgZmQg Zm9yIGJ1ZmZlciB7aWQ6JWQga2V5OiVkICVkICVkfVxuIiwKKwkJCQloaWQuaWQsIGhpZC5ybmdf a2V5WzBdLCBoaWQucm5nX2tleVsxXSwgaGlkLnJuZ19rZXlbMl0pOworCiAJCQlleHBfc2d0X2lu Zm8tPmltcG9ydGVyX2V4cG9ydGVkKys7CiAJCQlyZXEtPnN0YXR1cyA9IEhZUEVSX0RNQUJVRl9S RVFfUFJPQ0VTU0VEOwogCQl9CkBAIC0yNzcsMTIgKzI5OCwxNiBAQCBpbnQgaHlwZXJfZG1hYnVm X21zZ19wYXJzZShpbnQgZG9taWQsIHN0cnVjdCBoeXBlcl9kbWFidWZfcmVxICpyZXEpCiAKIAlp ZiAocmVxLT5jb21tYW5kID09IEhZUEVSX0RNQUJVRl9FWFBPUlRfRkRfRkFJTEVEKSB7CiAJCWRl dl9kYmcoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAotCQkJIlByb2Nlc3NpbmcgSFlQRVJf RE1BQlVGX0VYUE9SVF9GRF9GQUlMRUQgJWRcbiIsIHJlcS0+b3BlcmFuZHNbMF0pOwotCQlleHBf c2d0X2luZm8gPSBoeXBlcl9kbWFidWZfZmluZF9leHBvcnRlZChyZXEtPm9wZXJhbmRzWzBdKTsK KwkJCSJQcm9jZXNzaW5nIEhZUEVSX0RNQUJVRl9FWFBPUlRfRkRfRkFJTEVEIGZvciBidWZmZXIg e2lkOiVkIGtleTolZCAlZCAlZH1cbiIsCisJCQloaWQuaWQsIGhpZC5ybmdfa2V5WzBdLCBoaWQu cm5nX2tleVsxXSwgaGlkLnJuZ19rZXlbMl0pOworCisJCWV4cF9zZ3RfaW5mbyA9IGh5cGVyX2Rt YWJ1Zl9maW5kX2V4cG9ydGVkKGhpZCk7CiAKIAkJaWYgKCFleHBfc2d0X2luZm8pIHsKIAkJCWRl dl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAotCQkJCSJjcml0aWNhbCBlcnI6IHJl cXVlc3RlZCBzZ3RfaW5mbyBjYW4ndCBiZSBmb3VuZCAlZFxuIiwgcmVxLT5vcGVyYW5kc1swXSk7 CisJCQkJImNyaXRpY2FsIGVycjogcmVxdWVzdGVkIHNndF9pbmZvIGNhbid0IGJlIGZvdW5kIGZv ciBidWZmZXIge2lkOiVkIGtleTolZCAlZCAlZH1cbiIsCisJCQkJaGlkLmlkLCBoaWQucm5nX2tl eVswXSwgaGlkLnJuZ19rZXlbMV0sIGhpZC5ybmdfa2V5WzJdKTsKKwogCQkJcmVxLT5zdGF0dXMg PSBIWVBFUl9ETUFCVUZfUkVRX0VSUk9SOwogCQl9IGVsc2UgewogCQkJZXhwX3NndF9pbmZvLT5p bXBvcnRlcl9leHBvcnRlZC0tOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVm L2h5cGVyX2RtYWJ1Zl9tc2cuaCBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFi dWZfbXNnLmgKaW5kZXggNTBjZTYxNy4uNjM2ZDZmMSAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4v aHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9tc2cuaAorKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9k bWFidWYvaHlwZXJfZG1hYnVmX21zZy5oCkBAIC0yNSw3ICsyNSw3IEBACiAjaWZuZGVmIF9fSFlQ RVJfRE1BQlVGX01TR19IX18KICNkZWZpbmUgX19IWVBFUl9ETUFCVUZfTVNHX0hfXwogCi0jZGVm aW5lIE1BWF9OVU1CRVJfT0ZfT1BFUkFORFMgOQorI2RlZmluZSBNQVhfTlVNQkVSX09GX09QRVJB TkRTIDEzCiAKIHN0cnVjdCBoeXBlcl9kbWFidWZfcmVxIHsKIAl1bnNpZ25lZCBpbnQgcmVxdWVz dF9pZDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZf cmVtb3RlX3N5bmMuYyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfcmVt b3RlX3N5bmMuYwppbmRleCAyZGFiODMzLi5iZTFkMzk1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3hl bi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX3JlbW90ZV9zeW5jLmMKKysrIGIvZHJpdmVycy94 ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9yZW1vdGVfc3luYy5jCkBAIC0zMSwxMCArMzEs MTAgQEAKICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+ CiAjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgorI2luY2x1ZGUgImh5cGVyX2RtYWJ1Zl9kcnYu aCIKICNpbmNsdWRlICJoeXBlcl9kbWFidWZfc3RydWN0LmgiCiAjaW5jbHVkZSAiaHlwZXJfZG1h YnVmX2xpc3QuaCIKICNpbmNsdWRlICJoeXBlcl9kbWFidWZfbXNnLmgiCi0jaW5jbHVkZSAiaHlw ZXJfZG1hYnVmX2Rydi5oIgogI2luY2x1ZGUgImh5cGVyX2RtYWJ1Zl9pZC5oIgogI2luY2x1ZGUg Imh5cGVyX2RtYWJ1Zl9tc2cuaCIKICNpbmNsdWRlICJoeXBlcl9kbWFidWZfaW1wLmgiCkBAIC01 Niw3ICs1Niw3IEBAIGV4dGVybiBzdHJ1Y3QgaHlwZXJfZG1hYnVmX3ByaXZhdGUgaHlwZXJfZG1h YnVmX3ByaXZhdGU7CiAgKiBpcyB3aGF0IGlzIGNyZWF0ZWQgd2hlbiBpbml0aWFsIGV4cG9ydGlu ZyBpcyBpc3N1ZWQgc28gaXQKICAqIHNob3VsZCBub3QgYmUgbW9kaWZpZWQgb3IgcmVsZWFzZWQg YnkgdGhpcyBmdWN0aW9uLgogICovCi1pbnQgaHlwZXJfZG1hYnVmX3JlbW90ZV9zeW5jKGludCBp ZCwgaW50IG9wcykKK2ludCBoeXBlcl9kbWFidWZfcmVtb3RlX3N5bmMoaHlwZXJfZG1hYnVmX2lk X3QgaGlkLCBpbnQgb3BzKQogewogCXN0cnVjdCBoeXBlcl9kbWFidWZfc2d0X2luZm8gKnNndF9p bmZvOwogCXN0cnVjdCBzZ3RfbGlzdCAqc2d0bDsKQEAgLTY2LDcgKzY2LDcgQEAgaW50IGh5cGVy X2RtYWJ1Zl9yZW1vdGVfc3luYyhpbnQgaWQsIGludCBvcHMpCiAJaW50IHJldDsKIAogCS8qIGZp bmQgYSBjb3Jlc3BvbmRpbmcgU0dUIGZvciB0aGUgaWQgKi8KLQlzZ3RfaW5mbyA9IGh5cGVyX2Rt YWJ1Zl9maW5kX2V4cG9ydGVkKGlkKTsKKwlzZ3RfaW5mbyA9IGh5cGVyX2RtYWJ1Zl9maW5kX2V4 cG9ydGVkKGhpZCk7CiAKIAlpZiAoIXNndF9pbmZvKSB7CiAJCWRldl9lcnIoaHlwZXJfZG1hYnVm X3ByaXZhdGUuZGV2aWNlLApAQCAtMTY3LDkgKzE2NywxMCBAQCBpbnQgaHlwZXJfZG1hYnVmX3Jl bW90ZV9zeW5jKGludCBpZCwgaW50IG9wcykKIAogCWNhc2UgSFlQRVJfRE1BQlVGX09QU19SRUxF QVNFOgogCQlkZXZfZGJnKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKLQkJCSJCdWZmZXIg JWQgcmVsZWFzZWQsIHJlZmVyZW5jZXMgbGVmdDogJWRcbiIsCi0JCQkgc2d0X2luZm8tPmh5cGVy X2RtYWJ1Zl9pZCwKLQkJCSBzZ3RfaW5mby0+aW1wb3J0ZXJfZXhwb3J0ZWQgLTEpOworCQkJIkJ1 ZmZlciB7aWQ6JWQga2V5OiVkICVkICVkfSByZWxlYXNlZCwgcmVmZXJlbmNlcyBsZWZ0OiAlZFxu IiwKKwkJCSBzZ3RfaW5mby0+aGlkLmlkLCBzZ3RfaW5mby0+aGlkLnJuZ19rZXlbMF0sIHNndF9p bmZvLT5oaWQucm5nX2tleVsxXSwKKwkJCSBzZ3RfaW5mby0+aGlkLnJuZ19rZXlbMl0sIHNndF9p bmZvLT5pbXBvcnRlcl9leHBvcnRlZCAtMSk7CisKICAgICAgICAgICAgICAgICBzZ3RfaW5mby0+ aW1wb3J0ZXJfZXhwb3J0ZWQtLTsKIAkJLyogSWYgdGhlcmUgYXJlIHN0aWxsIGltcG9ydGVycyBq dXN0IGJyZWFrLCBpZiBubyB0aGVuIGNvbnRpbnVlIHdpdGggZmluYWwgY2xlYW51cCAqLwogCQlp ZiAoc2d0X2luZm8tPmltcG9ydGVyX2V4cG9ydGVkKQpAQCAtMTgwLDE1ICsxODEsMTcgQEAgaW50 IGh5cGVyX2RtYWJ1Zl9yZW1vdGVfc3luYyhpbnQgaWQsIGludCBvcHMpCiAJCSAqIElmIG5vdCBh bmQgYnVmZmVyIHdhcyB1bmV4cG9ydGVkLCBjbGVhbiB1cCBzaGFyZWQgZGF0YSBhbmQgcmVtb3Zl IHRoYXQgYnVmZmVyLgogCQkgKi8KIAkJZGV2X2RiZyhoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZp Y2UsCi0JCQkiQnVmZmVyICVkIGZpbmFsIHJlbGVhc2VkXG4iLCBzZ3RfaW5mby0+aHlwZXJfZG1h YnVmX2lkKTsKKwkJCSJCdWZmZXIge2lkOiVkIGtleTolZCAlZCAlZH0gZmluYWwgcmVsZWFzZWRc biIsCisJCQlzZ3RfaW5mby0+aGlkLmlkLCBzZ3RfaW5mby0+aGlkLnJuZ19rZXlbMF0sIHNndF9p bmZvLT5oaWQucm5nX2tleVsxXSwKKwkJCXNndF9pbmZvLT5oaWQucm5nX2tleVsyXSk7CiAKIAkJ aWYgKCFzZ3RfaW5mby0+dmFsaWQgJiYgIXNndF9pbmZvLT5pbXBvcnRlcl9leHBvcnRlZCAmJgog CQkgICAgIXNndF9pbmZvLT51bmV4cG9ydF9zY2hlZHVsZWQpIHsKIAkJCWh5cGVyX2RtYWJ1Zl9j bGVhbnVwX3NndF9pbmZvKHNndF9pbmZvLCBmYWxzZSk7Ci0JCQloeXBlcl9kbWFidWZfcmVtb3Zl X2V4cG9ydGVkKGlkKTsKKwkJCWh5cGVyX2RtYWJ1Zl9yZW1vdmVfZXhwb3J0ZWQoaGlkKTsKIAkJ CWtmcmVlKHNndF9pbmZvKTsKIAkJCS8qIHN0b3JlIGh5cGVyX2RtYWJ1Zl9pZCBpbiB0aGUgbGlz dCBmb3IgcmV1c2UgKi8KLQkJCXN0b3JlX3JldXNhYmxlX2lkKGlkKTsKKwkJCXN0b3JlX3JldXNh YmxlX2hpZChoaWQpOwogCQl9CiAKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9o eXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX3JlbW90ZV9zeW5jLmggYi9kcml2ZXJzL3hlbi9oeXBl cl9kbWFidWYvaHlwZXJfZG1hYnVmX3JlbW90ZV9zeW5jLmgKaW5kZXggNzFlZTM1OC4uMzY2Mzg5 MjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfcmVt b3RlX3N5bmMuaAorKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX3Jl bW90ZV9zeW5jLmgKQEAgLTI1LDYgKzI1LDYgQEAKICNpZm5kZWYgX19IWVBFUl9ETUFCVUZfUkVN T1RFX1NZTkNfSF9fCiAjZGVmaW5lIF9fSFlQRVJfRE1BQlVGX1JFTU9URV9TWU5DX0hfXwogCi1p bnQgaHlwZXJfZG1hYnVmX3JlbW90ZV9zeW5jKGludCBpZCwgaW50IG9wcyk7CitpbnQgaHlwZXJf ZG1hYnVmX3JlbW90ZV9zeW5jKGh5cGVyX2RtYWJ1Zl9pZF90IGhpZCwgaW50IG9wcyk7CiAKICNl bmRpZiAvLyBfX0hZUEVSX0RNQUJVRl9SRU1PVEVfU1lOQ19IX18KZGlmZiAtLWdpdCBhL2RyaXZl cnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfc3RydWN0LmggYi9kcml2ZXJzL3hlbi9o eXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX3N0cnVjdC5oCmluZGV4IDk5NTJiM2YuLjk5MWE4ZDQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfc3RydWN0 LmgKKysrIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9zdHJ1Y3QuaApA QCAtNTEsNyArNTEsNyBAQCBzdHJ1Y3Qgdm1hcF92YWRkcl9saXN0IHsKIAogLyogRXhwb3J0ZXIg YnVpbGRzIHBhZ2VzX2luZm8gYmVmb3JlIHNoYXJpbmcgcGFnZXMgKi8KIHN0cnVjdCBoeXBlcl9k bWFidWZfcGFnZXNfaW5mbyB7Ci0gICAgICAgIGludCBoeXBlcl9kbWFidWZfaWQ7IC8qIHVuaXF1 ZSBpZCB0byByZWZlcmVuY2UgZG1hYnVmIGluIHNvdXJjZSBkb21haW4gKi8KKyAgICAgICAgaHlw ZXJfZG1hYnVmX2lkX3QgaGlkOyAvKiB1bmlxdWUgaWQgdG8gcmVmZXJlbmNlIGRtYWJ1ZiBpbiBz b3VyY2UgZG9tYWluICovCiAgICAgICAgIGludCBoeXBlcl9kbWFidWZfcmRvbWFpbjsgLyogY3Vy cmVudGluZyBjb25zaWRlcmluZyBqdXN0IG9uZSByZW1vdGUgZG9tYWluIGFjY2VzcyBpdCAqLwog ICAgICAgICBpbnQgZnJzdF9vZnN0OyAvKiBvZmZzZXQgb2YgZGF0YSBpbiB0aGUgZmlyc3QgcGFn ZSAqLwogICAgICAgICBpbnQgbGFzdF9sZW47IC8qIGxlbmd0aCBvZiBkYXRhIGluIHRoZSBsYXN0 IHBhZ2UgKi8KQEAgLTY0LDIyICs2NCwyNyBAQCBzdHJ1Y3QgaHlwZXJfZG1hYnVmX3BhZ2VzX2lu Zm8gewogICogRXhwb3J0ZXIgc3RvcmVzIHJlZmVyZW5jZXMgdG8gc2d0IGluIGEgaGFzaCB0YWJs ZQogICogRXhwb3J0ZXIga2VlcHMgdGhlc2UgcmVmZXJlbmNlcyBmb3Igc3luY2hyb25pemF0aW9u IGFuZCB0cmFja2luZyBwdXJwb3NlcwogICoKLSAqIEltcG9ydGVyIHVzZSB0aGlzIHN0cnVjdHVy ZSBleHBvcnRpbmcgdG8gb3RoZXIgZHJpdmVycyBpbiB0aGUgc2FtZSBkb21haW4gKi8KKyAqIElt cG9ydGVyIHVzZSB0aGlzIHN0cnVjdHVyZSBleHBvcnRpbmcgdG8gb3RoZXIgZHJpdmVycyBpbiB0 aGUgc2FtZSBkb21haW4KKyAqLwogc3RydWN0IGh5cGVyX2RtYWJ1Zl9zZ3RfaW5mbyB7Ci0gICAg ICAgIGludCBoeXBlcl9kbWFidWZfaWQ7IC8qIHVuaXF1ZSBpZCB0byByZWZlcmVuY2UgZG1hYnVm IGluIHJlbW90ZSBkb21haW4gKi8KKyAgICAgICAgaHlwZXJfZG1hYnVmX2lkX3QgaGlkOyAvKiB1 bmlxdWUgaWQgdG8gcmVmZXJlbmNlIGRtYWJ1ZiBpbiByZW1vdGUgZG9tYWluICovCiAJaW50IGh5 cGVyX2RtYWJ1Zl9yZG9tYWluOyAvKiBkb21haW4gaW1wb3J0aW5nIHRoaXMgc2d0ICovCiAKIAlz dHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZjsgLyogbmVlZGVkIHRvIHN0b3JlIHRoaXMgZm9yIGZyZWVp bmcgaXQgbGF0ZXIgKi8KIAlpbnQgbmVudHM7IC8qIG51bWJlciBvZiBwYWdlcywgd2hpY2ggbWF5 IGJlIGRpZmZlcmVudCB0aGFuIHNndC0+bmVudHMgKi8KKworCS8qIGxpc3Qgb2YgcmVtb3RlIGFj dGl2aXRpZXMgb24gZG1hX2J1ZiAqLwogCXN0cnVjdCBzZ3RfbGlzdCAqYWN0aXZlX3NndHM7CiAJ c3RydWN0IGF0dGFjaG1lbnRfbGlzdCAqYWN0aXZlX2F0dGFjaGVkOwogCXN0cnVjdCBrbWFwX3Zh ZGRyX2xpc3QgKnZhX2ttYXBwZWQ7CiAJc3RydWN0IHZtYXBfdmFkZHJfbGlzdCAqdmFfdm1hcHBl ZDsKLQlib29sIHZhbGlkOworCisJYm9vbCB2YWxpZDsgLyogc2V0IHRvIDAgb25jZSB1bmV4cG9y dGVkLiBOZWVkZWQgdG8gcHJldmVudCBmdXJ0aGVyIG1hcHBpbmcgYnkgaW1wb3J0ZXIgKi8KIAlp bnQgaW1wb3J0ZXJfZXhwb3J0ZWQ7IC8qIGV4cG9ydGVkIGxvY2FsbHkgb24gaW1wb3J0ZXIncyBz aWRlICovCiAJdm9pZCAqcmVmc19pbmZvOyAvKiBoeXBlcnZpc29yLXNwZWNpZmljIGluZm8gZm9y IHRoZSByZWZlcmVuY2VzICovCiAJc3RydWN0IGRlbGF5ZWRfd29yayB1bmV4cG9ydF93b3JrOwog CWJvb2wgdW5leHBvcnRfc2NoZWR1bGVkOworCiAJLyogb3duZXIgb2YgYnVmZmVyCiAJICogVE9E TzogdGhhdCBpcyBuYWlpdmUgYXMgYnVmZmVyIG1heSBiZSByZXVzZWQgYnkKIAkgKiBhbm90aGVy IHVzZXJzcGFjZSBhcHAsIHNvIGhlcmUgbGlzdCBvZiBzdHJ1Y3QgZmlsZSBzaG91bGQgYmUga2Vw dApAQCAtOTQsMTMgKzk5LDE2IEBAIHN0cnVjdCBoeXBlcl9kbWFidWZfc2d0X2luZm8gewogICog SW1wb3J0ZXIgc3RvcmUgdGhlc2UgcmVmZXJlbmNlcyBpbiB0aGUgdGFibGUgYW5kIG1hcCBpdCBp bgogICogaXRzIG93biBtZW1vcnkgbWFwIG9uY2UgdXNlcnNwYWNlIGFza3MgZm9yIHJlZmVyZW5j ZSBmb3IgdGhlIGJ1ZmZlciAqLwogc3RydWN0IGh5cGVyX2RtYWJ1Zl9pbXBvcnRlZF9zZ3RfaW5m byB7Ci0JaW50IGh5cGVyX2RtYWJ1Zl9pZDsgLyogdW5pcXVlIGlkIHRvIHJlZmVyZW5jZSBkbWFi dWYgKEhZUEVSX0RNQUJVRl9JRF9JTVBPUlRFUihzb3VyY2UgZG9tYWluIGlkLCBleHBvcnRlcidz IGh5cGVyX2RtYWJ1Zl9pZCAqLworCWh5cGVyX2RtYWJ1Zl9pZF90IGhpZDsgLyogdW5pcXVlIGlk IGZvciBzaGFyZWQgZG1hYnVmIGltcG9ydGVkICovCisKIAlpbnQgcmVmX2hhbmRsZTsgLyogcmVm ZXJlbmNlIG51bWJlciBvZiB0b3AgbGV2ZWwgYWRkcmVzc2luZyBwYWdlIG9mIHNoYXJlZCBwYWdl cyAqLwotCWludCBmcnN0X29mc3Q7CS8qIHN0YXJ0IG9mZnNldCBpbiBzaGFyZWQgcGFnZSAjMSAq LworCWludCBmcnN0X29mc3Q7CS8qIHN0YXJ0IG9mZnNldCBpbiBmaXJzdCBzaGFyZWQgcGFnZSAq LwogCWludCBsYXN0X2xlbjsJLyogbGVuZ3RoIG9mIGRhdGEgaW4gdGhlIGxhc3Qgc2hhcmVkIHBh Z2UgKi8KIAlpbnQgbmVudHM7CS8qIG51bWJlciBvZiBwYWdlcyB0byBiZSBzaGFyZWQgKi8KKwog CXN0cnVjdCBkbWFfYnVmICpkbWFfYnVmOwogCXN0cnVjdCBzZ190YWJsZSAqc2d0OyAvKiBzZ3Qg cG9pbnRlciBhZnRlciBpbXBvcnRpbmcgYnVmZmVyICovCisKIAl2b2lkICpyZWZzX2luZm87CiAJ Ym9vbCB2YWxpZDsKIAlpbnQgbnVtX2ltcG9ydGVyczsKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVu L2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1hYnVmX3hlbl9jb21tLmggYi9kcml2ZXJzL3hlbi9o eXBlcl9kbWFidWYveGVuL2h5cGVyX2RtYWJ1Zl94ZW5fY29tbS5oCmluZGV4IDA1MzNlNGQuLjgw NzQxYzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1h YnVmX3hlbl9jb21tLmgKKysrIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL3hlbi9oeXBlcl9k bWFidWZfeGVuX2NvbW0uaApAQCAtMjksOCArMjksNiBAQAogI2luY2x1ZGUgInhlbi94ZW5idXMu aCIKICNpbmNsdWRlICIuLi9oeXBlcl9kbWFidWZfbXNnLmgiCiAKLSNkZWZpbmUgTUFYX05VTUJF Ul9PRl9PUEVSQU5EUyA5Ci0KIERFRklORV9SSU5HX1RZUEVTKHhlbl9jb21tLCBzdHJ1Y3QgaHlw ZXJfZG1hYnVmX3JlcSwgc3RydWN0IGh5cGVyX2RtYWJ1Zl9yZXNwKTsKIAogc3RydWN0IHhlbl9j b21tX3R4X3JpbmdfaW5mbyB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkveGVuL2h5cGVyX2Rt YWJ1Zi5oIGIvaW5jbHVkZS91YXBpL3hlbi9oeXBlcl9kbWFidWYuaAppbmRleCAyZWZmM2E4ZS4u OTkyYTU0MiAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL3hlbi9oeXBlcl9kbWFidWYuaAorKysg Yi9pbmNsdWRlL3VhcGkveGVuL2h5cGVyX2RtYWJ1Zi5oCkBAIC0yNSw2ICsyNSwxMSBAQAogI2lm bmRlZiBfX0xJTlVYX1BVQkxJQ19IWVBFUl9ETUFCVUZfSF9fCiAjZGVmaW5lIF9fTElOVVhfUFVC TElDX0hZUEVSX0RNQUJVRl9IX18KIAordHlwZWRlZiBzdHJ1Y3QgeworICAgICAgICBpbnQgaWQ7 CisgICAgICAgIGludCBybmdfa2V5WzNdOyAvKiAxMmJ5dGVzIGxvbmcgcmFuZG9tIG51bWJlciAq LworfSBoeXBlcl9kbWFidWZfaWRfdDsKKwogI2RlZmluZSBJT0NUTF9IWVBFUl9ETUFCVUZfVFhf Q0hfU0VUVVAgXAogX0lPQyhfSU9DX05PTkUsICdHJywgMCwgc2l6ZW9mKHN0cnVjdCBpb2N0bF9o eXBlcl9kbWFidWZfdHhfY2hfc2V0dXApKQogc3RydWN0IGlvY3RsX2h5cGVyX2RtYWJ1Zl90eF9j aF9zZXR1cCB7CkBAIC01MCw3ICs1NSw3IEBAIHN0cnVjdCBpb2N0bF9oeXBlcl9kbWFidWZfZXhw b3J0X3JlbW90ZSB7CiAJLyogRG9tYWluIGlkIHRvIHdoaWNoIGJ1ZmZlciBzaG91bGQgYmUgZXhw b3J0ZWQgKi8KIAlpbnQgcmVtb3RlX2RvbWFpbjsKIAkvKiBleHBvcnRlZCBkbWEgYnVmIGlkICov Ci0JaW50IGh5cGVyX2RtYWJ1Zl9pZDsKKwloeXBlcl9kbWFidWZfaWRfdCBoaWQ7CiAJaW50IHBy aXZhdGVbNF07CiB9OwogCkBAIC01OSw3ICs2NCw3IEBAIF9JT0MoX0lPQ19OT05FLCAnRycsIDMs IHNpemVvZihzdHJ1Y3QgaW9jdGxfaHlwZXJfZG1hYnVmX2V4cG9ydF9mZCkpCiBzdHJ1Y3QgaW9j dGxfaHlwZXJfZG1hYnVmX2V4cG9ydF9mZCB7CiAJLyogSU4gcGFyYW1ldGVycyAqLwogCS8qIGh5 cGVyIGRtYWJ1ZiBpZCB0byBiZSBpbXBvcnRlZCAqLwotCWludCBoeXBlcl9kbWFidWZfaWQ7CisJ aHlwZXJfZG1hYnVmX2lkX3QgaGlkOwogCS8qIGZsYWdzICovCiAJaW50IGZsYWdzOwogCS8qIE9V VCBwYXJhbWV0ZXJzICovCkBAIC03Miw3ICs3Nyw3IEBAIF9JT0MoX0lPQ19OT05FLCAnRycsIDQs IHNpemVvZihzdHJ1Y3QgaW9jdGxfaHlwZXJfZG1hYnVmX3VuZXhwb3J0KSkKIHN0cnVjdCBpb2N0 bF9oeXBlcl9kbWFidWZfdW5leHBvcnQgewogCS8qIElOIHBhcmFtZXRlcnMgKi8KIAkvKiBoeXBl ciBkbWFidWYgaWQgdG8gYmUgdW5leHBvcnRlZCAqLwotCWludCBoeXBlcl9kbWFidWZfaWQ7CisJ aHlwZXJfZG1hYnVmX2lkX3QgaGlkOwogCS8qIGRlbGF5IGluIG1zIGJ5IHdoaWNoIHVuZXhwb3J0 IHByb2Nlc3Npbmcgd2lsbCBiZSBwb3N0cG9uZWQgKi8KIAlpbnQgZGVsYXlfbXM7CiAJLyogT1VU IHBhcmFtZXRlcnMgKi8KQEAgLTg1LDcgKzkwLDcgQEAgX0lPQyhfSU9DX05PTkUsICdHJywgNSwg c2l6ZW9mKHN0cnVjdCBpb2N0bF9oeXBlcl9kbWFidWZfcXVlcnkpKQogc3RydWN0IGlvY3RsX2h5 cGVyX2RtYWJ1Zl9xdWVyeSB7CiAJLyogaW4gcGFyYW1ldGVycyAqLwogCS8qIGh5cGVyIGRtYWJ1 ZiBpZCB0byBiZSBxdWVyaWVkICovCi0JaW50IGh5cGVyX2RtYWJ1Zl9pZDsKKwloeXBlcl9kbWFi dWZfaWRfdCBoaWQ7CiAJLyogaXRlbSB0byBiZSBxdWVyaWVkICovCiAJaW50IGl0ZW07CiAJLyog T1VUIHBhcmFtZXRlcnMgKi8KLS0gCjIuNy40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp c3RpbmZvL3hlbi1kZXZlbA==