From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dongwon Kim Subject: [RFC PATCH 50/60] hyper_dmabuf: fix styling err and warns caught by checkpatch.pl Date: Tue, 19 Dec 2017 11:30:06 -0800 Message-ID: <1513711816-2618-50-git-send-email-dongwon.kim__26035.6230465279$1513712545$gmane$org@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: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eRNnu-0003cG-4C for xen-devel@lists.xenproject.org; Tue, 19 Dec 2017 19:43:54 +0000 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: xen-devel@lists.xenproject.org Rml4aW5nIGFsbCBzdHlsaW5nIHByb2JsZW1zIGNhdWdodCBieSBjaGVja3BhdGNoLnBsCgpTaWdu ZWQtb2ZmLWJ5OiBEb25nd29uIEtpbSA8ZG9uZ3dvbi5raW1AaW50ZWwuY29tPgotLS0KIGRyaXZl cnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfZHJ2LmMgICAgICAgIHwgIDUzICsrLS0K IGRyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfZHJ2LmggICAgICAgIHwgICA2 ICstCiBkcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2V2ZW50LmMgICAgICB8 ICAxMiArLQogZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9pZC5jICAgICAg ICAgfCAgMjQgKy0KIGRyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfaWQuaCAg ICAgICAgIHwgICA0ICstCiBkcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2lv Y3RsLmMgICAgICB8IDMwOCArKysrKysrKysrKy0tLS0tLS0tLS0KIGRyaXZlcnMveGVuL2h5cGVy X2RtYWJ1Zi9oeXBlcl9kbWFidWZfaW9jdGwuaCAgICAgIHwgICA1ICstCiBkcml2ZXJzL3hlbi9o eXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX21zZy5jICAgICAgICB8IDEzMiArKysrLS0tLS0KIGRy aXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfbXNnLmggICAgICAgIHwgICA0ICst CiBkcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX29wcy5jICAgICAgICB8ICA1 OCArKy0tCiBkcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX3F1ZXJ5LmMgICAg ICB8IDIzNiArKysrKysrKy0tLS0tLS0tCiAuLi4veGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFi dWZfcmVtb3RlX3N5bmMuYyAgICB8ICA4MSArKystLS0KIGRyaXZlcnMveGVuL2h5cGVyX2RtYWJ1 Zi9oeXBlcl9kbWFidWZfc2dsX3Byb2MuYyAgIHwgIDE1ICstCiBkcml2ZXJzL3hlbi9oeXBlcl9k bWFidWYvaHlwZXJfZG1hYnVmX3NnbF9wcm9jLmggICB8ICAgMiArLQogZHJpdmVycy94ZW4vaHlw ZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9zdHJ1Y3QuaCAgICAgfCAgNzggKysrKy0tCiAuLi4veGVu L2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1hYnVmX3hlbl9jb21tLmMgICB8IDE1NCArKysrKy0t LS0tLQogLi4uL3hlbi9oeXBlcl9kbWFidWYveGVuL2h5cGVyX2RtYWJ1Zl94ZW5fY29tbS5oICAg fCAgMjEgKy0KIC4uLi9oeXBlcl9kbWFidWYveGVuL2h5cGVyX2RtYWJ1Zl94ZW5fY29tbV9saXN0 LmMgIHwgIDIxICstCiAuLi4vaHlwZXJfZG1hYnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX2NvbW1f bGlzdC5oICB8ICAxNiArLQogLi4uL3hlbi9oeXBlcl9kbWFidWYveGVuL2h5cGVyX2RtYWJ1Zl94 ZW5fZHJ2LmggICAgfCAgMTkgKy0KIC4uLi94ZW4vaHlwZXJfZG1hYnVmL3hlbi9oeXBlcl9kbWFi dWZfeGVuX3NobS5jICAgIHwgMTI4ICsrKysrLS0tLQogLi4uL3hlbi9oeXBlcl9kbWFidWYveGVu L2h5cGVyX2RtYWJ1Zl94ZW5fc2htLmggICAgfCAgMTUgKy0KIGluY2x1ZGUvdWFwaS94ZW4vaHlw ZXJfZG1hYnVmLmggICAgICAgICAgICAgICAgICAgIHwgIDI2ICstCiAyMyBmaWxlcyBjaGFuZ2Vk LCA3MzkgaW5zZXJ0aW9ucygrKSwgNjc5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfZHJ2LmMgYi9kcml2ZXJzL3hlbi9oeXBl cl9kbWFidWYvaHlwZXJfZG1hYnVmX2Rydi5jCmluZGV4IDUyNWVlNzguLjAyM2Q3ZjQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfZHJ2LmMKKysrIGIv ZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9kcnYuYwpAQCAtNDQsNyArNDQs NiBAQAogCiAjaWZkZWYgQ09ORklHX0hZUEVSX0RNQUJVRl9YRU4KICNpbmNsdWRlICJ4ZW4vaHlw ZXJfZG1hYnVmX3hlbl9kcnYuaCIKLWV4dGVybiBzdHJ1Y3QgaHlwZXJfZG1hYnVmX2JhY2tlbmRf b3BzIHhlbl9iYWNrZW5kX29wczsKICNlbmRpZgogCiBNT0RVTEVfTElDRU5TRSgiR1BMIGFuZCBh ZGRpdGlvbmFsIHJpZ2h0cyIpOwpAQCAtNTIsMTQgKzUxLDExIEBAIE1PRFVMRV9BVVRIT1IoIklu dGVsIENvcnBvcmF0aW9uIik7CiAKIHN0cnVjdCBoeXBlcl9kbWFidWZfcHJpdmF0ZSAqaHlfZHJ2 X3ByaXY7CiAKLWxvbmcgaHlwZXJfZG1hYnVmX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLAotCQkJ dW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBwYXJhbSk7Ci0KLXN0YXRpYyB2b2lkIGh5 cGVyX2RtYWJ1Zl9mb3JjZV9mcmVlKHN0cnVjdCBleHBvcnRlZF9zZ3RfaW5mbyogZXhwb3J0ZWQs Ci0JCQkgICAgICAgICAgICB2b2lkICphdHRyKQorc3RhdGljIHZvaWQgaHlwZXJfZG1hYnVmX2Zv cmNlX2ZyZWUoc3RydWN0IGV4cG9ydGVkX3NndF9pbmZvICpleHBvcnRlZCwKKwkJCQkgICAgdm9p ZCAqYXR0cikKIHsKIAlzdHJ1Y3QgaW9jdGxfaHlwZXJfZG1hYnVmX3VuZXhwb3J0IHVuZXhwb3J0 X2F0dHI7Ci0Jc3RydWN0IGZpbGUgKmZpbHAgPSAoc3RydWN0IGZpbGUqKSBhdHRyOworCXN0cnVj dCBmaWxlICpmaWxwID0gKHN0cnVjdCBmaWxlICopYXR0cjsKIAogCWlmICghZmlscCB8fCAhZXhw b3J0ZWQpCiAJCXJldHVybjsKQEAgLTk3LDcgKzkzLDggQEAgaW50IGh5cGVyX2RtYWJ1Zl9yZWxl YXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKQogCiAjaWZkZWYgQ09O RklHX0hZUEVSX0RNQUJVRl9FVkVOVF9HRU4KIAotdW5zaWduZWQgaW50IGh5cGVyX2RtYWJ1Zl9l dmVudF9wb2xsKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3QgcG9sbF90YWJsZV9zdHJ1Y3QgKndh aXQpCit1bnNpZ25lZCBpbnQgaHlwZXJfZG1hYnVmX2V2ZW50X3BvbGwoc3RydWN0IGZpbGUgKmZp bHAsCisJCQkJICAgICBzdHJ1Y3QgcG9sbF90YWJsZV9zdHJ1Y3QgKndhaXQpCiB7CiAJdW5zaWdu ZWQgaW50IG1hc2sgPSAwOwogCkBAIC0xNTMsMTUgKzE1MCwxNyBAQCBzc2l6ZV90IGh5cGVyX2Rt YWJ1Zl9ldmVudF9yZWFkKHN0cnVjdCBmaWxlICpmaWxwLCBjaGFyIF9fdXNlciAqYnVmZmVyLAog CiAJCQltdXRleF91bmxvY2soJmh5X2Rydl9wcml2LT5ldmVudF9yZWFkX2xvY2spOwogCQkJcmV0 ID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGh5X2Rydl9wcml2LT5ldmVudF93YWl0LAotCQkJ CQkJICAgICAgICFsaXN0X2VtcHR5KCZoeV9kcnZfcHJpdi0+ZXZlbnRfbGlzdCkpOworCQkJCSAg IWxpc3RfZW1wdHkoJmh5X2Rydl9wcml2LT5ldmVudF9saXN0KSk7CiAKIAkJCWlmIChyZXQgPT0g MCkKLQkJCQlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmh5X2Rydl9wcml2LT5ldmVu dF9yZWFkX2xvY2spOworCQkJCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgKKwkJCQkJ Jmh5X2Rydl9wcml2LT5ldmVudF9yZWFkX2xvY2spOwogCiAJCQlpZiAocmV0KQogCQkJCXJldHVy biByZXQ7CiAJCX0gZWxzZSB7Ci0JCQl1bnNpZ25lZCBsZW5ndGggPSAoc2l6ZW9mKHN0cnVjdCBo eXBlcl9kbWFidWZfZXZlbnRfaGRyKSArIGUtPmV2ZW50X2RhdGEuaGRyLnNpemUpOworCQkJdW5z aWduZWQgaW50IGxlbmd0aCA9IChzaXplb2YoZS0+ZXZlbnRfZGF0YS5oZHIpICsKKwkJCQkJCSAg ICAgIGUtPmV2ZW50X2RhdGEuaGRyLnNpemUpOwogCiAJCQlpZiAobGVuZ3RoID4gY291bnQgLSBy ZXQpIHsKIHB1dF9iYWNrX2V2ZW50OgpAQCAtMTcyLDIwICsxNzEsMjIgQEAgc3NpemVfdCBoeXBl cl9kbWFidWZfZXZlbnRfcmVhZChzdHJ1Y3QgZmlsZSAqZmlscCwgY2hhciBfX3VzZXIgKmJ1ZmZl ciwKIAkJCX0KIAogCQkJaWYgKGNvcHlfdG9fdXNlcihidWZmZXIgKyByZXQsICZlLT5ldmVudF9k YXRhLmhkciwKLQkJCQkJIHNpemVvZihzdHJ1Y3QgaHlwZXJfZG1hYnVmX2V2ZW50X2hkcikpKSB7 CisJCQkJCSBzaXplb2YoZS0+ZXZlbnRfZGF0YS5oZHIpKSkgewogCQkJCWlmIChyZXQgPT0gMCkK IAkJCQkJcmV0ID0gLUVGQVVMVDsKIAogCQkJCWdvdG8gcHV0X2JhY2tfZXZlbnQ7CiAJCQl9CiAK LQkJCXJldCArPSBzaXplb2Yoc3RydWN0IGh5cGVyX2RtYWJ1Zl9ldmVudF9oZHIpOworCQkJcmV0 ICs9IHNpemVvZihlLT5ldmVudF9kYXRhLmhkcik7CiAKLQkJCWlmIChjb3B5X3RvX3VzZXIoYnVm ZmVyICsgcmV0LCBlLT5ldmVudF9kYXRhLmRhdGEsIGUtPmV2ZW50X2RhdGEuaGRyLnNpemUpKSB7 CisJCQlpZiAoY29weV90b191c2VyKGJ1ZmZlciArIHJldCwgZS0+ZXZlbnRfZGF0YS5kYXRhLAor CQkJCQkgZS0+ZXZlbnRfZGF0YS5oZHIuc2l6ZSkpIHsKIAkJCQkvKiBlcnJvciB3aGlsZSBjb3B5 aW5nIHZvaWQgKmRhdGEgKi8KIAogCQkJCXN0cnVjdCBoeXBlcl9kbWFidWZfZXZlbnRfaGRyIGR1 bW15X2hkciA9IHswfTsKLQkJCQlyZXQgLT0gc2l6ZW9mKHN0cnVjdCBoeXBlcl9kbWFidWZfZXZl bnRfaGRyKTsKKworCQkJCXJldCAtPSBzaXplb2YoZS0+ZXZlbnRfZGF0YS5oZHIpOwogCiAJCQkJ LyogbnVsbGlmeWluZyBoZHIgb2YgdGhlIGV2ZW50IGluIHVzZXIgYnVmZmVyICovCiAJCQkJaWYg KGNvcHlfdG9fdXNlcihidWZmZXIgKyByZXQsICZkdW1teV9oZHIsCkBAIC0yMTIsOCArMjEzLDcg QEAgc3NpemVfdCBoeXBlcl9kbWFidWZfZXZlbnRfcmVhZChzdHJ1Y3QgZmlsZSAqZmlscCwgY2hh ciBfX3VzZXIgKmJ1ZmZlciwKIAogI2VuZGlmCiAKLXN0YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRp b25zIGh5cGVyX2RtYWJ1Zl9kcml2ZXJfZm9wcyA9Ci17CitzdGF0aWMgY29uc3Qgc3RydWN0IGZp bGVfb3BlcmF0aW9ucyBoeXBlcl9kbWFidWZfZHJpdmVyX2ZvcHMgPSB7CiAJLm93bmVyID0gVEhJ U19NT0RVTEUsCiAJLm9wZW4gPSBoeXBlcl9kbWFidWZfb3BlbiwKIAkucmVsZWFzZSA9IGh5cGVy X2RtYWJ1Zl9yZWxlYXNlLApAQCAtMjQ2LDcgKzI0Niw3IEBAIGludCByZWdpc3Rlcl9kZXZpY2Uo dm9pZCkKIAogCWh5X2Rydl9wcml2LT5kZXYgPSBoeXBlcl9kbWFidWZfbWlzY2Rldi50aGlzX2Rl dmljZTsKIAotCS8qIFRPRE86IENoZWNrIGlmIHRoZXJlIGlzIGEgZGlmZmVyZW50IHdheSB0byBp bml0aWFsaXplIGRtYSBtYXNrIG5pY2VseSAqLworCS8qIFRPRE86IENoZWNrIGlmIHRoZXJlIGlz IGEgZGlmZmVyZW50IHdheSB0byBpbml0aWFsaXplIGRtYSBtYXNrICovCiAJZG1hX2NvZXJjZV9t YXNrX2FuZF9jb2hlcmVudChoeV9kcnZfcHJpdi0+ZGV2LCBETUFfQklUX01BU0soNjQpKTsKIAog CXJldHVybiByZXQ7CkBAIC0yNjQsMzIgKzI2NCwzMCBAQCBzdGF0aWMgaW50IF9faW5pdCBoeXBl cl9kbWFidWZfZHJ2X2luaXQodm9pZCkKIHsKIAlpbnQgcmV0ID0gMDsKIAotCXByaW50ayggS0VS Tl9OT1RJQ0UgImh5cGVyX2RtYWJ1Zl9zdGFydGluZzogSW5pdGlhbGl6YXRpb24gc3RhcnRlZFxu Iik7CisJcHJpbnRrKEtFUk5fTk9USUNFICJoeXBlcl9kbWFidWZfc3RhcnRpbmc6IEluaXRpYWxp emF0aW9uIHN0YXJ0ZWRcbiIpOwogCiAJaHlfZHJ2X3ByaXYgPSBrY2FsbG9jKDEsIHNpemVvZihz dHJ1Y3QgaHlwZXJfZG1hYnVmX3ByaXZhdGUpLAogCQkJICAgICAgR0ZQX0tFUk5FTCk7CiAKIAlp ZiAoIWh5X2Rydl9wcml2KSB7Ci0JCXByaW50ayggS0VSTl9FUlIgImh5cGVyX2RtYWJ1ZjogRmFp bGVkIHRvIGNyZWF0ZSBkcnZcbiIpOworCQlwcmludGsoS0VSTl9FUlIgImh5cGVyX2RtYWJ1Zjog RmFpbGVkIHRvIGNyZWF0ZSBkcnZcbiIpOwogCQlyZXR1cm4gLTE7CiAJfQogCiAJcmV0ID0gcmVn aXN0ZXJfZGV2aWNlKCk7Ci0JaWYgKHJldCA8IDApIHsKKwlpZiAocmV0IDwgMCkKIAkJcmV0dXJu IHJldDsKLQl9CiAKIC8qIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIFhFTiBoeXBlcnZpc29yICov Ci0KICNpZmRlZiBDT05GSUdfSFlQRVJfRE1BQlVGX1hFTgogCWh5X2Rydl9wcml2LT5iYWNrZW5k X29wcyA9ICZ4ZW5fYmFja2VuZF9vcHM7CiAjZWxzZQogCWh5X2Rydl9wcml2LT5iYWNrZW5kX29w cyA9IE5VTEw7Ci0JcHJpbnRrKCBLRVJOX0VSUiAiaHlwZXJfZG1hYnVmIGRydiBjdXJyZW50bHkg c3VwcG9ydHMgWEVOIG9ubHkuXG4iKTsKKwlwcmludGsoS0VSTl9FUlIgImh5cGVyX2RtYWJ1ZiBk cnYgY3VycmVudGx5IHN1cHBvcnRzIFhFTiBvbmx5LlxuIik7CiAjZW5kaWYKIAogCWlmIChoeV9k cnZfcHJpdi0+YmFja2VuZF9vcHMgPT0gTlVMTCkgewotCQlwcmludGsoIEtFUk5fRVJSICJIeXBl cl9kbWFidWY6IGZhaWxlZCB0byBiZSBsb2FkZWQgLSBubyBiYWNrZW5kIGZvdW5kXG4iKTsKKwkJ cHJpbnRrKEtFUk5fRVJSICJIeXBlcl9kbWFidWY6IG5vIGJhY2tlbmQgZm91bmRcbiIpOwogCQly ZXR1cm4gLTE7CiAJfQogCkBAIC0zODUsMTAgKzM4Myw3IEBAIHN0YXRpYyB2b2lkIGh5cGVyX2Rt YWJ1Zl9kcnZfZXhpdCh2b2lkKQogCWRldl9pbmZvKGh5X2Rydl9wcml2LT5kZXYsCiAJCSAiaHlw ZXJfZG1hYnVmIGRyaXZlcjogRXhpdGluZ1xuIik7CiAKLQlpZiAoaHlfZHJ2X3ByaXYpIHsKLQkJ a2ZyZWUoaHlfZHJ2X3ByaXYpOwotCQloeV9kcnZfcHJpdiA9IE5VTEw7Ci0JfQorCWtmcmVlKGh5 X2Rydl9wcml2KTsKIAogCXVucmVnaXN0ZXJfZGV2aWNlKCk7CiB9CmRpZmYgLS1naXQgYS9kcml2 ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2Rydi5oIGIvZHJpdmVycy94ZW4vaHlw ZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9kcnYuaAppbmRleCAyZWFkNDFiLi4wNDljNjk0IDEwMDY0 NAotLS0gYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2Rydi5oCisrKyBi L2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfZHJ2LmgKQEAgLTM2LDcgKzM2 LDcgQEAgc3RydWN0IGh5cGVyX2RtYWJ1Zl9ldmVudCB7CiB9OwogCiBzdHJ1Y3QgaHlwZXJfZG1h YnVmX3ByaXZhdGUgewotICAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IGRldmlj ZSAqZGV2OwogCiAJLyogVk0oZG9tYWluKSBpZCBvZiBjdXJyZW50IFZNIGluc3RhbmNlICovCiAJ aW50IGRvbWlkOwpAQCAtNTcsOCArNTcsOCBAQCBzdHJ1Y3QgaHlwZXJfZG1hYnVmX3ByaXZhdGUg ewogCS8qIGZsYWcgdGhhdCBzaG93cyB3aGV0aGVyIGJhY2tlbmQgaXMgaW5pdGlhbGl6ZWQgKi8K IAlib29sIGluaXRpYWxpemVkOwogCi0gICAgICAgIHdhaXRfcXVldWVfaGVhZF90IGV2ZW50X3dh aXQ7Ci0gICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZXZlbnRfbGlzdDsKKwl3YWl0X3F1ZXVlX2hl YWRfdCBldmVudF93YWl0OworCXN0cnVjdCBsaXN0X2hlYWQgZXZlbnRfbGlzdDsKIAogCXNwaW5s b2NrX3QgZXZlbnRfbG9jazsKIAlzdHJ1Y3QgbXV0ZXggZXZlbnRfcmVhZF9sb2NrOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9ldmVudC5jIGIvZHJp dmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9ldmVudC5jCmluZGV4IDA0OThjZGEu LmE0OTQ1YWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFi dWZfZXZlbnQuYworKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2V2 ZW50LmMKQEAgLTQ0LDcgKzQ0LDggQEAgc3RhdGljIHZvaWQgaHlwZXJfZG1hYnVmX3NlbmRfZXZl bnRfbG9ja2VkKHN0cnVjdCBoeXBlcl9kbWFidWZfZXZlbnQgKmUpCiAJYXNzZXJ0X3NwaW5fbG9j a2VkKCZoeV9kcnZfcHJpdi0+ZXZlbnRfbG9jayk7CiAKIAkvKiBjaGVjayBjdXJyZW50IG51bWJl ciBvZiBldmVudCB0aGVuIGlmIGl0IGhpdHMgdGhlIG1heCBudW0gYWxsb3dlZAotCSAqIHRoZW4g cmVtb3ZlIHRoZSBvbGRlc3QgZXZlbnQgaW4gdGhlIGxpc3QgKi8KKwkgKiB0aGVuIHJlbW92ZSB0 aGUgb2xkZXN0IGV2ZW50IGluIHRoZSBsaXN0CisJICovCiAJaWYgKGh5X2Rydl9wcml2LT5wZW5k aW5nID4gTUFYX0RFUFRIX0VWRU5UX1FVRVVFIC0gMSkgewogCQlvbGRlc3QgPSBsaXN0X2ZpcnN0 X2VudHJ5KCZoeV9kcnZfcHJpdi0+ZXZlbnRfbGlzdCwKIAkJCQlzdHJ1Y3QgaHlwZXJfZG1hYnVm X2V2ZW50LCBsaW5rKTsKQEAgLTYxLDcgKzYyLDcgQEAgc3RhdGljIHZvaWQgaHlwZXJfZG1hYnVm X3NlbmRfZXZlbnRfbG9ja2VkKHN0cnVjdCBoeXBlcl9kbWFidWZfZXZlbnQgKmUpCiAJd2FrZV91 cF9pbnRlcnJ1cHRpYmxlKCZoeV9kcnZfcHJpdi0+ZXZlbnRfd2FpdCk7CiB9CiAKLXZvaWQgaHlw ZXJfZG1hYnVmX2V2ZW50c19yZWxlYXNlKCkKK3ZvaWQgaHlwZXJfZG1hYnVmX2V2ZW50c19yZWxl YXNlKHZvaWQpCiB7CiAJc3RydWN0IGh5cGVyX2RtYWJ1Zl9ldmVudCAqZSwgKmV0OwogCXVuc2ln bmVkIGxvbmcgaXJxZmxhZ3M7CkBAIC0xMDAsMTUgKzEwMSwxMiBAQCBpbnQgaHlwZXJfZG1hYnVm X2ltcG9ydF9ldmVudChoeXBlcl9kbWFidWZfaWRfdCBoaWQpCiAKIAllID0ga3phbGxvYyhzaXpl b2YoKmUpLCBHRlBfS0VSTkVMKTsKIAotCWlmICghZSkgewotCQlkZXZfZXJyKGh5X2Rydl9wcml2 LT5kZXYsCi0JCQkibm8gc3BhY2UgbGVmdFxuIik7CisJaWYgKCFlKQogCQlyZXR1cm4gLUVOT01F TTsKLQl9CiAKIAllLT5ldmVudF9kYXRhLmhkci5ldmVudF90eXBlID0gSFlQRVJfRE1BQlVGX05F V19JTVBPUlQ7CiAJZS0+ZXZlbnRfZGF0YS5oZHIuaGlkID0gaGlkOwotCWUtPmV2ZW50X2RhdGEu ZGF0YSA9ICh2b2lkKilpbXBvcnRlZC0+cHJpdjsKKwllLT5ldmVudF9kYXRhLmRhdGEgPSAodm9p ZCAqKWltcG9ydGVkLT5wcml2OwogCWUtPmV2ZW50X2RhdGEuaGRyLnNpemUgPSBpbXBvcnRlZC0+ c3pfcHJpdjsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZoeV9kcnZfcHJpdi0+ZXZlbnRfbG9jaywg aXJxZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2Rt YWJ1Zl9pZC5jIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9pZC5jCmlu ZGV4IGUyNDY2YzcuLjMxMmRlYTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1 Zi9oeXBlcl9kbWFidWZfaWQuYworKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJf ZG1hYnVmX2lkLmMKQEAgLTQwLDExICs0MCw4IEBAIHZvaWQgc3RvcmVfcmV1c2FibGVfaGlkKGh5 cGVyX2RtYWJ1Zl9pZF90IGhpZCkKIAogCW5ld19yZXVzYWJsZSA9IGttYWxsb2Moc2l6ZW9mKCpu ZXdfcmV1c2FibGUpLCBHRlBfS0VSTkVMKTsKIAotCWlmICghbmV3X3JldXNhYmxlKSB7Ci0JCWRl dl9lcnIoaHlfZHJ2X3ByaXYtPmRldiwKLQkJCSJObyBtZW1vcnkgbGVmdCB0byBiZSBhbGxvY2F0 ZWRcbiIpOworCWlmICghbmV3X3JldXNhYmxlKQogCQlyZXR1cm47Ci0JfQogCiAJbmV3X3JldXNh YmxlLT5oaWQgPSBoaWQ7CiAKQEAgLTU0LDcgKzUxLDcgQEAgdm9pZCBzdG9yZV9yZXVzYWJsZV9o aWQoaHlwZXJfZG1hYnVmX2lkX3QgaGlkKQogc3RhdGljIGh5cGVyX2RtYWJ1Zl9pZF90IHJldHJp ZXZlX3JldXNhYmxlX2hpZCh2b2lkKQogewogCXN0cnVjdCBsaXN0X3JldXNhYmxlX2lkICpyZXVz YWJsZV9oZWFkID0gaHlfZHJ2X3ByaXYtPmlkX3F1ZXVlOwotCWh5cGVyX2RtYWJ1Zl9pZF90IGhp ZCA9IHstMSwgezAsMCwwfX07CisJaHlwZXJfZG1hYnVmX2lkX3QgaGlkID0gey0xLCB7MCwgMCwg MH0gfTsKIAogCS8qIGNoZWNrIHRoZXJlIGlzIHJldXNhYmxlIGlkICovCiAJaWYgKCFsaXN0X2Vt cHR5KCZyZXVzYWJsZV9oZWFkLT5saXN0KSkgewpAQCAtOTIsNyArODksNyBAQCB2b2lkIGRlc3Ry b3lfcmV1c2FibGVfbGlzdCh2b2lkKQogCiBoeXBlcl9kbWFidWZfaWRfdCBoeXBlcl9kbWFidWZf Z2V0X2hpZCh2b2lkKQogewotCXN0YXRpYyBpbnQgY291bnQgPSAwOworCXN0YXRpYyBpbnQgY291 bnQ7CiAJaHlwZXJfZG1hYnVmX2lkX3QgaGlkOwogCXN0cnVjdCBsaXN0X3JldXNhYmxlX2lkICpy ZXVzYWJsZV9oZWFkOwogCkBAIC0xMDAsMTMgKzk3LDExIEBAIGh5cGVyX2RtYWJ1Zl9pZF90IGh5 cGVyX2RtYWJ1Zl9nZXRfaGlkKHZvaWQpCiAJaWYgKGNvdW50ID09IDApIHsKIAkJcmV1c2FibGVf aGVhZCA9IGttYWxsb2Moc2l6ZW9mKCpyZXVzYWJsZV9oZWFkKSwgR0ZQX0tFUk5FTCk7CiAKLQkJ aWYgKCFyZXVzYWJsZV9oZWFkKSB7Ci0JCQlkZXZfZXJyKGh5X2Rydl9wcml2LT5kZXYsCi0JCQkJ Ik5vIG1lbW9yeSBsZWZ0IHRvIGJlIGFsbG9jYXRlZFxuIik7Ci0JCQlyZXR1cm4gKGh5cGVyX2Rt YWJ1Zl9pZF90KXstMSwgezAsMCwwfX07Ci0JCX0KKwkJaWYgKCFyZXVzYWJsZV9oZWFkKQorCQkJ cmV0dXJuIChoeXBlcl9kbWFidWZfaWRfdCl7LTEsIHswLCAwLCAwfSB9OwogCi0JCXJldXNhYmxl X2hlYWQtPmhpZC5pZCA9IC0xOyAvKiBsaXN0IGhlYWQgaGFzIGFuIGludmFsaWQgY291bnQgKi8K KwkJLyogbGlzdCBoZWFkIGhhcyBhbiBpbnZhbGlkIGNvdW50ICovCisJCXJldXNhYmxlX2hlYWQt PmhpZC5pZCA9IC0xOwogCQlJTklUX0xJU1RfSEVBRCgmcmV1c2FibGVfaGVhZC0+bGlzdCk7CiAJ CWh5X2Rydl9wcml2LT5pZF9xdWV1ZSA9IHJldXNhYmxlX2hlYWQ7CiAJfQpAQCAtMTE2LDkgKzEx MSw4IEBAIGh5cGVyX2RtYWJ1Zl9pZF90IGh5cGVyX2RtYWJ1Zl9nZXRfaGlkKHZvaWQpCiAJLypj cmVhdGluZyBhIG5ldyBILUlEIG9ubHkgaWYgbm90aGluZyBpbiB0aGUgcmV1c2FibGUgaWQgcXVl dWUKIAkgKiBhbmQgY291bnQgaXMgbGVzcyB0aGFuIG1heGltdW0gYWxsb3dlZAogCSAqLwotCWlm IChoaWQuaWQgPT0gLTEgJiYgY291bnQgPCBIWVBFUl9ETUFCVUZfSURfTUFYKSB7CisJaWYgKGhp ZC5pZCA9PSAtMSAmJiBjb3VudCA8IEhZUEVSX0RNQUJVRl9JRF9NQVgpCiAJCWhpZC5pZCA9IEhZ UEVSX0RNQUJVRl9JRF9DUkVBVEUoaHlfZHJ2X3ByaXYtPmRvbWlkLCBjb3VudCsrKTsKLQl9CiAK IAkvKiByYW5kb20gZGF0YSBlbWJlZGRlZCBpbiB0aGUgaWQgZm9yIHNlY3VyaXR5ICovCiAJZ2V0 X3JhbmRvbV9ieXRlcygmaGlkLnJuZ19rZXlbMF0sIDEyKTsKQEAgLTEzMSw3ICsxMjUsNyBAQCBi b29sIGh5cGVyX2RtYWJ1Zl9oaWRfa2V5Y29tcChoeXBlcl9kbWFidWZfaWRfdCBoaWQxLCBoeXBl cl9kbWFidWZfaWRfdCBoaWQyKQogCWludCBpOwogCiAJLyogY29tcGFyZSBrZXlzICovCi0JZm9y IChpPTA7IGk8MzsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IDM7IGkrKykgewogCQlpZiAoaGlk MS5ybmdfa2V5W2ldICE9IGhpZDIucm5nX2tleVtpXSkKIAkJCXJldHVybiBmYWxzZTsKIAl9CmRp ZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2lkLmggYi9k cml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2lkLmgKaW5kZXggYTMzMzZkOS4u NjFjNGZiMyAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1 Zl9pZC5oCisrKyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfaWQuaApA QCAtMjYsMTAgKzI2LDEwIEBACiAjZGVmaW5lIF9fSFlQRVJfRE1BQlVGX0lEX0hfXwogCiAjZGVm aW5lIEhZUEVSX0RNQUJVRl9JRF9DUkVBVEUoZG9taWQsIGNudCkgXAotICAgICAgICAoKCgoZG9t aWQpICYgMHhGRikgPDwgMjQpIHwgKChjbnQpICYgMHhGRkZGRkYpKQorCSgoKChkb21pZCkgJiAw eEZGKSA8PCAyNCkgfCAoKGNudCkgJiAweEZGRkZGRikpCiAKICNkZWZpbmUgSFlQRVJfRE1BQlVG X0RPTV9JRChoaWQpIFwKLSAgICAgICAgKCgoaGlkLmlkKSA+PiAyNCkgJiAweEZGKQorCSgoKGhp ZC5pZCkgPj4gMjQpICYgMHhGRikKIAogLyogY3VycmVudGx5IG1heGltdW0gbnVtYmVyIG9mIGJ1 ZmZlcnMgc2hhcmVkCiAgKiBhdCBhbnkgZ2l2ZW4gbW9tZW50IGlzIGxpbWl0ZWQgdG8gMTAwMApk aWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9pb2N0bC5j IGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9pb2N0bC5jCmluZGV4IGIz MjhkZjcuLmY5MDQwZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBl cl9kbWFidWZfaW9jdGwuYworKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1h YnVmX2lvY3RsLmMKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIGludCBoeXBlcl9kbWFidWZfc2Vu ZF9leHBvcnRfbXNnKHN0cnVjdCBleHBvcnRlZF9zZ3RfaW5mbyAqZXhwb3J0ZWQsCiAJLyogbm93 IGNyZWF0ZSByZXF1ZXN0IGZvciBpbXBvcnRlciB2aWEgcmluZyAqLwogCW9wWzBdID0gZXhwb3J0 ZWQtPmhpZC5pZDsKIAotCWZvciAoaT0wOyBpPDM7IGkrKykKKwlmb3IgKGkgPSAwOyBpIDwgMzsg aSsrKQogCQlvcFtpKzFdID0gZXhwb3J0ZWQtPmhpZC5ybmdfa2V5W2ldOwogCiAJaWYgKHBnX2lu Zm8pIHsKQEAgLTExMywxMCArMTEzLDggQEAgc3RhdGljIGludCBoeXBlcl9kbWFidWZfc2VuZF9l eHBvcnRfbXNnKHN0cnVjdCBleHBvcnRlZF9zZ3RfaW5mbyAqZXhwb3J0ZWQsCiAKIAlyZXEgPSBr Y2FsbG9jKDEsIHNpemVvZigqcmVxKSwgR0ZQX0tFUk5FTCk7CiAKLQlpZighcmVxKSB7Ci0JCWRl dl9lcnIoaHlfZHJ2X3ByaXYtPmRldiwgIm5vIG1vcmUgc3BhY2UgbGVmdFxuIik7CisJaWYgKCFy ZXEpCiAJCXJldHVybiAtMTsKLQl9CiAKIAkvKiBjb21wb3NpbmcgYSBtZXNzYWdlIHRvIHRoZSBp bXBvcnRlciAqLwogCWh5cGVyX2RtYWJ1Zl9jcmVhdGVfcmVxKHJlcSwgSFlQRVJfRE1BQlVGX0VY UE9SVCwgJm9wWzBdKTsKQEAgLTE2MSw2OSArMTU5LDcxIEBAIHN0YXRpYyBpbnQgaHlwZXJfZG1h YnVmX2V4cG9ydF9yZW1vdGVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHZvaWQgKmRhdGEpCiAJ CQkJCSAgICAgZXhwb3J0X3JlbW90ZV9hdHRyLT5yZW1vdGVfZG9tYWluKTsKIAlpZiAoaGlkLmlk ICE9IC0xKSB7CiAJCWV4cG9ydGVkID0gaHlwZXJfZG1hYnVmX2ZpbmRfZXhwb3J0ZWQoaGlkKTsK LQkJaWYgKGV4cG9ydGVkICE9IE5VTEwpIHsKLQkJCWlmIChleHBvcnRlZC0+dmFsaWQpIHsKLQkJ CQkvKgotCQkJCSAqIENoZWNrIGlmIHVuZXhwb3J0IGlzIGFscmVhZHkgc2NoZWR1bGVkIGZvciB0 aGF0IGJ1ZmZlciwKLQkJCQkgKiBpZiBzbyB0cnkgdG8gY2FuY2VsIGl0LiBJZiB0aGF0IHdpbGwg ZmFpbCwgYnVmZmVyIG5lZWRzCi0JCQkJICogdG8gYmUgcmVleHBvcnQgb25jZSBhZ2Fpbi4KLQkJ CQkgKi8KLQkJCQlpZiAoZXhwb3J0ZWQtPnVuZXhwb3J0X3NjaGVkKSB7Ci0JCQkJCWlmICghY2Fu Y2VsX2RlbGF5ZWRfd29ya19zeW5jKCZleHBvcnRlZC0+dW5leHBvcnQpKSB7Ci0JCQkJCQlkbWFf YnVmX3B1dChkbWFfYnVmKTsKLQkJCQkJCWdvdG8gcmVleHBvcnQ7Ci0JCQkJCX0KLQkJCQkJZXhw b3J0ZWQtPnVuZXhwb3J0X3NjaGVkID0gZmFsc2U7Ci0JCQkJfQotCi0JCQkJLyogaWYgdGhlcmUn cyBhbnkgY2hhbmdlIGluIHNpemUgb2YgcHJpdmF0ZSBkYXRhLgotCQkJCSAqIHdlIHJlYWxsb2Nh dGUgc3BhY2UgZm9yIHByaXZhdGUgZGF0YSB3aXRoIG5ldyBzaXplICovCi0JCQkJaWYgKGV4cG9y dF9yZW1vdGVfYXR0ci0+c3pfcHJpdiAhPSBleHBvcnRlZC0+c3pfcHJpdikgewotCQkJCQlrZnJl ZShleHBvcnRlZC0+cHJpdik7Ci0KLQkJCQkJLyogdHJ1bmNhdGluZyBzaXplICovCi0JCQkJCWlm IChleHBvcnRfcmVtb3RlX2F0dHItPnN6X3ByaXYgPiBNQVhfU0laRV9QUklWX0RBVEEpIHsKLQkJ CQkJCWV4cG9ydGVkLT5zel9wcml2ID0gTUFYX1NJWkVfUFJJVl9EQVRBOwotCQkJCQl9IGVsc2Ug ewotCQkJCQkJZXhwb3J0ZWQtPnN6X3ByaXYgPSBleHBvcnRfcmVtb3RlX2F0dHItPnN6X3ByaXY7 Ci0JCQkJCX0KLQotCQkJCQlleHBvcnRlZC0+cHJpdiA9IGtjYWxsb2MoMSwgZXhwb3J0ZWQtPnN6 X3ByaXYsIEdGUF9LRVJORUwpOwotCi0JCQkJCWlmKCFleHBvcnRlZC0+cHJpdikgewotCQkJCQkJ ZGV2X2VycihoeV9kcnZfcHJpdi0+ZGV2LAotCQkJCQkJCSJubyBtb3JlIHNwYWNlIGxlZnQgZm9y IHByaXZcbiIpOwotCQkJCQkJaHlwZXJfZG1hYnVmX3JlbW92ZV9leHBvcnRlZChleHBvcnRlZC0+ aGlkKTsKLQkJCQkJCWh5cGVyX2RtYWJ1Zl9jbGVhbnVwX3NndF9pbmZvKGV4cG9ydGVkLCB0cnVl KTsKLQkJCQkJCWtmcmVlKGV4cG9ydGVkKTsKLQkJCQkJCWRtYV9idWZfcHV0KGRtYV9idWYpOwot CQkJCQkJcmV0dXJuIC1FTk9NRU07Ci0JCQkJCX0KLQkJCQl9Ci0KLQkJCQkvKiB1cGRhdGUgcHJp dmF0ZSBkYXRhIGluIHNndF9pbmZvIHdpdGggbmV3IG9uZXMgKi8KLQkJCQlyZXQgPSBjb3B5X2Zy b21fdXNlcihleHBvcnRlZC0+cHJpdiwgZXhwb3J0X3JlbW90ZV9hdHRyLT5wcml2LAotCQkJCQkJ ICAgICBleHBvcnRlZC0+c3pfcHJpdik7Ci0JCQkJaWYgKHJldCkgewotCQkJCQlkZXZfZXJyKGh5 X2Rydl9wcml2LT5kZXYsCi0JCQkJCQkiRmFpbGVkIHRvIGxvYWQgYSBuZXcgcHJpdmF0ZSBkYXRh XG4iKTsKLQkJCQkJcmV0ID0gLUVJTlZBTDsKLQkJCQl9IGVsc2UgewotCQkJCQkvKiBzZW5kIGFu IGV4cG9ydCBtc2cgZm9yIHVwZGF0aW5nIHByaXYgaW4gaW1wb3J0ZXIgKi8KLQkJCQkJcmV0ID0g aHlwZXJfZG1hYnVmX3NlbmRfZXhwb3J0X21zZyhleHBvcnRlZCwgTlVMTCk7Ci0KLQkJCQkJaWYg KHJldCA8IDApIHsKLQkJCQkJCWRldl9lcnIoaHlfZHJ2X3ByaXYtPmRldiwKLQkJCQkJCQkiRmFp bGVkIHRvIHNlbmQgYSBuZXcgcHJpdmF0ZSBkYXRhXG4iKTsKLQkJCQkJCXJldCA9IC1FQlVTWTsK LQkJCQkJfQotCQkJCX0KIAorCQlpZiAoIWV4cG9ydGVkKQorCQkJZ290byByZWV4cG9ydDsKKwor CQlpZiAoZXhwb3J0ZWQtPnZhbGlkID09IGZhbHNlKQorCQkJZ290byByZWV4cG9ydDsKKworCQkv KgorCQkgKiBDaGVjayBpZiB1bmV4cG9ydCBpcyBhbHJlYWR5IHNjaGVkdWxlZCBmb3IgdGhhdCBi dWZmZXIsCisJCSAqIGlmIHNvIHRyeSB0byBjYW5jZWwgaXQuIElmIHRoYXQgd2lsbCBmYWlsLCBi dWZmZXIgbmVlZHMKKwkJICogdG8gYmUgcmVleHBvcnQgb25jZSBhZ2Fpbi4KKwkJICovCisJCWlm IChleHBvcnRlZC0+dW5leHBvcnRfc2NoZWQpIHsKKwkJCWlmICghY2FuY2VsX2RlbGF5ZWRfd29y a19zeW5jKCZleHBvcnRlZC0+dW5leHBvcnQpKSB7CiAJCQkJZG1hX2J1Zl9wdXQoZG1hX2J1Zik7 Ci0JCQkJZXhwb3J0X3JlbW90ZV9hdHRyLT5oaWQgPSBoaWQ7Ci0JCQkJcmV0dXJuIHJldDsKKwkJ CQlnb3RvIHJlZXhwb3J0OwogCQkJfQorCQkJZXhwb3J0ZWQtPnVuZXhwb3J0X3NjaGVkID0gZmFs c2U7CiAJCX0KKworCQkvKiBpZiB0aGVyZSdzIGFueSBjaGFuZ2UgaW4gc2l6ZSBvZiBwcml2YXRl IGRhdGEuCisJCSAqIHdlIHJlYWxsb2NhdGUgc3BhY2UgZm9yIHByaXZhdGUgZGF0YSB3aXRoIG5l dyBzaXplCisJCSAqLworCQlpZiAoZXhwb3J0X3JlbW90ZV9hdHRyLT5zel9wcml2ICE9IGV4cG9y dGVkLT5zel9wcml2KSB7CisJCQlrZnJlZShleHBvcnRlZC0+cHJpdik7CisKKwkJCS8qIHRydW5j YXRpbmcgc2l6ZSAqLworCQkJaWYgKGV4cG9ydF9yZW1vdGVfYXR0ci0+c3pfcHJpdiA+IE1BWF9T SVpFX1BSSVZfREFUQSkKKwkJCQlleHBvcnRlZC0+c3pfcHJpdiA9IE1BWF9TSVpFX1BSSVZfREFU QTsKKwkJCWVsc2UKKwkJCQlleHBvcnRlZC0+c3pfcHJpdiA9IGV4cG9ydF9yZW1vdGVfYXR0ci0+ c3pfcHJpdjsKKworCQkJZXhwb3J0ZWQtPnByaXYgPSBrY2FsbG9jKDEsIGV4cG9ydGVkLT5zel9w cml2LAorCQkJCQkJIEdGUF9LRVJORUwpOworCisJCQlpZiAoIWV4cG9ydGVkLT5wcml2KSB7CisJ CQkJaHlwZXJfZG1hYnVmX3JlbW92ZV9leHBvcnRlZChleHBvcnRlZC0+aGlkKTsKKwkJCQloeXBl cl9kbWFidWZfY2xlYW51cF9zZ3RfaW5mbyhleHBvcnRlZCwgdHJ1ZSk7CisJCQkJa2ZyZWUoZXhw b3J0ZWQpOworCQkJCWRtYV9idWZfcHV0KGRtYV9idWYpOworCQkJCXJldHVybiAtRU5PTUVNOwor CQkJfQorCQl9CisKKwkJLyogdXBkYXRlIHByaXZhdGUgZGF0YSBpbiBzZ3RfaW5mbyB3aXRoIG5l dyBvbmVzICovCisJCXJldCA9IGNvcHlfZnJvbV91c2VyKGV4cG9ydGVkLT5wcml2LCBleHBvcnRf cmVtb3RlX2F0dHItPnByaXYsCisJCQkJICAgICBleHBvcnRlZC0+c3pfcHJpdik7CisJCWlmIChy ZXQpIHsKKwkJCWRldl9lcnIoaHlfZHJ2X3ByaXYtPmRldiwKKwkJCQkiRmFpbGVkIHRvIGxvYWQg YSBuZXcgcHJpdmF0ZSBkYXRhXG4iKTsKKwkJCXJldCA9IC1FSU5WQUw7CisJCX0gZWxzZSB7CisJ CQkvKiBzZW5kIGFuIGV4cG9ydCBtc2cgZm9yIHVwZGF0aW5nIHByaXYgaW4gaW1wb3J0ZXIgKi8K KwkJCXJldCA9IGh5cGVyX2RtYWJ1Zl9zZW5kX2V4cG9ydF9tc2coZXhwb3J0ZWQsIE5VTEwpOwor CisJCQlpZiAocmV0IDwgMCkgeworCQkJCWRldl9lcnIoaHlfZHJ2X3ByaXYtPmRldiwKKwkJCQkJ IkZhaWxlZCB0byBzZW5kIGEgbmV3IHByaXZhdGUgZGF0YVxuIik7CisJCQkJcmV0ID0gLUVCVVNZ OworCQkJfQorCQl9CisKKwkJZG1hX2J1Zl9wdXQoZG1hX2J1Zik7CisJCWV4cG9ydF9yZW1vdGVf YXR0ci0+aGlkID0gaGlkOworCQlyZXR1cm4gcmV0OwogCX0KIAogcmVleHBvcnQ6CkBAIC0yNDQs MjUgKzI0NCwyMiBAQCBzdGF0aWMgaW50IGh5cGVyX2RtYWJ1Zl9leHBvcnRfcmVtb3RlX2lvY3Rs KHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkICpkYXRhKQogCiAJZXhwb3J0ZWQgPSBrY2FsbG9jKDEs IHNpemVvZigqZXhwb3J0ZWQpLCBHRlBfS0VSTkVMKTsKIAotCWlmKCFleHBvcnRlZCkgewotCQlk ZXZfZXJyKGh5X2Rydl9wcml2LT5kZXYsICJubyBtb3JlIHNwYWNlIGxlZnRcbiIpOworCWlmICgh ZXhwb3J0ZWQpIHsKIAkJcmV0ID0gLUVOT01FTTsKIAkJZ290byBmYWlsX3NndF9pbmZvX2NyZWF0 aW9uOwogCX0KIAogCS8qIHBvc3NpYmxlIHRydW5jYXRpb24gKi8KLQlpZiAoZXhwb3J0X3JlbW90 ZV9hdHRyLT5zel9wcml2ID4gTUFYX1NJWkVfUFJJVl9EQVRBKSB7CisJaWYgKGV4cG9ydF9yZW1v dGVfYXR0ci0+c3pfcHJpdiA+IE1BWF9TSVpFX1BSSVZfREFUQSkKIAkJZXhwb3J0ZWQtPnN6X3By aXYgPSBNQVhfU0laRV9QUklWX0RBVEE7Ci0JfSBlbHNlIHsKKwllbHNlCiAJCWV4cG9ydGVkLT5z el9wcml2ID0gZXhwb3J0X3JlbW90ZV9hdHRyLT5zel9wcml2OwotCX0KIAogCS8qIGNyZWF0aW5n IGJ1ZmZlciBmb3IgcHJpdmF0ZSBkYXRhIG9mIGJ1ZmZlciAqLwotCWlmKGV4cG9ydGVkLT5zel9w cml2ICE9IDApIHsKKwlpZiAoZXhwb3J0ZWQtPnN6X3ByaXYgIT0gMCkgewogCQlleHBvcnRlZC0+ cHJpdiA9IGtjYWxsb2MoMSwgZXhwb3J0ZWQtPnN6X3ByaXYsIEdGUF9LRVJORUwpOwogCi0JCWlm KCFleHBvcnRlZC0+cHJpdikgewotCQkJZGV2X2VycihoeV9kcnZfcHJpdi0+ZGV2LCAibm8gbW9y ZSBzcGFjZSBsZWZ0XG4iKTsKKwkJaWYgKCFleHBvcnRlZC0+cHJpdikgewogCQkJcmV0ID0gLUVO T01FTTsKIAkJCWdvdG8gZmFpbF9wcml2X2NyZWF0aW9uOwogCQl9CkBAIC0yNzMsNyArMjcwLDcg QEAgc3RhdGljIGludCBoeXBlcl9kbWFidWZfZXhwb3J0X3JlbW90ZV9pb2N0bChzdHJ1Y3QgZmls ZSAqZmlscCwgdm9pZCAqZGF0YSkKIAlleHBvcnRlZC0+aGlkID0gaHlwZXJfZG1hYnVmX2dldF9o aWQoKTsKIAogCS8qIG5vIG1vcmUgZXhwb3J0ZWQgZG1hYnVmIGFsbG93ZWQgKi8KLQlpZihleHBv cnRlZC0+aGlkLmlkID09IC0xKSB7CisJaWYgKGV4cG9ydGVkLT5oaWQuaWQgPT0gLTEpIHsKIAkJ ZGV2X2VycihoeV9kcnZfcHJpdi0+ZGV2LAogCQkJImV4Y2VlZHMgYWxsb3dlZCBudW1iZXIgb2Yg ZG1hYnVmIHRvIGJlIGV4cG9ydGVkXG4iKTsKIAkJcmV0ID0gLUVOT01FTTsKQEAgLTI4NiwyOCAr MjgzLDI3IEBAIHN0YXRpYyBpbnQgaHlwZXJfZG1hYnVmX2V4cG9ydF9yZW1vdGVfaW9jdGwoc3Ry dWN0IGZpbGUgKmZpbHAsIHZvaWQgKmRhdGEpCiAKIAlleHBvcnRlZC0+YWN0aXZlX3NndHMgPSBr bWFsbG9jKHNpemVvZihzdHJ1Y3Qgc2d0X2xpc3QpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWV4cG9y dGVkLT5hY3RpdmVfc2d0cykgewotCQlkZXZfZXJyKGh5X2Rydl9wcml2LT5kZXYsICJubyBtb3Jl IHNwYWNlIGxlZnRcbiIpOwogCQlyZXQgPSAtRU5PTUVNOwogCQlnb3RvIGZhaWxfbWFwX2FjdGl2 ZV9zZ3RzOwogCX0KIAotCWV4cG9ydGVkLT5hY3RpdmVfYXR0YWNoZWQgPSBrbWFsbG9jKHNpemVv ZihzdHJ1Y3QgYXR0YWNobWVudF9saXN0KSwgR0ZQX0tFUk5FTCk7CisJZXhwb3J0ZWQtPmFjdGl2 ZV9hdHRhY2hlZCA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBhdHRhY2htZW50X2xpc3QpLAorCQkJ CQkgICAgR0ZQX0tFUk5FTCk7CiAJaWYgKCFleHBvcnRlZC0+YWN0aXZlX2F0dGFjaGVkKSB7Ci0J CWRldl9lcnIoaHlfZHJ2X3ByaXYtPmRldiwgIm5vIG1vcmUgc3BhY2UgbGVmdFxuIik7CiAJCXJl dCA9IC1FTk9NRU07CiAJCWdvdG8gZmFpbF9tYXBfYWN0aXZlX2F0dGFjaGVkOwogCX0KIAotCWV4 cG9ydGVkLT52YV9rbWFwcGVkID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IGttYXBfdmFkZHJfbGlz dCksIEdGUF9LRVJORUwpOworCWV4cG9ydGVkLT52YV9rbWFwcGVkID0ga21hbGxvYyhzaXplb2Yo c3RydWN0IGttYXBfdmFkZHJfbGlzdCksCisJCQkJICAgICAgIEdGUF9LRVJORUwpOwogCWlmICgh ZXhwb3J0ZWQtPnZhX2ttYXBwZWQpIHsKLQkJZGV2X2VycihoeV9kcnZfcHJpdi0+ZGV2LCAibm8g bW9yZSBzcGFjZSBsZWZ0XG4iKTsKIAkJcmV0ID0gLUVOT01FTTsKIAkJZ290byBmYWlsX21hcF92 YV9rbWFwcGVkOwogCX0KIAotCWV4cG9ydGVkLT52YV92bWFwcGVkID0ga21hbGxvYyhzaXplb2Yo c3RydWN0IHZtYXBfdmFkZHJfbGlzdCksIEdGUF9LRVJORUwpOworCWV4cG9ydGVkLT52YV92bWFw cGVkID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IHZtYXBfdmFkZHJfbGlzdCksCisJCQkJICAgICAg IEdGUF9LRVJORUwpOwogCWlmICghZXhwb3J0ZWQtPnZhX3ZtYXBwZWQpIHsKLQkJZGV2X2Vyciho eV9kcnZfcHJpdi0+ZGV2LCAibm8gbW9yZSBzcGFjZSBsZWZ0XG4iKTsKIAkJcmV0ID0gLUVOT01F TTsKIAkJZ290byBmYWlsX21hcF92YV92bWFwcGVkOwogCX0KQEAgLTQzNiwzMSArNDMyLDMyIEBA IHN0YXRpYyBpbnQgaHlwZXJfZG1hYnVmX2V4cG9ydF9mZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmls cCwgdm9pZCAqZGF0YSkKIAkvKiBzZW5kIG5vdGlmaWNhdGlvbiBmb3IgZXhwb3J0X2ZkIHRvIGV4 cG9ydGVyICovCiAJb3BbMF0gPSBpbXBvcnRlZC0+aGlkLmlkOwogCi0JZm9yIChpPTA7IGk8Mzsg aSsrKQorCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspCiAJCW9wW2krMV0gPSBpbXBvcnRlZC0+aGlk LnJuZ19rZXlbaV07CiAKLQlkZXZfZGJnKGh5X2Rydl9wcml2LT5kZXYsICJFeHBvcnRpbmcgZmQg b2YgYnVmZmVyIHtpZDolZCBrZXk6JWQgJWQgJWR9XG4iLAotCQlpbXBvcnRlZC0+aGlkLmlkLCBp bXBvcnRlZC0+aGlkLnJuZ19rZXlbMF0sIGltcG9ydGVkLT5oaWQucm5nX2tleVsxXSwKLQkJaW1w b3J0ZWQtPmhpZC5ybmdfa2V5WzJdKTsKKwlkZXZfZGJnKGh5X2Rydl9wcml2LT5kZXYsICJFeHBv cnQgRkQgb2YgYnVmZmVyIHtpZDolZCBrZXk6JWQgJWQgJWR9XG4iLAorCQlpbXBvcnRlZC0+aGlk LmlkLCBpbXBvcnRlZC0+aGlkLnJuZ19rZXlbMF0sCisJCWltcG9ydGVkLT5oaWQucm5nX2tleVsx XSwgaW1wb3J0ZWQtPmhpZC5ybmdfa2V5WzJdKTsKIAogCXJlcSA9IGtjYWxsb2MoMSwgc2l6ZW9m KCpyZXEpLCBHRlBfS0VSTkVMKTsKIAotCWlmICghcmVxKSB7Ci0JCWRldl9lcnIoaHlfZHJ2X3By aXYtPmRldiwKLQkJCSJObyBtZW1vcnkgbGVmdCB0byBiZSBhbGxvY2F0ZWRcbiIpOworCWlmICgh cmVxKQogCQlyZXR1cm4gLUVOT01FTTsKLQl9CiAKIAloeXBlcl9kbWFidWZfY3JlYXRlX3JlcShy ZXEsIEhZUEVSX0RNQUJVRl9FWFBPUlRfRkQsICZvcFswXSk7CiAKIAlyZXQgPSBvcHMtPnNlbmRf cmVxKEhZUEVSX0RNQUJVRl9ET01fSUQoaW1wb3J0ZWQtPmhpZCksIHJlcSwgdHJ1ZSk7CiAKIAlp ZiAocmV0IDwgMCkgewotCQkvKiBpbiBjYXNlIG9mIHRpbWVvdXQgb3RoZXIgZW5kIGV2ZW50dWFs bHkgd2lsbCByZWNlaXZlIHJlcXVlc3QsIHNvIHdlIG5lZWQgdG8gdW5kbyBpdCAqLwotCQloeXBl cl9kbWFidWZfY3JlYXRlX3JlcShyZXEsIEhZUEVSX0RNQUJVRl9FWFBPUlRfRkRfRkFJTEVELCAm b3BbMF0pOworCQkvKiBpbiBjYXNlIG9mIHRpbWVvdXQgb3RoZXIgZW5kIGV2ZW50dWFsbHkgd2ls bCByZWNlaXZlIHJlcXVlc3QsCisJCSAqIHNvIHdlIG5lZWQgdG8gdW5kbyBpdAorCQkgKi8KKwkJ aHlwZXJfZG1hYnVmX2NyZWF0ZV9yZXEocmVxLCBIWVBFUl9ETUFCVUZfRVhQT1JUX0ZEX0ZBSUxF RCwKKwkJCQkJJm9wWzBdKTsKIAkJb3BzLT5zZW5kX3JlcShvcFswXSwgcmVxLCBmYWxzZSk7CiAJ CWtmcmVlKHJlcSk7Ci0JCWRldl9lcnIoaHlfZHJ2X3ByaXYtPmRldiwgIkZhaWxlZCB0byBjcmVh dGUgc2d0IG9yIG5vdGlmeSBleHBvcnRlclxuIik7CisJCWRldl9lcnIoaHlfZHJ2X3ByaXYtPmRl diwKKwkJCSJGYWlsZWQgdG8gY3JlYXRlIHNndCBvciBub3RpZnkgZXhwb3J0ZXJcbiIpOwogCQlp bXBvcnRlZC0+aW1wb3J0ZXJzLS07CiAJCW11dGV4X3VubG9jaygmaHlfZHJ2X3ByaXYtPmxvY2sp OwogCQlyZXR1cm4gcmV0OwpAQCAtNDcxLDY0ICs0NjgsNjkgQEAgc3RhdGljIGludCBoeXBlcl9k bWFidWZfZXhwb3J0X2ZkX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkICpkYXRhKQogCWlm IChyZXQgPT0gSFlQRVJfRE1BQlVGX1JFUV9FUlJPUikgewogCQlkZXZfZXJyKGh5X2Rydl9wcml2 LT5kZXYsCiAJCQkiQnVmZmVyIGludmFsaWQge2lkOiVkIGtleTolZCAlZCAlZH0sIGNhbm5vdCBp bXBvcnRcbiIsCi0JCQlpbXBvcnRlZC0+aGlkLmlkLCBpbXBvcnRlZC0+aGlkLnJuZ19rZXlbMF0s IGltcG9ydGVkLT5oaWQucm5nX2tleVsxXSwKLQkJCWltcG9ydGVkLT5oaWQucm5nX2tleVsyXSk7 CisJCQlpbXBvcnRlZC0+aGlkLmlkLCBpbXBvcnRlZC0+aGlkLnJuZ19rZXlbMF0sCisJCQlpbXBv cnRlZC0+aGlkLnJuZ19rZXlbMV0sIGltcG9ydGVkLT5oaWQucm5nX2tleVsyXSk7CiAKIAkJaW1w b3J0ZWQtPmltcG9ydGVycy0tOwogCQltdXRleF91bmxvY2soJmh5X2Rydl9wcml2LT5sb2NrKTsK IAkJcmV0dXJuIC1FSU5WQUw7Ci0JfSBlbHNlIHsKLQkJZGV2X2RiZyhoeV9kcnZfcHJpdi0+ZGV2 LCAiQ2FuIGltcG9ydCBidWZmZXIge2lkOiVkIGtleTolZCAlZCAlZH1cbiIsCi0JCQlpbXBvcnRl ZC0+aGlkLmlkLCBpbXBvcnRlZC0+aGlkLnJuZ19rZXlbMF0sIGltcG9ydGVkLT5oaWQucm5nX2tl eVsxXSwKLQkJCWltcG9ydGVkLT5oaWQucm5nX2tleVsyXSk7Ci0KLQkJcmV0ID0gMDsKIAl9CiAK KwlyZXQgPSAwOworCisJZGV2X2RiZyhoeV9kcnZfcHJpdi0+ZGV2LAorCQkiRm91bmQgYnVmZmVy IGdyZWYgJWQgb2ZmICVkXG4iLAorCQlpbXBvcnRlZC0+cmVmX2hhbmRsZSwgaW1wb3J0ZWQtPmZy c3Rfb2ZzdCk7CisKIAlkZXZfZGJnKGh5X2Rydl9wcml2LT5kZXYsCi0JCSAgIiVzIEZvdW5kIGJ1 ZmZlciBncmVmICVkICBvZmYgJWQgbGFzdCBsZW4gJWQgbmVudHMgJWQgZG9tYWluICVkXG4iLAot CQkgIF9fZnVuY19fLCBpbXBvcnRlZC0+cmVmX2hhbmRsZSwgaW1wb3J0ZWQtPmZyc3Rfb2ZzdCwK LQkJICBpbXBvcnRlZC0+bGFzdF9sZW4sIGltcG9ydGVkLT5uZW50cywgSFlQRVJfRE1BQlVGX0RP TV9JRChpbXBvcnRlZC0+aGlkKSk7CisJCSJsYXN0IGxlbiAlZCBuZW50cyAlZCBkb21haW4gJWRc biIsCisJCWltcG9ydGVkLT5sYXN0X2xlbiwgaW1wb3J0ZWQtPm5lbnRzLAorCQlIWVBFUl9ETUFC VUZfRE9NX0lEKGltcG9ydGVkLT5oaWQpKTsKIAogCWlmICghaW1wb3J0ZWQtPnNndCkgewogCQlk ZXZfZGJnKGh5X2Rydl9wcml2LT5kZXYsCi0JCQkiJXMgYnVmZmVyIHtpZDolZCBrZXk6JWQgJWQg JWR9IHBhZ2VzIG5vdCBtYXBwZWQgeWV0XG4iLCBfX2Z1bmNfXywKLQkJCWltcG9ydGVkLT5oaWQu aWQsIGltcG9ydGVkLT5oaWQucm5nX2tleVswXSwgaW1wb3J0ZWQtPmhpZC5ybmdfa2V5WzFdLAot CQkJaW1wb3J0ZWQtPmhpZC5ybmdfa2V5WzJdKTsKKwkJCSJidWZmZXIge2lkOiVkIGtleTolZCAl ZCAlZH0gcGFnZXMgbm90IG1hcHBlZCB5ZXRcbiIsCisJCQlpbXBvcnRlZC0+aGlkLmlkLCBpbXBv cnRlZC0+aGlkLnJuZ19rZXlbMF0sCisJCQlpbXBvcnRlZC0+aGlkLnJuZ19rZXlbMV0sIGltcG9y dGVkLT5oaWQucm5nX2tleVsyXSk7CiAKIAkJZGF0YV9wZ3MgPSBvcHMtPm1hcF9zaGFyZWRfcGFn ZXMoaW1wb3J0ZWQtPnJlZl9oYW5kbGUsCi0JCQkJCQkgICBIWVBFUl9ETUFCVUZfRE9NX0lEKGlt cG9ydGVkLT5oaWQpLAotCQkJCQkJICAgaW1wb3J0ZWQtPm5lbnRzLAotCQkJCQkJICAgJmltcG9y dGVkLT5yZWZzX2luZm8pOworCQkJCQlIWVBFUl9ETUFCVUZfRE9NX0lEKGltcG9ydGVkLT5oaWQp LAorCQkJCQlpbXBvcnRlZC0+bmVudHMsCisJCQkJCSZpbXBvcnRlZC0+cmVmc19pbmZvKTsKIAog CQlpZiAoIWRhdGFfcGdzKSB7CiAJCQlkZXZfZXJyKGh5X2Rydl9wcml2LT5kZXYsCi0JCQkJIkNh bm5vdCBtYXAgcGFnZXMgb2YgYnVmZmVyIHtpZDolZCBrZXk6JWQgJWQgJWR9XG4iLAotCQkJCWlt cG9ydGVkLT5oaWQuaWQsIGltcG9ydGVkLT5oaWQucm5nX2tleVswXSwgaW1wb3J0ZWQtPmhpZC5y bmdfa2V5WzFdLAorCQkJCSJjYW4ndCBtYXAgcGFnZXMgaGlkIHtpZDolZCBrZXk6JWQgJWQgJWR9 XG4iLAorCQkJCWltcG9ydGVkLT5oaWQuaWQsIGltcG9ydGVkLT5oaWQucm5nX2tleVswXSwKKwkJ CQlpbXBvcnRlZC0+aGlkLnJuZ19rZXlbMV0sCiAJCQkJaW1wb3J0ZWQtPmhpZC5ybmdfa2V5WzJd KTsKIAogCQkJaW1wb3J0ZWQtPmltcG9ydGVycy0tOworCiAJCQlyZXEgPSBrY2FsbG9jKDEsIHNp emVvZigqcmVxKSwgR0ZQX0tFUk5FTCk7CiAKLQkJCWlmICghcmVxKSB7Ci0JCQkJZGV2X2Vyciho eV9kcnZfcHJpdi0+ZGV2LAotCQkJCQkiTm8gbW9yZSBzcGFjZSBsZWZ0XG4iKTsKKwkJCWlmICgh cmVxKQogCQkJCXJldHVybiAtRU5PTUVNOwotCQkJfQogCi0JCQloeXBlcl9kbWFidWZfY3JlYXRl X3JlcShyZXEsIEhZUEVSX0RNQUJVRl9FWFBPUlRfRkRfRkFJTEVELCAmb3BbMF0pOwotCQkJb3Bz LT5zZW5kX3JlcShIWVBFUl9ETUFCVUZfRE9NX0lEKGltcG9ydGVkLT5oaWQpLCByZXEsIGZhbHNl KTsKKwkJCWh5cGVyX2RtYWJ1Zl9jcmVhdGVfcmVxKHJlcSwKKwkJCQkJCUhZUEVSX0RNQUJVRl9F WFBPUlRfRkRfRkFJTEVELAorCQkJCQkJJm9wWzBdKTsKKwkJCW9wcy0+c2VuZF9yZXEoSFlQRVJf RE1BQlVGX0RPTV9JRChpbXBvcnRlZC0+aGlkKSwgcmVxLAorCQkJCQkJCSAgZmFsc2UpOwogCQkJ a2ZyZWUocmVxKTsKIAkJCW11dGV4X3VubG9jaygmaHlfZHJ2X3ByaXYtPmxvY2spOwogCQkJcmV0 dXJuIC1FSU5WQUw7CiAJCX0KIAotCQlpbXBvcnRlZC0+c2d0ID0gaHlwZXJfZG1hYnVmX2NyZWF0 ZV9zZ3QoZGF0YV9wZ3MsIGltcG9ydGVkLT5mcnN0X29mc3QsCi0JCQkJCQkJaW1wb3J0ZWQtPmxh c3RfbGVuLCBpbXBvcnRlZC0+bmVudHMpOworCQlpbXBvcnRlZC0+c2d0ID0gaHlwZXJfZG1hYnVm X2NyZWF0ZV9zZ3QoZGF0YV9wZ3MsCisJCQkJCQkJaW1wb3J0ZWQtPmZyc3Rfb2ZzdCwKKwkJCQkJ CQlpbXBvcnRlZC0+bGFzdF9sZW4sCisJCQkJCQkJaW1wb3J0ZWQtPm5lbnRzKTsKIAogCX0KIAot CWV4cG9ydF9mZF9hdHRyLT5mZCA9IGh5cGVyX2RtYWJ1Zl9leHBvcnRfZmQoaW1wb3J0ZWQsIGV4 cG9ydF9mZF9hdHRyLT5mbGFncyk7CisJZXhwb3J0X2ZkX2F0dHItPmZkID0gaHlwZXJfZG1hYnVm X2V4cG9ydF9mZChpbXBvcnRlZCwKKwkJCQkJCSAgICBleHBvcnRfZmRfYXR0ci0+ZmxhZ3MpOwog CiAJaWYgKGV4cG9ydF9mZF9hdHRyLT5mZCA8IDApIHsKIAkJLyogZmFpbCB0byBnZXQgZmQgKi8K QEAgLTU2NiwyMSArNTY4LDE5IEBAIHN0YXRpYyB2b2lkIGh5cGVyX2RtYWJ1Zl9kZWxheWVkX3Vu ZXhwb3J0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAogCXJlcSA9IGtjYWxsb2MoMSwgc2l6 ZW9mKCpyZXEpLCBHRlBfS0VSTkVMKTsKIAotCWlmICghcmVxKSB7Ci0JCWRldl9lcnIoaHlfZHJ2 X3ByaXYtPmRldiwKLQkJCSJObyBtZW1vcnkgbGVmdCB0byBiZSBhbGxvY2F0ZWRcbiIpOworCWlm ICghcmVxKQogCQlyZXR1cm47Ci0JfQogCiAJb3BbMF0gPSBleHBvcnRlZC0+aGlkLmlkOwogCi0J Zm9yIChpPTA7IGk8MzsgaSsrKQorCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspCiAJCW9wW2krMV0g PSBleHBvcnRlZC0+aGlkLnJuZ19rZXlbaV07CiAKIAloeXBlcl9kbWFidWZfY3JlYXRlX3JlcShy ZXEsIEhZUEVSX0RNQUJVRl9OT1RJRllfVU5FWFBPUlQsICZvcFswXSk7CiAKIAkvKiBOb3cgc2Vu ZCB1bmV4cG9ydCByZXF1ZXN0IHRvIHJlbW90ZSBkb21haW4sIG1hcmtpbmcKLQkgKiB0aGF0IGJ1 ZmZlciBzaG91bGQgbm90IGJlIHVzZWQgYW55bW9yZSAqLworCSAqIHRoYXQgYnVmZmVyIHNob3Vs ZCBub3QgYmUgdXNlZCBhbnltb3JlCisJICovCiAJcmV0ID0gb3BzLT5zZW5kX3JlcShleHBvcnRl ZC0+cmRvbWlkLCByZXEsIHRydWUpOwogCWlmIChyZXQgPCAwKSB7CiAJCWRldl9lcnIoaHlfZHJ2 X3ByaXYtPmRldiwKQEAgLTU4OSwxMiArNTg5LDEwIEBAIHN0YXRpYyB2b2lkIGh5cGVyX2RtYWJ1 Zl9kZWxheWVkX3VuZXhwb3J0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJCWV4cG9ydGVk LT5oaWQucm5nX2tleVsxXSwgZXhwb3J0ZWQtPmhpZC5ybmdfa2V5WzJdKTsKIAl9CiAKLQkvKiBm cmVlIG1zZyAqLwogCWtmcmVlKHJlcSk7CiAJZXhwb3J0ZWQtPnVuZXhwb3J0X3NjaGVkID0gZmFs c2U7CiAKLQkvKgotCSAqIEltbWVkaWF0ZWx5IGNsZWFuLXVwIGlmIGl0IGhhcyBuZXZlciBiZWVu IGV4cG9ydGVkIGJ5IGltcG9ydGVyCisJLyogSW1tZWRpYXRlbHkgY2xlYW4tdXAgaWYgaXQgaGFz IG5ldmVyIGJlZW4gZXhwb3J0ZWQgYnkgaW1wb3J0ZXIKIAkgKiAoc28gbm8gU0dUIGlzIGNvbnN0 cnVjdGVkIG9uIGltcG9ydGVyKS4KIAkgKiBjbGVhbiBpdCB1cCBsYXRlciBpbiByZW1vdGUgc3lu YyB3aGVuIGZpbmFsIHJlbGVhc2Ugb3BzCiAJICogaXMgY2FsbGVkIChpbXBvcnRlciBkb2VzIHRo aXMgb25seSB3aGVuIHRoZXJlJ3Mgbm8KQEAgLTY2OSwyNSArNjY3LDMxIEBAIHN0YXRpYyBpbnQg aHlwZXJfZG1hYnVmX3F1ZXJ5X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkICpkYXRhKQog CQlleHBvcnRlZCA9IGh5cGVyX2RtYWJ1Zl9maW5kX2V4cG9ydGVkKHF1ZXJ5X2F0dHItPmhpZCk7 CiAJCWlmIChleHBvcnRlZCkgewogCQkJcmV0ID0gaHlwZXJfZG1hYnVmX3F1ZXJ5X2V4cG9ydGVk KGV4cG9ydGVkLAotCQkJCQkJCSAgcXVlcnlfYXR0ci0+aXRlbSwgJnF1ZXJ5X2F0dHItPmluZm8p OworCQkJCQkJCSAgcXVlcnlfYXR0ci0+aXRlbSwKKwkJCQkJCQkgICZxdWVyeV9hdHRyLT5pbmZv KTsKIAkJfSBlbHNlIHsKIAkJCWRldl9lcnIoaHlfZHJ2X3ByaXYtPmRldiwKLQkJCQkiRE1BIEJV RiB7aWQ6JWQga2V5OiVkICVkICVkfSBub3QgaW4gdGhlIGV4cG9ydCBsaXN0XG4iLAotCQkJCXF1 ZXJ5X2F0dHItPmhpZC5pZCwgcXVlcnlfYXR0ci0+aGlkLnJuZ19rZXlbMF0sCi0JCQkJcXVlcnlf YXR0ci0+aGlkLnJuZ19rZXlbMV0sIHF1ZXJ5X2F0dHItPmhpZC5ybmdfa2V5WzJdKTsKKwkJCQki aGlkIHtpZDolZCBrZXk6JWQgJWQgJWR9IG5vdCBpbiBleHAgbGlzdFxuIiwKKwkJCQlxdWVyeV9h dHRyLT5oaWQuaWQsCisJCQkJcXVlcnlfYXR0ci0+aGlkLnJuZ19rZXlbMF0sCisJCQkJcXVlcnlf YXR0ci0+aGlkLnJuZ19rZXlbMV0sCisJCQkJcXVlcnlfYXR0ci0+aGlkLnJuZ19rZXlbMl0pOwog CQkJcmV0dXJuIC1FTk9FTlQ7CiAJCX0KIAl9IGVsc2UgewogCQkvKiBxdWVyeSBmb3IgaW1wb3J0 ZWQgZG1hYnVmICovCiAJCWltcG9ydGVkID0gaHlwZXJfZG1hYnVmX2ZpbmRfaW1wb3J0ZWQocXVl cnlfYXR0ci0+aGlkKTsKIAkJaWYgKGltcG9ydGVkKSB7Ci0JCQlyZXQgPSBoeXBlcl9kbWFidWZf cXVlcnlfaW1wb3J0ZWQoaW1wb3J0ZWQsIHF1ZXJ5X2F0dHItPml0ZW0sCisJCQlyZXQgPSBoeXBl cl9kbWFidWZfcXVlcnlfaW1wb3J0ZWQoaW1wb3J0ZWQsCisJCQkJCQkJICBxdWVyeV9hdHRyLT5p dGVtLAogCQkJCQkJCSAgJnF1ZXJ5X2F0dHItPmluZm8pOwogCQl9IGVsc2UgewogCQkJZGV2X2Vy cihoeV9kcnZfcHJpdi0+ZGV2LAotCQkJCSJETUEgQlVGIHtpZDolZCBrZXk6JWQgJWQgJWR9IG5v dCBpbiB0aGUgaW1wb3J0ZWQgbGlzdFxuIiwKLQkJCQlxdWVyeV9hdHRyLT5oaWQuaWQsIHF1ZXJ5 X2F0dHItPmhpZC5ybmdfa2V5WzBdLAotCQkJCXF1ZXJ5X2F0dHItPmhpZC5ybmdfa2V5WzFdLCBx dWVyeV9hdHRyLT5oaWQucm5nX2tleVsyXSk7CisJCQkJImhpZCB7aWQ6JWQga2V5OiVkICVkICVk fSBub3QgaW4gaW1wIGxpc3RcbiIsCisJCQkJcXVlcnlfYXR0ci0+aGlkLmlkLAorCQkJCXF1ZXJ5 X2F0dHItPmhpZC5ybmdfa2V5WzBdLAorCQkJCXF1ZXJ5X2F0dHItPmhpZC5ybmdfa2V5WzFdLAor CQkJCXF1ZXJ5X2F0dHItPmhpZC5ybmdfa2V5WzJdKTsKIAkJCXJldHVybiAtRU5PRU5UOwogCQl9 CiAJfQpAQCAtNjk2LDEyICs3MDAsMTggQEAgc3RhdGljIGludCBoeXBlcl9kbWFidWZfcXVlcnlf aW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHZvaWQgKmRhdGEpCiB9CiAKIGNvbnN0IHN0cnVjdCBo eXBlcl9kbWFidWZfaW9jdGxfZGVzYyBoeXBlcl9kbWFidWZfaW9jdGxzW10gPSB7Ci0JSFlQRVJf RE1BQlVGX0lPQ1RMX0RFRihJT0NUTF9IWVBFUl9ETUFCVUZfVFhfQ0hfU0VUVVAsIGh5cGVyX2Rt YWJ1Zl90eF9jaF9zZXR1cF9pb2N0bCwgMCksCi0JSFlQRVJfRE1BQlVGX0lPQ1RMX0RFRihJT0NU TF9IWVBFUl9ETUFCVUZfUlhfQ0hfU0VUVVAsIGh5cGVyX2RtYWJ1Zl9yeF9jaF9zZXR1cF9pb2N0 bCwgMCksCi0JSFlQRVJfRE1BQlVGX0lPQ1RMX0RFRihJT0NUTF9IWVBFUl9ETUFCVUZfRVhQT1JU X1JFTU9URSwgaHlwZXJfZG1hYnVmX2V4cG9ydF9yZW1vdGVfaW9jdGwsIDApLAotCUhZUEVSX0RN QUJVRl9JT0NUTF9ERUYoSU9DVExfSFlQRVJfRE1BQlVGX0VYUE9SVF9GRCwgaHlwZXJfZG1hYnVm X2V4cG9ydF9mZF9pb2N0bCwgMCksCi0JSFlQRVJfRE1BQlVGX0lPQ1RMX0RFRihJT0NUTF9IWVBF Ul9ETUFCVUZfVU5FWFBPUlQsIGh5cGVyX2RtYWJ1Zl91bmV4cG9ydF9pb2N0bCwgMCksCi0JSFlQ RVJfRE1BQlVGX0lPQ1RMX0RFRihJT0NUTF9IWVBFUl9ETUFCVUZfUVVFUlksIGh5cGVyX2RtYWJ1 Zl9xdWVyeV9pb2N0bCwgMCksCisJSFlQRVJfRE1BQlVGX0lPQ1RMX0RFRihJT0NUTF9IWVBFUl9E TUFCVUZfVFhfQ0hfU0VUVVAsCisJCQkgICAgICAgaHlwZXJfZG1hYnVmX3R4X2NoX3NldHVwX2lv Y3RsLCAwKSwKKwlIWVBFUl9ETUFCVUZfSU9DVExfREVGKElPQ1RMX0hZUEVSX0RNQUJVRl9SWF9D SF9TRVRVUCwKKwkJCSAgICAgICBoeXBlcl9kbWFidWZfcnhfY2hfc2V0dXBfaW9jdGwsIDApLAor CUhZUEVSX0RNQUJVRl9JT0NUTF9ERUYoSU9DVExfSFlQRVJfRE1BQlVGX0VYUE9SVF9SRU1PVEUs CisJCQkgICAgICAgaHlwZXJfZG1hYnVmX2V4cG9ydF9yZW1vdGVfaW9jdGwsIDApLAorCUhZUEVS X0RNQUJVRl9JT0NUTF9ERUYoSU9DVExfSFlQRVJfRE1BQlVGX0VYUE9SVF9GRCwKKwkJCSAgICAg ICBoeXBlcl9kbWFidWZfZXhwb3J0X2ZkX2lvY3RsLCAwKSwKKwlIWVBFUl9ETUFCVUZfSU9DVExf REVGKElPQ1RMX0hZUEVSX0RNQUJVRl9VTkVYUE9SVCwKKwkJCSAgICAgICBoeXBlcl9kbWFidWZf dW5leHBvcnRfaW9jdGwsIDApLAorCUhZUEVSX0RNQUJVRl9JT0NUTF9ERUYoSU9DVExfSFlQRVJf RE1BQlVGX1FVRVJZLAorCQkJICAgICAgIGh5cGVyX2RtYWJ1Zl9xdWVyeV9pb2N0bCwgMCksCiB9 OwogCiBsb25nIGh5cGVyX2RtYWJ1Zl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwKQEAgLTcyOCwy MSArNzM4LDIzIEBAIGxvbmcgaHlwZXJfZG1hYnVmX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLAog CX0KIAogCWtkYXRhID0ga21hbGxvYyhfSU9DX1NJWkUoY21kKSwgR0ZQX0tFUk5FTCk7Ci0JaWYg KCFrZGF0YSkgewotCQlkZXZfZXJyKGh5X2Rydl9wcml2LT5kZXYsICJubyBtZW1vcnlcbiIpOwor CWlmICgha2RhdGEpCiAJCXJldHVybiAtRU5PTUVNOwotCX0KIAotCWlmIChjb3B5X2Zyb21fdXNl cihrZGF0YSwgKHZvaWQgX191c2VyICopcGFyYW0sIF9JT0NfU0laRShjbWQpKSAhPSAwKSB7Ci0J CWRldl9lcnIoaHlfZHJ2X3ByaXYtPmRldiwgImZhaWxlZCB0byBjb3B5IGZyb20gdXNlciBhcmd1 bWVudHNcbiIpOworCWlmIChjb3B5X2Zyb21fdXNlcihrZGF0YSwgKHZvaWQgX191c2VyICopcGFy YW0sCisJCQkgICBfSU9DX1NJWkUoY21kKSkgIT0gMCkgeworCQlkZXZfZXJyKGh5X2Rydl9wcml2 LT5kZXYsCisJCQkiZmFpbGVkIHRvIGNvcHkgZnJvbSB1c2VyIGFyZ3VtZW50c1xuIik7CiAJCXJl dCA9IC1FRkFVTFQ7CiAJCWdvdG8gaW9jdGxfZXJyb3I7CiAJfQogCiAJcmV0ID0gZnVuYyhmaWxw LCBrZGF0YSk7CiAKLQlpZiAoY29weV90b191c2VyKCh2b2lkIF9fdXNlciAqKXBhcmFtLCBrZGF0 YSwgX0lPQ19TSVpFKGNtZCkpICE9IDApIHsKLQkJZGV2X2VycihoeV9kcnZfcHJpdi0+ZGV2LCAi ZmFpbGVkIHRvIGNvcHkgdG8gdXNlciBhcmd1bWVudHNcbiIpOworCWlmIChjb3B5X3RvX3VzZXIo KHZvaWQgX191c2VyICopcGFyYW0sIGtkYXRhLAorCQkJIF9JT0NfU0laRShjbWQpKSAhPSAwKSB7 CisJCWRldl9lcnIoaHlfZHJ2X3ByaXYtPmRldiwKKwkJCSJmYWlsZWQgdG8gY29weSB0byB1c2Vy IGFyZ3VtZW50c1xuIik7CiAJCXJldCA9IC1FRkFVTFQ7CiAJCWdvdG8gaW9jdGxfZXJyb3I7CiAJ fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9pb2N0 bC5oIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9pb2N0bC5oCmluZGV4 IDNlOTQ3MGEuLjU5OTFhODcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9o eXBlcl9kbWFidWZfaW9jdGwuaAorKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJf ZG1hYnVmX2lvY3RsLmgKQEAgLTM0LDcgKzM0LDcgQEAgc3RydWN0IGh5cGVyX2RtYWJ1Zl9pb2N0 bF9kZXNjIHsKIAljb25zdCBjaGFyICpuYW1lOwogfTsKIAotI2RlZmluZSBIWVBFUl9ETUFCVUZf SU9DVExfREVGKGlvY3RsLCBfZnVuYywgX2ZsYWdzKSAJXAorI2RlZmluZSBIWVBFUl9ETUFCVUZf SU9DVExfREVGKGlvY3RsLCBfZnVuYywgX2ZsYWdzKQlcCiAJW19JT0NfTlIoaW9jdGwpXSA9IHsJ CQkJXAogCQkJLmNtZCA9IGlvY3RsLAkJCVwKIAkJCS5mdW5jID0gX2Z1bmMsCQkJXApAQCAtNDIs NiArNDIsOSBAQCBzdHJ1Y3QgaHlwZXJfZG1hYnVmX2lvY3RsX2Rlc2MgewogCQkJLm5hbWUgPSAj aW9jdGwJCQlcCiAJfQogCitsb25nIGh5cGVyX2RtYWJ1Zl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmls cCwKKwkJCXVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgcGFyYW0pOworCiBpbnQgaHlw ZXJfZG1hYnVmX3VuZXhwb3J0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkICpkYXRhKTsK IAogI2VuZGlmIC8vX19IWVBFUl9ETUFCVUZfSU9DVExfSF9fCmRpZmYgLS1naXQgYS9kcml2ZXJz L3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX21zZy5jIGIvZHJpdmVycy94ZW4vaHlwZXJf ZG1hYnVmL2h5cGVyX2RtYWJ1Zl9tc2cuYwppbmRleCA5MDdmNzZlLi5mYmJjYzM5IDEwMDY0NAot LS0gYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX21zZy5jCisrKyBiL2Ry aXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfbXNnLmMKQEAgLTUyLDE4ICs1Miwx OSBAQCB2b2lkIGh5cGVyX2RtYWJ1Zl9jcmVhdGVfcmVxKHN0cnVjdCBoeXBlcl9kbWFidWZfcmVx ICpyZXEsCiAJcmVxLT5zdGF0ID0gSFlQRVJfRE1BQlVGX1JFUV9OT1RfUkVTUE9OREVEOwogCXJl cS0+Y21kID0gY21kOwogCi0Jc3dpdGNoKGNtZCkgeworCXN3aXRjaCAoY21kKSB7CiAJLyogYXMg ZXhwb3J0ZXIsIGNvbW1hbmRzIHRvIGltcG9ydGVyICovCiAJY2FzZSBIWVBFUl9ETUFCVUZfRVhQ T1JUOgogCQkvKiBleHBvcnRpbmcgcGFnZXMgZm9yIGRtYWJ1ZiAqLwogCQkvKiBjb21tYW5kIDog SFlQRVJfRE1BQlVGX0VYUE9SVCwKLQkJICogb3AwfjMgOiBoeXBlcl9kbWFidWZfaWQKKwkJICog b3Awfm9wMyA6IGh5cGVyX2RtYWJ1Zl9pZAogCQkgKiBvcDQgOiBudW1iZXIgb2YgcGFnZXMgdG8g YmUgc2hhcmVkCiAJCSAqIG9wNSA6IG9mZnNldCBvZiBkYXRhIGluIHRoZSBmaXJzdCBwYWdlCiAJ CSAqIG9wNiA6IGxlbmd0aCBvZiBkYXRhIGluIHRoZSBsYXN0IHBhZ2UKIAkJICogb3A3IDogdG9w LWxldmVsIHJlZmVyZW5jZSBudW1iZXIgZm9yIHNoYXJlZCBwYWdlcwogCQkgKiBvcDggOiBzaXpl IG9mIHByaXZhdGUgZGF0YSAoZnJvbSBvcDkpCi0JCSAqIG9wOSB+IDogRHJpdmVyLXNwZWNpZmlj IHByaXZhdGUgZGF0YSAoZS5nLiBncmFwaGljIGJ1ZmZlcidzIG1ldGEgaW5mbykKKwkJICogb3A5 IH4gOiBEcml2ZXItc3BlY2lmaWMgcHJpdmF0ZSBkYXRhCisJCSAqCSAgIChlLmcuIGdyYXBoaWMg YnVmZmVyJ3MgbWV0YSBpbmZvKQogCQkgKi8KIAogCQltZW1jcHkoJnJlcS0+b3BbMF0sICZvcFsw XSwgOSAqIHNpemVvZihpbnQpICsgb3BbOF0pOwpAQCAtNzIsMzQgKzczLDM5IEBAIHZvaWQgaHlw ZXJfZG1hYnVmX2NyZWF0ZV9yZXEoc3RydWN0IGh5cGVyX2RtYWJ1Zl9yZXEgKnJlcSwKIAljYXNl IEhZUEVSX0RNQUJVRl9OT1RJRllfVU5FWFBPUlQ6CiAJCS8qIGRlc3Ryb3kgc2dfbGlzdCBmb3Ig aHlwZXJfZG1hYnVmX2lkIG9uIHJlbW90ZSBzaWRlICovCiAJCS8qIGNvbW1hbmQgOiBETUFCVUZf REVTVFJPWSwKLQkJICogb3AwfjMgOiBoeXBlcl9kbWFidWZfaWRfdCBoaWQKKwkJICogb3Awfm9w MyA6IGh5cGVyX2RtYWJ1Zl9pZF90IGhpZAogCQkgKi8KIAotCQlmb3IgKGk9MDsgaSA8IDQ7IGkr KykKKwkJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKIAkJCXJlcS0+b3BbaV0gPSBvcFtpXTsKIAkJ YnJlYWs7CiAKIAljYXNlIEhZUEVSX0RNQUJVRl9FWFBPUlRfRkQ6CiAJY2FzZSBIWVBFUl9ETUFC VUZfRVhQT1JUX0ZEX0ZBSUxFRDoKLQkJLyogZG1hYnVmIGZkIGlzIGJlaW5nIGNyZWF0ZWQgb24g aW1wb3J0ZWQgc2lkZSBvciBpbXBvcnRpbmcgZmFpbGVkICovCi0JCS8qIGNvbW1hbmQgOiBIWVBF Ul9ETUFCVUZfRVhQT1JUX0ZEIG9yIEhZUEVSX0RNQUJVRl9FWFBPUlRfRkRfRkFJTEVELAotCQkg KiBvcDB+MyA6IGh5cGVyX2RtYWJ1Zl9pZAorCQkvKiBkbWFidWYgZmQgaXMgYmVpbmcgY3JlYXRl ZCBvbiBpbXBvcnRlZCBzaWRlIG9yIGltcG9ydGluZworCQkgKiBmYWlsZWQKKwkJICoKKwkJICog Y29tbWFuZCA6IEhZUEVSX0RNQUJVRl9FWFBPUlRfRkQgb3IKKwkJICoJICAgICBIWVBFUl9ETUFC VUZfRVhQT1JUX0ZEX0ZBSUxFRCwKKwkJICogb3Awfm9wMyA6IGh5cGVyX2RtYWJ1Zl9pZAogCQkg Ki8KIAotCQlmb3IgKGk9MDsgaSA8IDQ7IGkrKykKKwkJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykK IAkJCXJlcS0+b3BbaV0gPSBvcFtpXTsKIAkJYnJlYWs7CiAKIAljYXNlIEhZUEVSX0RNQUJVRl9P UFNfVE9fUkVNT1RFOgotCQkvKiBub3RpZnlpbmcgZG1hYnVmIG1hcC91bm1hcCB0byBpbXBvcnRl ciAocHJvYmFibHkgbm90IG5lZWRlZCkgKi8KLQkJLyogZm9yIGRtYWJ1ZiBzeW5jaHJvbml6YXRp b24gKi8KKwkJLyogbm90aWZ5aW5nIGRtYWJ1ZiBtYXAvdW5tYXAgdG8gaW1wb3J0ZXIgKHByb2Jh Ymx5IG5vdCBuZWVkZWQpCisJCSAqIGZvciBkbWFidWYgc3luY2hyb25pemF0aW9uCisJCSAqLwog CQlicmVhazsKIAotCS8qIGFzIGltcG9ydGVyLCBjb21tYW5kIHRvIGV4cG9ydGVyICovCiAJY2Fz ZSBIWVBFUl9ETUFCVUZfT1BTX1RPX1NPVVJDRToKLQkJLyogbm90aWZ5aW5nIGRtYWJ1ZiBtYXAv dW5tYXAgdG8gZXhwb3J0ZXIsIG1hcCB3aWxsIG1ha2UgdGhlIGRyaXZlciB0byBkbyBzaGFkb3cg bWFwcGluZwotCQkqIG9yIHVubWFwcGluZyBmb3Igc3luY2hyb25pemF0aW9uIHdpdGggb3JpZ2lu YWwgZXhwb3J0ZXIgKGUuZy4gaTkxNSkgKi8KLQkJLyogY29tbWFuZCA6IERNQUJVRl9PUFNfVE9f U09VUkNFLgorCQkvKiBub3RpZnlpbmcgZG1hYnVmIG1hcC91bm1hcCB0byBleHBvcnRlciwgbWFw IHdpbGwgbWFrZQorCQkgKiB0aGUgZHJpdmVyIHRvIGRvIHNoYWRvdyBtYXBwaW5nIG9yIHVubWFw cGluZyBmb3IKKwkJICogc3luY2hyb25pemF0aW9uIHdpdGggb3JpZ2luYWwgZXhwb3J0ZXIgKGUu Zy4gaTkxNSkKKwkJICoKKwkJICogY29tbWFuZCA6IERNQUJVRl9PUFNfVE9fU09VUkNFLgogCQkg KiBvcDB+MyA6IGh5cGVyX2RtYWJ1Zl9pZAogCQkgKiBvcDQgOiBtYXAoPTEpL3VubWFwKD0yKS9h dHRhY2goPTMpL2RldGFjaCg9NCkKIAkJICovCkBAIC0xMTYsNyArMTIyLDggQEAgdm9pZCBoeXBl cl9kbWFidWZfY3JlYXRlX3JlcShzdHJ1Y3QgaHlwZXJfZG1hYnVmX3JlcSAqcmVxLAogc3RhdGlj IHZvaWQgY21kX3Byb2Nlc3Nfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiB7CiAJc3Ry dWN0IGltcG9ydGVkX3NndF9pbmZvICppbXBvcnRlZDsKLQlzdHJ1Y3QgY21kX3Byb2Nlc3MgKnBy b2MgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGNtZF9wcm9jZXNzLCB3b3JrKTsKKwlzdHJ1 Y3QgY21kX3Byb2Nlc3MgKnByb2MgPSBjb250YWluZXJfb2Yod29yaywKKwkJCQkJCXN0cnVjdCBj bWRfcHJvY2Vzcywgd29yayk7CiAJc3RydWN0IGh5cGVyX2RtYWJ1Zl9yZXEgKnJlcTsKIAlpbnQg ZG9taWQ7CiAJaW50IGk7CkBAIC0xMjgsNDAgKzEzNSw0MiBAQCBzdGF0aWMgdm9pZCBjbWRfcHJv Y2Vzc193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAljYXNlIEhZUEVSX0RNQUJVRl9F WFBPUlQ6CiAJCS8qIGV4cG9ydGluZyBwYWdlcyBmb3IgZG1hYnVmICovCiAJCS8qIGNvbW1hbmQg OiBIWVBFUl9ETUFCVUZfRVhQT1JULAotCQkgKiBvcDB+MyA6IGh5cGVyX2RtYWJ1Zl9pZAorCQkg KiBvcDB+b3AzIDogaHlwZXJfZG1hYnVmX2lkCiAJCSAqIG9wNCA6IG51bWJlciBvZiBwYWdlcyB0 byBiZSBzaGFyZWQKIAkJICogb3A1IDogb2Zmc2V0IG9mIGRhdGEgaW4gdGhlIGZpcnN0IHBhZ2UK IAkJICogb3A2IDogbGVuZ3RoIG9mIGRhdGEgaW4gdGhlIGxhc3QgcGFnZQogCQkgKiBvcDcgOiB0 b3AtbGV2ZWwgcmVmZXJlbmNlIG51bWJlciBmb3Igc2hhcmVkIHBhZ2VzCiAJCSAqIG9wOCA6IHNp emUgb2YgcHJpdmF0ZSBkYXRhIChmcm9tIG9wOSkKLQkJICogb3A5IH4gOiBEcml2ZXItc3BlY2lm aWMgcHJpdmF0ZSBkYXRhIChlLmcuIGdyYXBoaWMgYnVmZmVyJ3MgbWV0YSBpbmZvKQorCQkgKiBv cDkgfiA6IERyaXZlci1zcGVjaWZpYyBwcml2YXRlIGRhdGEKKwkJICogICAgICAgICAoZS5nLiBn cmFwaGljIGJ1ZmZlcidzIG1ldGEgaW5mbykKIAkJICovCiAKLQkJLyogaWYgbmVudHMgPT0gMCwg aXQgbWVhbnMgaXQgaXMgYSBtZXNzYWdlIG9ubHkgZm9yIHByaXYgc3luY2hyb25pemF0aW9uCi0J CSAqIGZvciBleGlzdGluZyBpbXBvcnRlZF9zZ3RfaW5mbyBzbyBub3QgY3JlYXRpbmcgYSBuZXcg b25lICovCisJCS8qIGlmIG5lbnRzID09IDAsIGl0IG1lYW5zIGl0IGlzIGEgbWVzc2FnZSBvbmx5 IGZvcgorCQkgKiBwcml2IHN5bmNocm9uaXphdGlvbi4gZm9yIGV4aXN0aW5nIGltcG9ydGVkX3Nn dF9pbmZvCisJCSAqIHNvIG5vdCBjcmVhdGluZyBhIG5ldyBvbmUKKwkJICovCiAJCWlmIChyZXEt Pm9wWzRdID09IDApIHsKIAkJCWh5cGVyX2RtYWJ1Zl9pZF90IGV4aXN0ID0ge3JlcS0+b3BbMF0s CiAJCQkJCQkgICB7cmVxLT5vcFsxXSwgcmVxLT5vcFsyXSwKLQkJCQkJCSAgIHJlcS0+b3BbM119 fTsKKwkJCQkJCSAgIHJlcS0+b3BbM10gfSB9OwogCiAJCQlpbXBvcnRlZCA9IGh5cGVyX2RtYWJ1 Zl9maW5kX2ltcG9ydGVkKGV4aXN0KTsKIAogCQkJaWYgKCFpbXBvcnRlZCkgewogCQkJCWRldl9l cnIoaHlfZHJ2X3ByaXYtPmRldiwKLQkJCQkJIkNhbid0IGZpbmQgaW1wb3J0ZWQgc2d0X2luZm8g ZnJvbSBJTVBPUlRfTElTVFxuIik7CisJCQkJCSJDYW4ndCBmaW5kIGltcG9ydGVkIHNndF9pbmZv XG4iKTsKIAkJCQlicmVhazsKIAkJCX0KIAogCQkJLyogaWYgc2l6ZSBvZiBuZXcgcHJpdmF0ZSBk YXRhIGlzIGRpZmZlcmVudCwKLQkJCSAqIHdlIHJlYWxsb2NhdGUgaXQuICovCisJCQkgKiB3ZSBy ZWFsbG9jYXRlIGl0LgorCQkJICovCiAJCQlpZiAoaW1wb3J0ZWQtPnN6X3ByaXYgIT0gcmVxLT5v cFs4XSkgewogCQkJCWtmcmVlKGltcG9ydGVkLT5wcml2KTsKIAkJCQlpbXBvcnRlZC0+c3pfcHJp diA9IHJlcS0+b3BbOF07Ci0JCQkJaW1wb3J0ZWQtPnByaXYgPSBrY2FsbG9jKDEsIHJlcS0+b3Bb OF0sIEdGUF9LRVJORUwpOworCQkJCWltcG9ydGVkLT5wcml2ID0ga2NhbGxvYygxLCByZXEtPm9w WzhdLAorCQkJCQkJCSBHRlBfS0VSTkVMKTsKIAkJCQlpZiAoIWltcG9ydGVkLT5wcml2KSB7Ci0J CQkJCWRldl9lcnIoaHlfZHJ2X3ByaXYtPmRldiwKLQkJCQkJCSJGYWlsIHRvIGFsbG9jYXRlIHBy aXZcbiIpOwotCiAJCQkJCS8qIHNldCBpdCBpbnZhbGlkICovCiAJCQkJCWltcG9ydGVkLT52YWxp ZCA9IDA7CiAJCQkJCWJyZWFrOwpAQCAtMTgxLDI2ICsxOTAsMjAgQEAgc3RhdGljIHZvaWQgY21k X3Byb2Nlc3Nfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAKIAkJaW1wb3J0ZWQgPSBr Y2FsbG9jKDEsIHNpemVvZigqaW1wb3J0ZWQpLCBHRlBfS0VSTkVMKTsKIAotCQlpZiAoIWltcG9y dGVkKSB7Ci0JCQlkZXZfZXJyKGh5X2Rydl9wcml2LT5kZXYsCi0JCQkJIk5vIG1lbW9yeSBsZWZ0 IHRvIGJlIGFsbG9jYXRlZFxuIik7CisJCWlmICghaW1wb3J0ZWQpCiAJCQlicmVhazsKLQkJfQog CiAJCWltcG9ydGVkLT5zel9wcml2ID0gcmVxLT5vcFs4XTsKIAkJaW1wb3J0ZWQtPnByaXYgPSBr Y2FsbG9jKDEsIHJlcS0+b3BbOF0sIEdGUF9LRVJORUwpOwogCiAJCWlmICghaW1wb3J0ZWQtPnBy aXYpIHsKLQkJCWRldl9lcnIoaHlfZHJ2X3ByaXYtPmRldiwKLQkJCQkiRmFpbCB0byBhbGxvY2F0 ZSBwcml2XG4iKTsKLQogCQkJa2ZyZWUoaW1wb3J0ZWQpOwogCQkJYnJlYWs7CiAJCX0KIAogCQlp bXBvcnRlZC0+aGlkLmlkID0gcmVxLT5vcFswXTsKIAotCQlmb3IgKGk9MDsgaTwzOyBpKyspCisJ CWZvciAoaSA9IDA7IGkgPCAzOyBpKyspCiAJCQlpbXBvcnRlZC0+aGlkLnJuZ19rZXlbaV0gPSBy ZXEtPm9wW2krMV07CiAKIAkJaW1wb3J0ZWQtPm5lbnRzID0gcmVxLT5vcFs0XTsKQEAgLTIzMCwx MyArMjMzLDEzIEBAIHN0YXRpYyB2b2lkIGNtZF9wcm9jZXNzX3dvcmsoc3RydWN0IHdvcmtfc3Ry dWN0ICp3b3JrKQogCQlicmVhazsKIAogCWNhc2UgSFlQRVJfRE1BQlVGX09QU19UT19SRU1PVEU6 Ci0JCS8qIG5vdGlmeWluZyBkbWFidWYgbWFwL3VubWFwIHRvIGltcG9ydGVyIChwcm9iYWJseSBu b3QgbmVlZGVkKSAqLwotCQkvKiBmb3IgZG1hYnVmIHN5bmNocm9uaXphdGlvbiAqLworCQkvKiBu b3RpZnlpbmcgZG1hYnVmIG1hcC91bm1hcCB0byBpbXBvcnRlcgorCQkgKiAocHJvYmFibHkgbm90 IG5lZWRlZCkgZm9yIGRtYWJ1ZiBzeW5jaHJvbml6YXRpb24KKwkJICovCiAJCWJyZWFrOwogCiAJ ZGVmYXVsdDoKIAkJLyogc2hvdWxkbid0IGdldCBoZXJlICovCi0JCS8qIG5vIG1hdGNoZWQgY29t bWFuZCwgbm90aGluZyB0byBkby4uIGp1c3QgcmV0dXJuIGVycm9yICovCiAJCWJyZWFrOwogCX0K IApAQCAtMjgwLDIwICsyODMsMjIgQEAgaW50IGh5cGVyX2RtYWJ1Zl9tc2dfcGFyc2UoaW50IGRv bWlkLCBzdHJ1Y3QgaHlwZXJfZG1hYnVmX3JlcSAqcmVxKQogCQkgKiBvcDB+MyA6IGh5cGVyX2Rt YWJ1Zl9pZAogCQkgKi8KIAkJZGV2X2RiZyhoeV9kcnZfcHJpdi0+ZGV2LAotCQkJIiVzOiBwcm9j ZXNzaW5nIEhZUEVSX0RNQUJVRl9OT1RJRllfVU5FWFBPUlRcbiIsIF9fZnVuY19fKTsKKwkJCSJw cm9jZXNzaW5nIEhZUEVSX0RNQUJVRl9OT1RJRllfVU5FWFBPUlRcbiIpOwogCiAJCWltcG9ydGVk ID0gaHlwZXJfZG1hYnVmX2ZpbmRfaW1wb3J0ZWQoaGlkKTsKIAogCQlpZiAoaW1wb3J0ZWQpIHsK IAkJCS8qIGlmIGFueXRoaW5nIGlzIHN0aWxsIHVzaW5nIGRtYV9idWYgKi8KIAkJCWlmIChpbXBv cnRlZC0+aW1wb3J0ZXJzKSB7Ci0JCQkJLyoKLQkJCQkgKiBCdWZmZXIgaXMgc3RpbGwgaW4gIHVz ZSwganVzdCBtYXJrIHRoYXQgaXQgc2hvdWxkCi0JCQkJICogbm90IGJlIGFsbG93ZWQgdG8gZXhw b3J0IGl0cyBmZCBhbnltb3JlLgorCQkJCS8qIEJ1ZmZlciBpcyBzdGlsbCBpbiAgdXNlLCBqdXN0 IG1hcmsgdGhhdAorCQkJCSAqIGl0IHNob3VsZCBub3QgYmUgYWxsb3dlZCB0byBleHBvcnQgaXRz IGZkCisJCQkJICogYW55bW9yZS4KIAkJCQkgKi8KIAkJCQlpbXBvcnRlZC0+dmFsaWQgPSBmYWxz ZTsKIAkJCX0gZWxzZSB7Ci0JCQkJLyogTm8gb25lIGlzIHVzaW5nIGJ1ZmZlciwgcmVtb3ZlIGl0 IGZyb20gaW1wb3J0ZWQgbGlzdCAqLworCQkJCS8qIE5vIG9uZSBpcyB1c2luZyBidWZmZXIsIHJl bW92ZSBpdCBmcm9tCisJCQkJICogaW1wb3J0ZWQgbGlzdAorCQkJCSAqLwogCQkJCWh5cGVyX2Rt YWJ1Zl9yZW1vdmVfaW1wb3J0ZWQoaGlkKTsKIAkJCQlrZnJlZShpbXBvcnRlZCk7CiAJCQl9CkBA IC0zMDYsMTAgKzMxMSwxMiBAQCBpbnQgaHlwZXJfZG1hYnVmX21zZ19wYXJzZShpbnQgZG9taWQs IHN0cnVjdCBoeXBlcl9kbWFidWZfcmVxICpyZXEpCiAKIAkvKiBkbWEgYnVmIHJlbW90ZSBzeW5j aHJvbml6YXRpb24gKi8KIAlpZiAocmVxLT5jbWQgPT0gSFlQRVJfRE1BQlVGX09QU19UT19TT1VS Q0UpIHsKLQkJLyogbm90aWZ5aW5nIGRtYWJ1ZiBtYXAvdW5tYXAgdG8gZXhwb3J0ZXIsIG1hcCB3 aWxsIG1ha2UgdGhlIGRyaXZlciB0byBkbyBzaGFkb3cgbWFwcGluZwotCQkgKiBvciB1bm1hcHBp bmcgZm9yIHN5bmNocm9uaXphdGlvbiB3aXRoIG9yaWdpbmFsIGV4cG9ydGVyIChlLmcuIGk5MTUp ICovCi0KLQkJLyogY29tbWFuZCA6IERNQUJVRl9PUFNfVE9fU09VUkNFLgorCQkvKiBub3RpZnlp bmcgZG1hYnVmIG1hcC91bm1hcCB0byBleHBvcnRlciwgbWFwIHdpbGwKKwkJICogbWFrZSB0aGUg ZHJpdmVyIHRvIGRvIHNoYWRvdyBtYXBwaW5nCisJCSAqIG9yIHVubWFwcGluZyBmb3Igc3luY2hy b25pemF0aW9uIHdpdGggb3JpZ2luYWwKKwkJICogZXhwb3J0ZXIgKGUuZy4gaTkxNSkKKwkJICoK KwkJICogY29tbWFuZCA6IERNQUJVRl9PUFNfVE9fU09VUkNFLgogCQkgKiBvcDB+MyA6IGh5cGVy X2RtYWJ1Zl9pZAogCQkgKiBvcDEgOiBlbnVtIGh5cGVyX2RtYWJ1Zl9vcHMgey4uLi59CiAJCSAq LwpAQCAtMzMwLDI3ICszMzcsMzAgQEAgaW50IGh5cGVyX2RtYWJ1Zl9tc2dfcGFyc2UoaW50IGRv bWlkLCBzdHJ1Y3QgaHlwZXJfZG1hYnVmX3JlcSAqcmVxKQogCWlmIChyZXEtPmNtZCA9PSBIWVBF Ul9ETUFCVUZfRVhQT1JUX0ZEKSB7CiAJCS8qIGZpbmQgYSBjb3JyZXNwb25kaW5nIFNHVCBmb3Ig dGhlIGlkICovCiAJCWRldl9kYmcoaHlfZHJ2X3ByaXYtPmRldiwKLQkJCSJQcm9jZXNzaW5nIEhZ UEVSX0RNQUJVRl9FWFBPUlRfRkQgZm9yIGJ1ZmZlciB7aWQ6JWQga2V5OiVkICVkICVkfVxuIiwK KwkJCSJIWVBFUl9ETUFCVUZfRVhQT1JUX0ZEIGZvciB7aWQ6JWQga2V5OiVkICVkICVkfVxuIiwK IAkJCWhpZC5pZCwgaGlkLnJuZ19rZXlbMF0sIGhpZC5ybmdfa2V5WzFdLCBoaWQucm5nX2tleVsy XSk7CiAKIAkJZXhwb3J0ZWQgPSBoeXBlcl9kbWFidWZfZmluZF9leHBvcnRlZChoaWQpOwogCiAJ CWlmICghZXhwb3J0ZWQpIHsKIAkJCWRldl9lcnIoaHlfZHJ2X3ByaXYtPmRldiwKLQkJCQkiY3Jp dGljYWwgZXJyOiByZXF1ZXN0ZWQgc2d0X2luZm8gY2FuJ3QgYmUgZm91bmQgZm9yIGJ1ZmZlciB7 aWQ6JWQga2V5OiVkICVkICVkfVxuIiwKLQkJCQloaWQuaWQsIGhpZC5ybmdfa2V5WzBdLCBoaWQu cm5nX2tleVsxXSwgaGlkLnJuZ19rZXlbMl0pOworCQkJCSJidWZmZXIge2lkOiVkIGtleTolZCAl ZCAlZH0gbm90IGZvdW5kXG4iLAorCQkJCWhpZC5pZCwgaGlkLnJuZ19rZXlbMF0sIGhpZC5ybmdf a2V5WzFdLAorCQkJCWhpZC5ybmdfa2V5WzJdKTsKIAogCQkJcmVxLT5zdGF0ID0gSFlQRVJfRE1B QlVGX1JFUV9FUlJPUjsKIAkJfSBlbHNlIGlmICghZXhwb3J0ZWQtPnZhbGlkKSB7CiAJCQlkZXZf ZGJnKGh5X2Rydl9wcml2LT5kZXYsCi0JCQkJIkJ1ZmZlciBubyBsb25nZXIgdmFsaWQgLSBjYW5u b3QgZXhwb3J0IGZkIGZvciBidWZmZXIge2lkOiVkIGtleTolZCAlZCAlZH1cbiIsCi0JCQkJaGlk LmlkLCBoaWQucm5nX2tleVswXSwgaGlkLnJuZ19rZXlbMV0sIGhpZC5ybmdfa2V5WzJdKTsKKwkJ CQkiQnVmZmVyIG5vIGxvbmdlciB2YWxpZCB7aWQ6JWQga2V5OiVkICVkICVkfVxuIiwKKwkJCQlo aWQuaWQsIGhpZC5ybmdfa2V5WzBdLCBoaWQucm5nX2tleVsxXSwKKwkJCQloaWQucm5nX2tleVsy XSk7CiAKIAkJCXJlcS0+c3RhdCA9IEhZUEVSX0RNQUJVRl9SRVFfRVJST1I7CiAJCX0gZWxzZSB7 CiAJCQlkZXZfZGJnKGh5X2Rydl9wcml2LT5kZXYsCi0JCQkJIkJ1ZmZlciBzdGlsbCB2YWxpZCAt IGNhbiBleHBvcnQgZmQgZm9yIGJ1ZmZlciB7aWQ6JWQga2V5OiVkICVkICVkfVxuIiwKLQkJCQlo aWQuaWQsIGhpZC5ybmdfa2V5WzBdLCBoaWQucm5nX2tleVsxXSwgaGlkLnJuZ19rZXlbMl0pOwor CQkJCSJCdWZmZXIgc3RpbGwgdmFsaWQge2lkOiVkIGtleTolZCAlZCAlZH1cbiIsCisJCQkJaGlk LmlkLCBoaWQucm5nX2tleVswXSwgaGlkLnJuZ19rZXlbMV0sCisJCQkJaGlkLnJuZ19rZXlbMl0p OwogCiAJCQlleHBvcnRlZC0+YWN0aXZlKys7CiAJCQlyZXEtPnN0YXQgPSBIWVBFUl9ETUFCVUZf UkVRX1BST0NFU1NFRDsKQEAgLTM2MCwxNSArMzcwLDE2IEBAIGludCBoeXBlcl9kbWFidWZfbXNn X3BhcnNlKGludCBkb21pZCwgc3RydWN0IGh5cGVyX2RtYWJ1Zl9yZXEgKnJlcSkKIAogCWlmIChy ZXEtPmNtZCA9PSBIWVBFUl9ETUFCVUZfRVhQT1JUX0ZEX0ZBSUxFRCkgewogCQlkZXZfZGJnKGh5 X2Rydl9wcml2LT5kZXYsCi0JCQkiUHJvY2Vzc2luZyBIWVBFUl9ETUFCVUZfRVhQT1JUX0ZEX0ZB SUxFRCBmb3IgYnVmZmVyIHtpZDolZCBrZXk6JWQgJWQgJWR9XG4iLAorCQkJIkhZUEVSX0RNQUJV Rl9FWFBPUlRfRkRfRkFJTEVEIGZvciB7aWQ6JWQga2V5OiVkICVkICVkfVxuIiwKIAkJCWhpZC5p ZCwgaGlkLnJuZ19rZXlbMF0sIGhpZC5ybmdfa2V5WzFdLCBoaWQucm5nX2tleVsyXSk7CiAKIAkJ ZXhwb3J0ZWQgPSBoeXBlcl9kbWFidWZfZmluZF9leHBvcnRlZChoaWQpOwogCiAJCWlmICghZXhw b3J0ZWQpIHsKIAkJCWRldl9lcnIoaHlfZHJ2X3ByaXYtPmRldiwKLQkJCQkiY3JpdGljYWwgZXJy OiByZXF1ZXN0ZWQgc2d0X2luZm8gY2FuJ3QgYmUgZm91bmQgZm9yIGJ1ZmZlciB7aWQ6JWQga2V5 OiVkICVkICVkfVxuIiwKLQkJCQloaWQuaWQsIGhpZC5ybmdfa2V5WzBdLCBoaWQucm5nX2tleVsx XSwgaGlkLnJuZ19rZXlbMl0pOworCQkJCSJidWZmZXIge2lkOiVkIGtleTolZCAlZCAlZH0gbm90 IGZvdW5kXG4iLAorCQkJCWhpZC5pZCwgaGlkLnJuZ19rZXlbMF0sIGhpZC5ybmdfa2V5WzFdLAor CQkJCWhpZC5ybmdfa2V5WzJdKTsKIAogCQkJcmVxLT5zdGF0ID0gSFlQRVJfRE1BQlVGX1JFUV9F UlJPUjsKIAkJfSBlbHNlIHsKQEAgLTM4MiwxOSArMzkzLDE0IEBAIGludCBoeXBlcl9kbWFidWZf bXNnX3BhcnNlKGludCBkb21pZCwgc3RydWN0IGh5cGVyX2RtYWJ1Zl9yZXEgKnJlcSkKIAkJIiVz OiBwdXR0aW5nIHJlcXVlc3QgdG8gd29ya3F1ZXVlXG4iLCBfX2Z1bmNfXyk7CiAJdGVtcF9yZXEg PSBrbWFsbG9jKHNpemVvZigqdGVtcF9yZXEpLCBHRlBfS0VSTkVMKTsKIAotCWlmICghdGVtcF9y ZXEpIHsKLQkJZGV2X2VycihoeV9kcnZfcHJpdi0+ZGV2LAotCQkJIk5vIG1lbW9yeSBsZWZ0IHRv IGJlIGFsbG9jYXRlZFxuIik7CisJaWYgKCF0ZW1wX3JlcSkKIAkJcmV0dXJuIC1FTk9NRU07Ci0J fQogCiAJbWVtY3B5KHRlbXBfcmVxLCByZXEsIHNpemVvZigqdGVtcF9yZXEpKTsKIAogCXByb2Mg PSBrY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgY21kX3Byb2Nlc3MpLCBHRlBfS0VSTkVMKTsKIAog CWlmICghcHJvYykgewotCQlkZXZfZXJyKGh5X2Rydl9wcml2LT5kZXYsCi0JCQkiTm8gbWVtb3J5 IGxlZnQgdG8gYmUgYWxsb2NhdGVkXG4iKTsKIAkJa2ZyZWUodGVtcF9yZXEpOwogCQlyZXR1cm4g LUVOT01FTTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJf ZG1hYnVmX21zZy5oIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9tc2cu aAppbmRleCA3YzY5NGVjLi45YzhhNzZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9oeXBlcl9k bWFidWYvaHlwZXJfZG1hYnVmX21zZy5oCisrKyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9o eXBlcl9kbWFidWZfbXNnLmgKQEAgLTc5LDcgKzc5LDkgQEAgdm9pZCBoeXBlcl9kbWFidWZfY3Jl YXRlX3JlcShzdHJ1Y3QgaHlwZXJfZG1hYnVmX3JlcSAqcmVxLAogCQkJCSBlbnVtIGh5cGVyX2Rt YWJ1Zl9jb21tYW5kIGNvbW1hbmQsCiAJCQkJIGludCAqb3BlcmFuZHMpOwogCi0vKiBwYXJzZSBp bmNvbWluZyByZXF1ZXN0IHBhY2tldCAob3IgcmVzcG9uc2UpIGFuZCB0YWtlIGFwcHJvcHJpYXRl IGFjdGlvbnMgZm9yIHRob3NlICovCisvKiBwYXJzZSBpbmNvbWluZyByZXF1ZXN0IHBhY2tldCAo b3IgcmVzcG9uc2UpIGFuZCB0YWtlCisgKiBhcHByb3ByaWF0ZSBhY3Rpb25zIGZvciB0aG9zZQor ICovCiBpbnQgaHlwZXJfZG1hYnVmX21zZ19wYXJzZShpbnQgZG9taWQsIHN0cnVjdCBoeXBlcl9k bWFidWZfcmVxICpyZXEpOwogCiAjZW5kaWYgLy8gX19IWVBFUl9ETUFCVUZfTVNHX0hfXwpkaWZm IC0tZ2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9vcHMuYyBiL2Ry aXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfb3BzLmMKaW5kZXggN2U3MzE3MC4u MDNmZGQzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1 Zl9vcHMuYworKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX29wcy5j CkBAIC01MywxOCArNTMsMTUgQEAgc3RhdGljIGludCBoeXBlcl9kbWFidWZfc3luY19yZXF1ZXN0 KGh5cGVyX2RtYWJ1Zl9pZF90IGhpZCwgaW50IGRtYWJ1Zl9vcHMpCiAKIAlvcFswXSA9IGhpZC5p ZDsKIAotCWZvciAoaT0wOyBpPDM7IGkrKykKKwlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKQogCQlv cFtpKzFdID0gaGlkLnJuZ19rZXlbaV07CiAKIAlvcFs0XSA9IGRtYWJ1Zl9vcHM7CiAKIAlyZXEg PSBrY2FsbG9jKDEsIHNpemVvZigqcmVxKSwgR0ZQX0tFUk5FTCk7CiAKLQlpZiAoIXJlcSkgewot CQlkZXZfZXJyKGh5X2Rydl9wcml2LT5kZXYsCi0JCQkiTm8gbWVtb3J5IGxlZnQgdG8gYmUgYWxs b2NhdGVkXG4iKTsKKwlpZiAoIXJlcSkKIAkJcmV0dXJuIC1FTk9NRU07Ci0JfQogCiAJaHlwZXJf ZG1hYnVmX2NyZWF0ZV9yZXEocmVxLCBIWVBFUl9ETUFCVUZfT1BTX1RPX1NPVVJDRSwgJm9wWzBd KTsKIApAQCAtODEsOCArNzgsOCBAQCBzdGF0aWMgaW50IGh5cGVyX2RtYWJ1Zl9zeW5jX3JlcXVl c3QoaHlwZXJfZG1hYnVmX2lkX3QgaGlkLCBpbnQgZG1hYnVmX29wcykKIAlyZXR1cm4gcmV0Owog fQogCi1zdGF0aWMgaW50IGh5cGVyX2RtYWJ1Zl9vcHNfYXR0YWNoKHN0cnVjdCBkbWFfYnVmKiBk bWFidWYsCi0JCQkJICAgc3RydWN0IGRldmljZSogZGV2LAorc3RhdGljIGludCBoeXBlcl9kbWFi dWZfb3BzX2F0dGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAorCQkJCSAgIHN0cnVjdCBkZXZp Y2UgKmRldiwKIAkJCQkgICBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gpCiB7CiAJ c3RydWN0IGltcG9ydGVkX3NndF9pbmZvICppbXBvcnRlZDsKQEAgLTk5LDcgKzk2LDcgQEAgc3Rh dGljIGludCBoeXBlcl9kbWFidWZfb3BzX2F0dGFjaChzdHJ1Y3QgZG1hX2J1ZiogZG1hYnVmLAog CXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB2b2lkIGh5cGVyX2RtYWJ1Zl9vcHNfZGV0YWNoKHN0 cnVjdCBkbWFfYnVmKiBkbWFidWYsCitzdGF0aWMgdm9pZCBoeXBlcl9kbWFidWZfb3BzX2RldGFj aChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAogCQkJCSAgICBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2ht ZW50ICphdHRhY2gpCiB7CiAJc3RydWN0IGltcG9ydGVkX3NndF9pbmZvICppbXBvcnRlZDsKQEAg LTExNCw4ICsxMTEsOSBAQCBzdGF0aWMgdm9pZCBoeXBlcl9kbWFidWZfb3BzX2RldGFjaChzdHJ1 Y3QgZG1hX2J1ZiogZG1hYnVmLAogCQkJCQlIWVBFUl9ETUFCVUZfT1BTX0RFVEFDSCk7CiB9CiAK LXN0YXRpYyBzdHJ1Y3Qgc2dfdGFibGUqIGh5cGVyX2RtYWJ1Zl9vcHNfbWFwKHN0cnVjdCBkbWFf YnVmX2F0dGFjaG1lbnQgKmF0dGFjaG1lbnQsCi0JCQkJCSAgICAgZW51bSBkbWFfZGF0YV9kaXJl Y3Rpb24gZGlyKQorc3RhdGljIHN0cnVjdCBzZ190YWJsZSAqaHlwZXJfZG1hYnVmX29wc19tYXAo CisJCQkJc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNobWVudCwKKwkJCQllbnVtIGRt YV9kYXRhX2RpcmVjdGlvbiBkaXIpCiB7CiAJc3RydWN0IHNnX3RhYmxlICpzdDsKIAlzdHJ1Y3Qg aW1wb3J0ZWRfc2d0X2luZm8gKmltcG9ydGVkOwpAQCAtMTMwLDkgKzEyOCw4IEBAIHN0YXRpYyBz dHJ1Y3Qgc2dfdGFibGUqIGh5cGVyX2RtYWJ1Zl9vcHNfbWFwKHN0cnVjdCBkbWFfYnVmX2F0dGFj aG1lbnQgKmF0dGFjaG1lCiAJLyogZXh0cmFjdCBwYWdlcyBmcm9tIHNndCAqLwogCXBnX2luZm8g PSBoeXBlcl9kbWFidWZfZXh0X3BncyhpbXBvcnRlZC0+c2d0KTsKIAotCWlmICghcGdfaW5mbykg eworCWlmICghcGdfaW5mbykKIAkJcmV0dXJuIE5VTEw7Ci0JfQogCiAJLyogY3JlYXRlIGEgbmV3 IHNnX3RhYmxlIHdpdGggZXh0cmFjdGVkIHBhZ2VzICovCiAJc3QgPSBoeXBlcl9kbWFidWZfY3Jl YXRlX3NndChwZ19pbmZvLT5wZ3MsIHBnX2luZm8tPmZyc3Rfb2ZzdCwKQEAgLTE0MCw4ICsxMzcs OCBAQCBzdGF0aWMgc3RydWN0IHNnX3RhYmxlKiBoeXBlcl9kbWFidWZfb3BzX21hcChzdHJ1Y3Qg ZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2htZQogCWlmICghc3QpCiAJCWdvdG8gZXJyX2ZyZWVf c2c7CiAKLSAgICAgICAgaWYgKCFkbWFfbWFwX3NnKGF0dGFjaG1lbnQtPmRldiwgc3QtPnNnbCwg c3QtPm5lbnRzLCBkaXIpKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyX2ZyZWVfc2c7CisJaWYg KCFkbWFfbWFwX3NnKGF0dGFjaG1lbnQtPmRldiwgc3QtPnNnbCwgc3QtPm5lbnRzLCBkaXIpKQor CQlnb3RvIGVycl9mcmVlX3NnOwogCiAJcmV0ID0gaHlwZXJfZG1hYnVmX3N5bmNfcmVxdWVzdChp bXBvcnRlZC0+aGlkLAogCQkJCQlIWVBFUl9ETUFCVUZfT1BTX01BUCk7CkBAIC0xOTYsOSArMTkz LDggQEAgc3RhdGljIHZvaWQgaHlwZXJfZG1hYnVmX29wc19yZWxlYXNlKHN0cnVjdCBkbWFfYnVm ICpkbWFfYnVmKQogCiAJaW1wb3J0ZWQgPSAoc3RydWN0IGltcG9ydGVkX3NndF9pbmZvICopZG1h X2J1Zi0+cHJpdjsKIAotCWlmICghZG1hYnVmX3JlZmNvdW50KGltcG9ydGVkLT5kbWFfYnVmKSkg eworCWlmICghZG1hYnVmX3JlZmNvdW50KGltcG9ydGVkLT5kbWFfYnVmKSkKIAkJaW1wb3J0ZWQt PmRtYV9idWYgPSBOVUxMOwotCX0KIAogCWltcG9ydGVkLT5pbXBvcnRlcnMtLTsKIApAQCAtMjE5 LDggKzIxNSw5IEBAIHN0YXRpYyB2b2lkIGh5cGVyX2RtYWJ1Zl9vcHNfcmVsZWFzZShzdHJ1Y3Qg ZG1hX2J1ZiAqZG1hX2J1ZikKIAkJCQkJSFlQRVJfRE1BQlVGX09QU19SRUxFQVNFKTsKIAogCS8q Ci0JICogQ2hlY2sgaWYgYnVmZmVyIGlzIHN0aWxsIHZhbGlkIGFuZCBpZiBub3QgcmVtb3ZlIGl0 IGZyb20gaW1wb3J0ZWQgbGlzdC4KLQkgKiBUaGF0IGhhcyB0byBiZSBkb25lIGFmdGVyIHNlbmRp bmcgc3luYyByZXF1ZXN0CisJICogQ2hlY2sgaWYgYnVmZmVyIGlzIHN0aWxsIHZhbGlkIGFuZCBp ZiBub3QgcmVtb3ZlIGl0CisJICogZnJvbSBpbXBvcnRlZCBsaXN0LiBUaGF0IGhhcyB0byBiZSBk b25lIGFmdGVyIHNlbmRpbmcKKwkgKiBzeW5jIHJlcXVlc3QKIAkgKi8KIAlpZiAoZmluaXNoKSB7 CiAJCWh5cGVyX2RtYWJ1Zl9yZW1vdmVfaW1wb3J0ZWQoaW1wb3J0ZWQtPmhpZCk7CkBAIC0yMjgs NyArMjI1LDggQEAgc3RhdGljIHZvaWQgaHlwZXJfZG1hYnVmX29wc19yZWxlYXNlKHN0cnVjdCBk bWFfYnVmICpkbWFfYnVmKQogCX0KIH0KIAotc3RhdGljIGludCBoeXBlcl9kbWFidWZfb3BzX2Jl Z2luX2NwdV9hY2Nlc3Moc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwgZW51bSBkbWFfZGF0YV9kaXJl Y3Rpb24gZGlyKQorc3RhdGljIGludCBoeXBlcl9kbWFidWZfb3BzX2JlZ2luX2NwdV9hY2Nlc3Mo c3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwKKwkJCQkJICAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlv biBkaXIpCiB7CiAJc3RydWN0IGltcG9ydGVkX3NndF9pbmZvICppbXBvcnRlZDsKIAlpbnQgcmV0 OwpAQCAtMjQ0LDcgKzI0Miw4IEBAIHN0YXRpYyBpbnQgaHlwZXJfZG1hYnVmX29wc19iZWdpbl9j cHVfYWNjZXNzKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIGVudW0gZG1hX2RhCiAJcmV0dXJuIHJl dDsKIH0KIAotc3RhdGljIGludCBoeXBlcl9kbWFidWZfb3BzX2VuZF9jcHVfYWNjZXNzKHN0cnVj dCBkbWFfYnVmICpkbWFidWYsIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKK3N0YXRpYyBp bnQgaHlwZXJfZG1hYnVmX29wc19lbmRfY3B1X2FjY2VzcyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVm LAorCQkJCQkgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpCiB7CiAJc3RydWN0IGltcG9y dGVkX3NndF9pbmZvICppbXBvcnRlZDsKIAlpbnQgcmV0OwpAQCAtMjYwLDcgKzI1OSw4IEBAIHN0 YXRpYyBpbnQgaHlwZXJfZG1hYnVmX29wc19lbmRfY3B1X2FjY2VzcyhzdHJ1Y3QgZG1hX2J1ZiAq ZG1hYnVmLCBlbnVtIGRtYV9kYXRhCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkICpoeXBl cl9kbWFidWZfb3BzX2ttYXBfYXRvbWljKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHVuc2lnbmVk IGxvbmcgcGdudW0pCitzdGF0aWMgdm9pZCAqaHlwZXJfZG1hYnVmX29wc19rbWFwX2F0b21pYyhz dHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAorCQkJCQkgIHVuc2lnbmVkIGxvbmcgcGdudW0pCiB7CiAJ c3RydWN0IGltcG9ydGVkX3NndF9pbmZvICppbXBvcnRlZDsKIAlpbnQgcmV0OwpAQCAtMjczLDEw ICsyNzMsMTIgQEAgc3RhdGljIHZvaWQgKmh5cGVyX2RtYWJ1Zl9vcHNfa21hcF9hdG9taWMoc3Ry dWN0IGRtYV9idWYgKmRtYWJ1ZiwgdW5zaWduZWQgbG9uZwogCXJldCA9IGh5cGVyX2RtYWJ1Zl9z eW5jX3JlcXVlc3QoaW1wb3J0ZWQtPmhpZCwKIAkJCQkJSFlQRVJfRE1BQlVGX09QU19LTUFQX0FU T01JQyk7CiAKLQlyZXR1cm4gTlVMTDsgLyogZm9yIG5vdyBOVUxMLi4gbmVlZCB0byByZXR1cm4g dGhlIGFkZHJlc3Mgb2YgbWFwcGVkIHJlZ2lvbiAqLworCS8qIFRPRE86IE5VTEwgZm9yIG5vdy4g TmVlZCB0byByZXR1cm4gdGhlIGFkZHIgb2YgbWFwcGVkIHJlZ2lvbiAqLworCXJldHVybiBOVUxM OwogfQogCi1zdGF0aWMgdm9pZCBoeXBlcl9kbWFidWZfb3BzX2t1bm1hcF9hdG9taWMoc3RydWN0 IGRtYV9idWYgKmRtYWJ1ZiwgdW5zaWduZWQgbG9uZyBwZ251bSwgdm9pZCAqdmFkZHIpCitzdGF0 aWMgdm9pZCBoeXBlcl9kbWFidWZfb3BzX2t1bm1hcF9hdG9taWMoc3RydWN0IGRtYV9idWYgKmRt YWJ1ZiwKKwkJCQkJICAgdW5zaWduZWQgbG9uZyBwZ251bSwgdm9pZCAqdmFkZHIpCiB7CiAJc3Ry dWN0IGltcG9ydGVkX3NndF9pbmZvICppbXBvcnRlZDsKIAlpbnQgcmV0OwpAQCAtMzIyLDcgKzMy NCw4IEBAIHN0YXRpYyB2b2lkIGh5cGVyX2RtYWJ1Zl9vcHNfa3VubWFwKHN0cnVjdCBkbWFfYnVm ICpkbWFidWYsIHVuc2lnbmVkIGxvbmcgcGdudW0sCiAJCQkJCUhZUEVSX0RNQUJVRl9PUFNfS1VO TUFQKTsKIH0KIAotc3RhdGljIGludCBoeXBlcl9kbWFidWZfb3BzX21tYXAoc3RydWN0IGRtYV9i dWYgKmRtYWJ1Ziwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCitzdGF0aWMgaW50IGh5cGVy X2RtYWJ1Zl9vcHNfbW1hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAorCQkJCSBzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKnZtYSkKIHsKIAlzdHJ1Y3QgaW1wb3J0ZWRfc2d0X2luZm8gKmltcG9ydGVk OwogCWludCByZXQ7CkBAIC0zNzQsOCArMzc3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkbWFf YnVmX29wcyBoeXBlcl9kbWFidWZfb3BzID0gewogCS5tYXBfZG1hX2J1ZiA9IGh5cGVyX2RtYWJ1 Zl9vcHNfbWFwLAogCS51bm1hcF9kbWFfYnVmID0gaHlwZXJfZG1hYnVmX29wc191bm1hcCwKIAku cmVsZWFzZSA9IGh5cGVyX2RtYWJ1Zl9vcHNfcmVsZWFzZSwKLQkuYmVnaW5fY3B1X2FjY2VzcyA9 ICh2b2lkKiloeXBlcl9kbWFidWZfb3BzX2JlZ2luX2NwdV9hY2Nlc3MsCi0JLmVuZF9jcHVfYWNj ZXNzID0gKHZvaWQqKWh5cGVyX2RtYWJ1Zl9vcHNfZW5kX2NwdV9hY2Nlc3MsCisJLmJlZ2luX2Nw dV9hY2Nlc3MgPSAodm9pZCAqKWh5cGVyX2RtYWJ1Zl9vcHNfYmVnaW5fY3B1X2FjY2VzcywKKwku ZW5kX2NwdV9hY2Nlc3MgPSAodm9pZCAqKWh5cGVyX2RtYWJ1Zl9vcHNfZW5kX2NwdV9hY2Nlc3Ms CiAJLm1hcF9hdG9taWMgPSBoeXBlcl9kbWFidWZfb3BzX2ttYXBfYXRvbWljLAogCS51bm1hcF9h dG9taWMgPSBoeXBlcl9kbWFidWZfb3BzX2t1bm1hcF9hdG9taWMsCiAJLm1hcCA9IGh5cGVyX2Rt YWJ1Zl9vcHNfa21hcCwKQEAgLTM5NSw5ICszOTgsOCBAQCBpbnQgaHlwZXJfZG1hYnVmX2V4cG9y dF9mZChzdHJ1Y3QgaW1wb3J0ZWRfc2d0X2luZm8gKmltcG9ydGVkLCBpbnQgZmxhZ3MpCiAJICov CiAJaHlwZXJfZG1hYnVmX2V4cG9ydF9kbWFfYnVmKGltcG9ydGVkKTsKIAotCWlmIChpbXBvcnRl ZC0+ZG1hX2J1ZikgeworCWlmIChpbXBvcnRlZC0+ZG1hX2J1ZikKIAkJZmQgPSBkbWFfYnVmX2Zk KGltcG9ydGVkLT5kbWFfYnVmLCBmbGFncyk7Ci0JfQogCiAJcmV0dXJuIGZkOwogfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9xdWVyeS5jIGIvZHJp dmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9xdWVyeS5jCmluZGV4IDM2ZTg4OGMu LjFmMmY1NmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFi dWZfcXVlcnkuYworKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX3F1 ZXJ5LmMKQEAgLTM2LDYzICszNiw2MyBAQAogCSgobmVudHMpKlBBR0VfU0laRSAtIChmaXJzdF9v ZmZzZXQpIC0gUEFHRV9TSVpFICsgKGxhc3RfbGVuKSkKIAogaW50IGh5cGVyX2RtYWJ1Zl9xdWVy eV9leHBvcnRlZChzdHJ1Y3QgZXhwb3J0ZWRfc2d0X2luZm8gKmV4cG9ydGVkLAotCQkJCWludCBx dWVyeSwgdW5zaWduZWQgbG9uZyogaW5mbykKKwkJCQlpbnQgcXVlcnksIHVuc2lnbmVkIGxvbmcg KmluZm8pCiB7Ci0Jc3dpdGNoIChxdWVyeSkKLQl7Ci0JCWNhc2UgSFlQRVJfRE1BQlVGX1FVRVJZ X1RZUEU6Ci0JCQkqaW5mbyA9IEVYUE9SVEVEOwotCQkJYnJlYWs7Ci0KLQkJLyogZXhwb3J0aW5n IGRvbWFpbiBvZiB0aGlzIHNwZWNpZmljIGRtYWJ1ZiovCi0JCWNhc2UgSFlQRVJfRE1BQlVGX1FV RVJZX0VYUE9SVEVSOgotCQkJKmluZm8gPSBIWVBFUl9ETUFCVUZfRE9NX0lEKGV4cG9ydGVkLT5o aWQpOwotCQkJYnJlYWs7Ci0KLQkJLyogaW1wb3J0aW5nIGRvbWFpbiBvZiB0aGlzIHNwZWNpZmlj IGRtYWJ1ZiAqLwotCQljYXNlIEhZUEVSX0RNQUJVRl9RVUVSWV9JTVBPUlRFUjoKLQkJCSppbmZv ID0gZXhwb3J0ZWQtPnJkb21pZDsKLQkJCWJyZWFrOwotCi0JCS8qIHNpemUgb2YgZG1hYnVmIGlu IGJ5dGUgKi8KLQkJY2FzZSBIWVBFUl9ETUFCVUZfUVVFUllfU0laRToKLQkJCSppbmZvID0gZXhw b3J0ZWQtPmRtYV9idWYtPnNpemU7Ci0JCQlicmVhazsKLQotCQkvKiB3aGV0aGVyIHRoZSBidWZm ZXIgaXMgdXNlZCBieSBpbXBvcnRlciAqLwotCQljYXNlIEhZUEVSX0RNQUJVRl9RVUVSWV9CVVNZ OgotCQkJKmluZm8gPSAoZXhwb3J0ZWQtPmFjdGl2ZSA+IDApOwotCQkJYnJlYWs7Ci0KLQkJLyog d2hldGhlciB0aGUgYnVmZmVyIGlzIHVuZXhwb3J0ZWQgKi8KLQkJY2FzZSBIWVBFUl9ETUFCVUZf UVVFUllfVU5FWFBPUlRFRDoKLQkJCSppbmZvID0gIWV4cG9ydGVkLT52YWxpZDsKLQkJCWJyZWFr OwotCi0JCS8qIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyBzY2hlZHVsZWQgdG8gYmUgdW5leHBvcnRl ZCAqLwotCQljYXNlIEhZUEVSX0RNQUJVRl9RVUVSWV9ERUxBWUVEX1VORVhQT1JURUQ6Ci0JCQkq aW5mbyA9ICFleHBvcnRlZC0+dW5leHBvcnRfc2NoZWQ7Ci0JCQlicmVhazsKLQotCQkvKiBzaXpl IG9mIHByaXZhdGUgaW5mbyBhdHRhY2hlZCB0byBidWZmZXIgKi8KLQkJY2FzZSBIWVBFUl9ETUFC VUZfUVVFUllfUFJJVl9JTkZPX1NJWkU6Ci0JCQkqaW5mbyA9IGV4cG9ydGVkLT5zel9wcml2Owot CQkJYnJlYWs7Ci0KLQkJLyogY29weSBwcml2YXRlIGluZm8gYXR0YWNoZWQgdG8gYnVmZmVyICov Ci0JCWNhc2UgSFlQRVJfRE1BQlVGX1FVRVJZX1BSSVZfSU5GTzoKLQkJCWlmIChleHBvcnRlZC0+ c3pfcHJpdiA+IDApIHsKLQkJCQlpbnQgbjsKLQkJCQluID0gY29weV90b191c2VyKCh2b2lkIF9f dXNlciopICppbmZvLAotCQkJCQkJZXhwb3J0ZWQtPnByaXYsCi0JCQkJCQlleHBvcnRlZC0+c3pf cHJpdik7Ci0JCQkJaWYgKG4gIT0gMCkKLQkJCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCQl9Ci0JCQli cmVhazsKLQotCQlkZWZhdWx0OgotCQkJcmV0dXJuIC1FSU5WQUw7CisJc3dpdGNoIChxdWVyeSkg eworCWNhc2UgSFlQRVJfRE1BQlVGX1FVRVJZX1RZUEU6CisJCSppbmZvID0gRVhQT1JURUQ7CisJ CWJyZWFrOworCisJLyogZXhwb3J0aW5nIGRvbWFpbiBvZiB0aGlzIHNwZWNpZmljIGRtYWJ1Ziov CisJY2FzZSBIWVBFUl9ETUFCVUZfUVVFUllfRVhQT1JURVI6CisJCSppbmZvID0gSFlQRVJfRE1B QlVGX0RPTV9JRChleHBvcnRlZC0+aGlkKTsKKwkJYnJlYWs7CisKKwkvKiBpbXBvcnRpbmcgZG9t YWluIG9mIHRoaXMgc3BlY2lmaWMgZG1hYnVmICovCisJY2FzZSBIWVBFUl9ETUFCVUZfUVVFUllf SU1QT1JURVI6CisJCSppbmZvID0gZXhwb3J0ZWQtPnJkb21pZDsKKwkJYnJlYWs7CisKKwkvKiBz aXplIG9mIGRtYWJ1ZiBpbiBieXRlICovCisJY2FzZSBIWVBFUl9ETUFCVUZfUVVFUllfU0laRToK KwkJKmluZm8gPSBleHBvcnRlZC0+ZG1hX2J1Zi0+c2l6ZTsKKwkJYnJlYWs7CisKKwkvKiB3aGV0 aGVyIHRoZSBidWZmZXIgaXMgdXNlZCBieSBpbXBvcnRlciAqLworCWNhc2UgSFlQRVJfRE1BQlVG X1FVRVJZX0JVU1k6CisJCSppbmZvID0gKGV4cG9ydGVkLT5hY3RpdmUgPiAwKTsKKwkJYnJlYWs7 CisKKwkvKiB3aGV0aGVyIHRoZSBidWZmZXIgaXMgdW5leHBvcnRlZCAqLworCWNhc2UgSFlQRVJf RE1BQlVGX1FVRVJZX1VORVhQT1JURUQ6CisJCSppbmZvID0gIWV4cG9ydGVkLT52YWxpZDsKKwkJ YnJlYWs7CisKKwkvKiB3aGV0aGVyIHRoZSBidWZmZXIgaXMgc2NoZWR1bGVkIHRvIGJlIHVuZXhw b3J0ZWQgKi8KKwljYXNlIEhZUEVSX0RNQUJVRl9RVUVSWV9ERUxBWUVEX1VORVhQT1JURUQ6CisJ CSppbmZvID0gIWV4cG9ydGVkLT51bmV4cG9ydF9zY2hlZDsKKwkJYnJlYWs7CisKKwkvKiBzaXpl IG9mIHByaXZhdGUgaW5mbyBhdHRhY2hlZCB0byBidWZmZXIgKi8KKwljYXNlIEhZUEVSX0RNQUJV Rl9RVUVSWV9QUklWX0lORk9fU0laRToKKwkJKmluZm8gPSBleHBvcnRlZC0+c3pfcHJpdjsKKwkJ YnJlYWs7CisKKwkvKiBjb3B5IHByaXZhdGUgaW5mbyBhdHRhY2hlZCB0byBidWZmZXIgKi8KKwlj YXNlIEhZUEVSX0RNQUJVRl9RVUVSWV9QUklWX0lORk86CisJCWlmIChleHBvcnRlZC0+c3pfcHJp diA+IDApIHsKKwkJCWludCBuOworCisJCQluID0gY29weV90b191c2VyKCh2b2lkIF9fdXNlciAq KSAqaW5mbywKKwkJCQkJZXhwb3J0ZWQtPnByaXYsCisJCQkJCWV4cG9ydGVkLT5zel9wcml2KTsK KwkJCWlmIChuICE9IDApCisJCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwkJYnJlYWs7CisKKwlk ZWZhdWx0OgorCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKIAlyZXR1cm4gMDsKQEAgLTEwMiw2NiAr MTAyLDcwIEBAIGludCBoeXBlcl9kbWFidWZfcXVlcnlfZXhwb3J0ZWQoc3RydWN0IGV4cG9ydGVk X3NndF9pbmZvICpleHBvcnRlZCwKIGludCBoeXBlcl9kbWFidWZfcXVlcnlfaW1wb3J0ZWQoc3Ry dWN0IGltcG9ydGVkX3NndF9pbmZvICppbXBvcnRlZCwKIAkJCQlpbnQgcXVlcnksIHVuc2lnbmVk IGxvbmcgKmluZm8pCiB7Ci0Jc3dpdGNoIChxdWVyeSkKLQl7Ci0JCWNhc2UgSFlQRVJfRE1BQlVG X1FVRVJZX1RZUEU6Ci0JCQkqaW5mbyA9IElNUE9SVEVEOwotCQkJYnJlYWs7Ci0KLQkJLyogZXhw b3J0aW5nIGRvbWFpbiBvZiB0aGlzIHNwZWNpZmljIGRtYWJ1ZiovCi0JCWNhc2UgSFlQRVJfRE1B QlVGX1FVRVJZX0VYUE9SVEVSOgotCQkJKmluZm8gPSBIWVBFUl9ETUFCVUZfRE9NX0lEKGltcG9y dGVkLT5oaWQpOwotCQkJYnJlYWs7Ci0KLQkJLyogaW1wb3J0aW5nIGRvbWFpbiBvZiB0aGlzIHNw ZWNpZmljIGRtYWJ1ZiAqLwotCQljYXNlIEhZUEVSX0RNQUJVRl9RVUVSWV9JTVBPUlRFUjoKLQkJ CSppbmZvID0gaHlfZHJ2X3ByaXYtPmRvbWlkOwotCQkJYnJlYWs7Ci0KLQkJLyogc2l6ZSBvZiBk bWFidWYgaW4gYnl0ZSAqLwotCQljYXNlIEhZUEVSX0RNQUJVRl9RVUVSWV9TSVpFOgotCQkJaWYg KGltcG9ydGVkLT5kbWFfYnVmKSB7Ci0JCQkJLyogaWYgbG9jYWwgZG1hX2J1ZiBpcyBjcmVhdGVk IChpZiBpdCdzIGV2ZXIgbWFwcGVkKSwKLQkJCQkgKiByZXRyaWV2ZSBpdCBkaXJlY3RseSBmcm9t IHN0cnVjdCBkbWFfYnVmICoKLQkJCQkgKi8KLQkJCQkqaW5mbyA9IGltcG9ydGVkLT5kbWFfYnVm LT5zaXplOwotCQkJfSBlbHNlIHsKLQkJCQkvKiBjYWxjdWF0ZSBpdCBmcm9tIGdpdmVuIG5lbnRz LCBmcnN0X29mc3QgYW5kIGxhc3RfbGVuICovCi0JCQkJKmluZm8gPSBIWVBFUl9ETUFCVUZfU0la RShpbXBvcnRlZC0+bmVudHMsCi0JCQkJCQkJICBpbXBvcnRlZC0+ZnJzdF9vZnN0LAotCQkJCQkJ CSAgaW1wb3J0ZWQtPmxhc3RfbGVuKTsKLQkJCX0KLQkJCWJyZWFrOwotCi0JCS8qIHdoZXRoZXIg dGhlIGJ1ZmZlciBpcyB1c2VkIG9yIG5vdCAqLwotCQljYXNlIEhZUEVSX0RNQUJVRl9RVUVSWV9C VVNZOgotCQkJLyogY2hlY2tzIGlmIGl0J3MgdXNlZCBieSBpbXBvcnRlciAqLwotCQkJKmluZm8g PSAoaW1wb3J0ZWQtPmltcG9ydGVycyA+IDApOwotCQkJYnJlYWs7Ci0KLQkJLyogd2hldGhlciB0 aGUgYnVmZmVyIGlzIHVuZXhwb3J0ZWQgKi8KLQkJY2FzZSBIWVBFUl9ETUFCVUZfUVVFUllfVU5F WFBPUlRFRDoKLQkJCSppbmZvID0gIWltcG9ydGVkLT52YWxpZDsKLQkJCWJyZWFrOwotCQkvKiBz aXplIG9mIHByaXZhdGUgaW5mbyBhdHRhY2hlZCB0byBidWZmZXIgKi8KLQkJY2FzZSBIWVBFUl9E TUFCVUZfUVVFUllfUFJJVl9JTkZPX1NJWkU6Ci0JCQkqaW5mbyA9IGltcG9ydGVkLT5zel9wcml2 OwotCQkJYnJlYWs7Ci0KLQkJLyogY29weSBwcml2YXRlIGluZm8gYXR0YWNoZWQgdG8gYnVmZmVy ICovCi0JCWNhc2UgSFlQRVJfRE1BQlVGX1FVRVJZX1BSSVZfSU5GTzoKLQkJCWlmIChpbXBvcnRl ZC0+c3pfcHJpdiA+IDApIHsKLQkJCQlpbnQgbjsKLQkJCQluID0gY29weV90b191c2VyKCh2b2lk IF9fdXNlciopICppbmZvLAotCQkJCQkJaW1wb3J0ZWQtPnByaXYsCi0JCQkJCQlpbXBvcnRlZC0+ c3pfcHJpdik7Ci0JCQkJaWYgKG4gIT0gMCkKLQkJCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCQl9Ci0J CQlicmVhazsKLQotCQlkZWZhdWx0OgotCQkJcmV0dXJuIC1FSU5WQUw7CisJc3dpdGNoIChxdWVy eSkgeworCWNhc2UgSFlQRVJfRE1BQlVGX1FVRVJZX1RZUEU6CisJCSppbmZvID0gSU1QT1JURUQ7 CisJCWJyZWFrOworCisJLyogZXhwb3J0aW5nIGRvbWFpbiBvZiB0aGlzIHNwZWNpZmljIGRtYWJ1 ZiovCisJY2FzZSBIWVBFUl9ETUFCVUZfUVVFUllfRVhQT1JURVI6CisJCSppbmZvID0gSFlQRVJf RE1BQlVGX0RPTV9JRChpbXBvcnRlZC0+aGlkKTsKKwkJYnJlYWs7CisKKwkvKiBpbXBvcnRpbmcg ZG9tYWluIG9mIHRoaXMgc3BlY2lmaWMgZG1hYnVmICovCisJY2FzZSBIWVBFUl9ETUFCVUZfUVVF UllfSU1QT1JURVI6CisJCSppbmZvID0gaHlfZHJ2X3ByaXYtPmRvbWlkOworCQlicmVhazsKKwor CS8qIHNpemUgb2YgZG1hYnVmIGluIGJ5dGUgKi8KKwljYXNlIEhZUEVSX0RNQUJVRl9RVUVSWV9T SVpFOgorCQlpZiAoaW1wb3J0ZWQtPmRtYV9idWYpIHsKKwkJCS8qIGlmIGxvY2FsIGRtYV9idWYg aXMgY3JlYXRlZCAoaWYgaXQncworCQkJICogZXZlciBtYXBwZWQpLCByZXRyaWV2ZSBpdCBkaXJl Y3RseQorCQkJICogZnJvbSBzdHJ1Y3QgZG1hX2J1ZiAqCisJCQkgKi8KKwkJCSppbmZvID0gaW1w b3J0ZWQtPmRtYV9idWYtPnNpemU7CisJCX0gZWxzZSB7CisJCQkvKiBjYWxjdWF0ZSBpdCBmcm9t IGdpdmVuIG5lbnRzLCBmcnN0X29mc3QKKwkJCSAqIGFuZCBsYXN0X2xlbgorCQkJICovCisJCQkq aW5mbyA9IEhZUEVSX0RNQUJVRl9TSVpFKGltcG9ydGVkLT5uZW50cywKKwkJCQkJCSAgaW1wb3J0 ZWQtPmZyc3Rfb2ZzdCwKKwkJCQkJCSAgaW1wb3J0ZWQtPmxhc3RfbGVuKTsKKwkJfQorCQlicmVh azsKKworCS8qIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyB1c2VkIG9yIG5vdCAqLworCWNhc2UgSFlQ RVJfRE1BQlVGX1FVRVJZX0JVU1k6CisJCS8qIGNoZWNrcyBpZiBpdCdzIHVzZWQgYnkgaW1wb3J0 ZXIgKi8KKwkJKmluZm8gPSAoaW1wb3J0ZWQtPmltcG9ydGVycyA+IDApOworCQlicmVhazsKKwor CS8qIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyB1bmV4cG9ydGVkICovCisJY2FzZSBIWVBFUl9ETUFC VUZfUVVFUllfVU5FWFBPUlRFRDoKKwkJKmluZm8gPSAhaW1wb3J0ZWQtPnZhbGlkOworCQlicmVh azsKKworCS8qIHNpemUgb2YgcHJpdmF0ZSBpbmZvIGF0dGFjaGVkIHRvIGJ1ZmZlciAqLworCWNh c2UgSFlQRVJfRE1BQlVGX1FVRVJZX1BSSVZfSU5GT19TSVpFOgorCQkqaW5mbyA9IGltcG9ydGVk LT5zel9wcml2OworCQlicmVhazsKKworCS8qIGNvcHkgcHJpdmF0ZSBpbmZvIGF0dGFjaGVkIHRv IGJ1ZmZlciAqLworCWNhc2UgSFlQRVJfRE1BQlVGX1FVRVJZX1BSSVZfSU5GTzoKKwkJaWYgKGlt cG9ydGVkLT5zel9wcml2ID4gMCkgeworCQkJaW50IG47CisKKwkJCW4gPSBjb3B5X3RvX3VzZXIo KHZvaWQgX191c2VyICopKmluZm8sCisJCQkJCWltcG9ydGVkLT5wcml2LAorCQkJCQlpbXBvcnRl ZC0+c3pfcHJpdik7CisJCQlpZiAobiAhPSAwKQorCQkJCXJldHVybiAtRUlOVkFMOworCQl9CisJ CWJyZWFrOworCisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCiAJcmV0dXJuIDA7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX3JlbW90 ZV9zeW5jLmMgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX3JlbW90ZV9z eW5jLmMKaW5kZXggMDFlYzk4Yy4uYzlmZTA0MCAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vaHlw ZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9yZW1vdGVfc3luYy5jCisrKyBiL2RyaXZlcnMveGVuL2h5 cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfcmVtb3RlX3N5bmMuYwpAQCAtNzYsMTEgKzc2LDggQEAg aW50IGh5cGVyX2RtYWJ1Zl9yZW1vdGVfc3luYyhoeXBlcl9kbWFidWZfaWRfdCBoaWQsIGludCBv cHMpCiAJY2FzZSBIWVBFUl9ETUFCVUZfT1BTX0FUVEFDSDoKIAkJYXR0YWNobCA9IGtjYWxsb2Mo MSwgc2l6ZW9mKCphdHRhY2hsKSwgR0ZQX0tFUk5FTCk7CiAKLQkJaWYgKCFhdHRhY2hsKSB7Ci0J CQlkZXZfZXJyKGh5X2Rydl9wcml2LT5kZXYsCi0JCQkJInJlbW90ZSBzeW5jOjpIWVBFUl9ETUFC VUZfT1BTX0FUVEFDSFxuIik7CisJCWlmICghYXR0YWNobCkKIAkJCXJldHVybiAtRU5PTUVNOwot CQl9CiAKIAkJYXR0YWNobC0+YXR0YWNoID0gZG1hX2J1Zl9hdHRhY2goZXhwb3J0ZWQtPmRtYV9i dWYsCiAJCQkJCQkgaHlfZHJ2X3ByaXYtPmRldik7CkBAIC0xMjYsMTMgKzEyMywxMSBAQCBpbnQg aHlwZXJfZG1hYnVmX3JlbW90ZV9zeW5jKGh5cGVyX2RtYWJ1Zl9pZF90IGhpZCwgaW50IG9wcykK IAogCQlzZ3RsID0ga2NhbGxvYygxLCBzaXplb2YoKnNndGwpLCBHRlBfS0VSTkVMKTsKIAotCQlp ZiAoIXNndGwpIHsKLQkJCWRldl9lcnIoaHlfZHJ2X3ByaXYtPmRldiwKLQkJCQkicmVtb3RlIHN5 bmM6OkhZUEVSX0RNQUJVRl9PUFNfTUFQXG4iKTsKKwkJaWYgKCFzZ3RsKQogCQkJcmV0dXJuIC1F Tk9NRU07Ci0JCX0KIAotCQlzZ3RsLT5zZ3QgPSBkbWFfYnVmX21hcF9hdHRhY2htZW50KGF0dGFj aGwtPmF0dGFjaCwgRE1BX0JJRElSRUNUSU9OQUwpOworCQlzZ3RsLT5zZ3QgPSBkbWFfYnVmX21h cF9hdHRhY2htZW50KGF0dGFjaGwtPmF0dGFjaCwKKwkJCQkJCSAgIERNQV9CSURJUkVDVElPTkFM KTsKIAkJaWYgKCFzZ3RsLT5zZ3QpIHsKIAkJCWtmcmVlKHNndGwpOwogCQkJZGV2X2VycihoeV9k cnZfcHJpdi0+ZGV2LApAQCAtMTQ4LDcgKzE0Myw3IEBAIGludCBoeXBlcl9kbWFidWZfcmVtb3Rl X3N5bmMoaHlwZXJfZG1hYnVmX2lkX3QgaGlkLCBpbnQgb3BzKQogCQkJZGV2X2VycihoeV9kcnZf cHJpdi0+ZGV2LAogCQkJCSJyZW1vdGUgc3luYzo6SFlQRVJfRE1BQlVGX09QU19VTk1BUFxuIik7 CiAJCQlkZXZfZXJyKGh5X2Rydl9wcml2LT5kZXYsCi0JCQkJIm5vIG1vcmUgU0dUIG9yIGF0dGFj aG1lbnQgbGVmdCB0byBiZSB1bm1hcHBlZFxuIik7CisJCQkJIm5vIFNHVCBvciBhdHRhY2ggbGVm dCB0byBiZSB1bm1hcHBlZFxuIik7CiAJCQlyZXR1cm4gLUVGQVVMVDsKIAkJfQogCkBAIC0xNjUs MjMgKzE2MCwyOCBAQCBpbnQgaHlwZXJfZG1hYnVmX3JlbW90ZV9zeW5jKGh5cGVyX2RtYWJ1Zl9p ZF90IGhpZCwgaW50IG9wcykKIAogCWNhc2UgSFlQRVJfRE1BQlVGX09QU19SRUxFQVNFOgogCQlk ZXZfZGJnKGh5X2Rydl9wcml2LT5kZXYsCi0JCQkiQnVmZmVyIHtpZDolZCBrZXk6JWQgJWQgJWR9 IHJlbGVhc2VkLCByZWZlcmVuY2VzIGxlZnQ6ICVkXG4iLAotCQkJIGV4cG9ydGVkLT5oaWQuaWQs IGV4cG9ydGVkLT5oaWQucm5nX2tleVswXSwgZXhwb3J0ZWQtPmhpZC5ybmdfa2V5WzFdLAotCQkJ IGV4cG9ydGVkLT5oaWQucm5nX2tleVsyXSwgZXhwb3J0ZWQtPmFjdGl2ZSAtIDEpOworCQkJImlk OiVkIGtleTolZCAlZCAlZH0gcmVsZWFzZWQsIHJlZiBsZWZ0OiAlZFxuIiwKKwkJCSBleHBvcnRl ZC0+aGlkLmlkLCBleHBvcnRlZC0+aGlkLnJuZ19rZXlbMF0sCisJCQkgZXhwb3J0ZWQtPmhpZC5y bmdfa2V5WzFdLCBleHBvcnRlZC0+aGlkLnJuZ19rZXlbMl0sCisJCQkgZXhwb3J0ZWQtPmFjdGl2 ZSAtIDEpOworCisJCWV4cG9ydGVkLT5hY3RpdmUtLTsKIAotICAgICAgICAgICAgICAgIGV4cG9y dGVkLT5hY3RpdmUtLTsKLQkJLyogSWYgdGhlcmUgYXJlIHN0aWxsIGltcG9ydGVycyBqdXN0IGJy ZWFrLCBpZiBubyB0aGVuIGNvbnRpbnVlIHdpdGggZmluYWwgY2xlYW51cCAqLworCQkvKiBJZiB0 aGVyZSBhcmUgc3RpbGwgaW1wb3J0ZXJzIGp1c3QgYnJlYWssIGlmIG5vIHRoZW4KKwkJICogY29u dGludWUgd2l0aCBmaW5hbCBjbGVhbnVwCisJCSAqLwogCQlpZiAoZXhwb3J0ZWQtPmFjdGl2ZSkK IAkJCWJyZWFrOwogCi0JCS8qCi0JCSAqIEltcG9ydGVyIGp1c3QgcmVsZWFzZWQgYnVmZmVyIGZk LCBjaGVjayBpZiB0aGVyZSBpcyBhbnkgb3RoZXIgaW1wb3J0ZXIgc3RpbGwgdXNpbmcgaXQuCi0J CSAqIElmIG5vdCBhbmQgYnVmZmVyIHdhcyB1bmV4cG9ydGVkLCBjbGVhbiB1cCBzaGFyZWQgZGF0 YSBhbmQgcmVtb3ZlIHRoYXQgYnVmZmVyLgorCQkvKiBJbXBvcnRlciBqdXN0IHJlbGVhc2VkIGJ1 ZmZlciBmZCwgY2hlY2sgaWYgdGhlcmUgaXMKKwkJICogYW55IG90aGVyIGltcG9ydGVyIHN0aWxs IHVzaW5nIGl0LgorCQkgKiBJZiBub3QgYW5kIGJ1ZmZlciB3YXMgdW5leHBvcnRlZCwgY2xlYW4g dXAgc2hhcmVkCisJCSAqIGRhdGEgYW5kIHJlbW92ZSB0aGF0IGJ1ZmZlci4KIAkJICovCiAJCWRl dl9kYmcoaHlfZHJ2X3ByaXYtPmRldiwKIAkJCSJCdWZmZXIge2lkOiVkIGtleTolZCAlZCAlZH0g ZmluYWwgcmVsZWFzZWRcbiIsCi0JCQlleHBvcnRlZC0+aGlkLmlkLCBleHBvcnRlZC0+aGlkLnJu Z19rZXlbMF0sIGV4cG9ydGVkLT5oaWQucm5nX2tleVsxXSwKLQkJCWV4cG9ydGVkLT5oaWQucm5n X2tleVsyXSk7CisJCQlleHBvcnRlZC0+aGlkLmlkLCBleHBvcnRlZC0+aGlkLnJuZ19rZXlbMF0s CisJCQlleHBvcnRlZC0+aGlkLnJuZ19rZXlbMV0sIGV4cG9ydGVkLT5oaWQucm5nX2tleVsyXSk7 CiAKIAkJaWYgKCFleHBvcnRlZC0+dmFsaWQgJiYgIWV4cG9ydGVkLT5hY3RpdmUgJiYKIAkJICAg ICFleHBvcnRlZC0+dW5leHBvcnRfc2NoZWQpIHsKQEAgLTE5NSwxOSArMTk1LDIxIEBAIGludCBo eXBlcl9kbWFidWZfcmVtb3RlX3N5bmMoaHlwZXJfZG1hYnVmX2lkX3QgaGlkLCBpbnQgb3BzKQog CQlicmVhazsKIAogCWNhc2UgSFlQRVJfRE1BQlVGX09QU19CRUdJTl9DUFVfQUNDRVNTOgotCQly ZXQgPSBkbWFfYnVmX2JlZ2luX2NwdV9hY2Nlc3MoZXhwb3J0ZWQtPmRtYV9idWYsIERNQV9CSURJ UkVDVElPTkFMKTsKKwkJcmV0ID0gZG1hX2J1Zl9iZWdpbl9jcHVfYWNjZXNzKGV4cG9ydGVkLT5k bWFfYnVmLAorCQkJCQkgICAgICAgRE1BX0JJRElSRUNUSU9OQUwpOwogCQlpZiAocmV0KSB7CiAJ CQlkZXZfZXJyKGh5X2Rydl9wcml2LT5kZXYsCi0JCQkJInJlbW90ZSBzeW5jOjpIWVBFUl9ETUFC VUZfT1BTX0JFR0lOX0NQVV9BQ0NFU1NcbiIpOworCQkJCSJIWVBFUl9ETUFCVUZfT1BTX0JFR0lO X0NQVV9BQ0NFU1NcbiIpOwogCQkJcmV0dXJuIHJldDsKIAkJfQogCQlicmVhazsKIAogCWNhc2Ug SFlQRVJfRE1BQlVGX09QU19FTkRfQ1BVX0FDQ0VTUzoKLQkJcmV0ID0gZG1hX2J1Zl9lbmRfY3B1 X2FjY2VzcyhleHBvcnRlZC0+ZG1hX2J1ZiwgRE1BX0JJRElSRUNUSU9OQUwpOworCQlyZXQgPSBk bWFfYnVmX2VuZF9jcHVfYWNjZXNzKGV4cG9ydGVkLT5kbWFfYnVmLAorCQkJCQkgICAgIERNQV9C SURJUkVDVElPTkFMKTsKIAkJaWYgKHJldCkgewogCQkJZGV2X2VycihoeV9kcnZfcHJpdi0+ZGV2 LAotCQkJCSJyZW1vdGUgc3luYzo6SFlQRVJfRE1BQlVGX09QU19FTkRfQ1BVX0FDQ0VTU1xuIik7 CisJCQkJIkhZUEVSX0RNQUJVRl9PUFNfRU5EX0NQVV9BQ0NFU1NcbiIpOwogCQkJcmV0dXJuIHJl dDsKIAkJfQogCQlicmVhazsKQEAgLTIxNSwyMiArMjE3LDIxIEBAIGludCBoeXBlcl9kbWFidWZf cmVtb3RlX3N5bmMoaHlwZXJfZG1hYnVmX2lkX3QgaGlkLCBpbnQgb3BzKQogCWNhc2UgSFlQRVJf RE1BQlVGX09QU19LTUFQX0FUT01JQzoKIAljYXNlIEhZUEVSX0RNQUJVRl9PUFNfS01BUDoKIAkJ dmFfa21hcGwgPSBrY2FsbG9jKDEsIHNpemVvZigqdmFfa21hcGwpLCBHRlBfS0VSTkVMKTsKLQkJ aWYgKCF2YV9rbWFwbCkgewotCQkJZGV2X2VycihoeV9kcnZfcHJpdi0+ZGV2LAotCQkJCSJyZW1v dGUgc3luYzo6SFlQRVJfRE1BQlVGX09QU19LTUFQKF9BVE9NSUMpXG4iKTsKKwkJaWYgKCF2YV9r bWFwbCkKIAkJCXJldHVybiAtRU5PTUVNOwotCQl9CiAKIAkJLyogZHVtbXkga21hcHBpbmcgb2Yg MSBwYWdlICovCiAJCWlmIChvcHMgPT0gSFlQRVJfRE1BQlVGX09QU19LTUFQX0FUT01JQykKLQkJ CXZhX2ttYXBsLT52YWRkciA9IGRtYV9idWZfa21hcF9hdG9taWMoZXhwb3J0ZWQtPmRtYV9idWYs IDEpOworCQkJdmFfa21hcGwtPnZhZGRyID0gZG1hX2J1Zl9rbWFwX2F0b21pYygKKwkJCQkJCWV4 cG9ydGVkLT5kbWFfYnVmLCAxKTsKIAkJZWxzZQotCQkJdmFfa21hcGwtPnZhZGRyID0gZG1hX2J1 Zl9rbWFwKGV4cG9ydGVkLT5kbWFfYnVmLCAxKTsKKwkJCXZhX2ttYXBsLT52YWRkciA9IGRtYV9i dWZfa21hcCgKKwkJCQkJCWV4cG9ydGVkLT5kbWFfYnVmLCAxKTsKIAogCQlpZiAoIXZhX2ttYXBs LT52YWRkcikgewogCQkJa2ZyZWUodmFfa21hcGwpOwogCQkJZGV2X2VycihoeV9kcnZfcHJpdi0+ ZGV2LAotCQkJCSJyZW1vdGUgc3luYzo6SFlQRVJfRE1BQlVGX09QU19LTUFQKF9BVE9NSUMpXG4i KTsKKwkJCQkiSFlQRVJfRE1BQlVGX09QU19LTUFQKF9BVE9NSUMpXG4iKTsKIAkJCXJldHVybiAt RU5PTUVNOwogCQl9CiAJCWxpc3RfYWRkKCZ2YV9rbWFwbC0+bGlzdCwgJmV4cG9ydGVkLT52YV9r bWFwcGVkLT5saXN0KTsKQEAgLTI0MCw3ICsyNDEsNyBAQCBpbnQgaHlwZXJfZG1hYnVmX3JlbW90 ZV9zeW5jKGh5cGVyX2RtYWJ1Zl9pZF90IGhpZCwgaW50IG9wcykKIAljYXNlIEhZUEVSX0RNQUJV Rl9PUFNfS1VOTUFQOgogCQlpZiAobGlzdF9lbXB0eSgmZXhwb3J0ZWQtPnZhX2ttYXBwZWQtPmxp c3QpKSB7CiAJCQlkZXZfZXJyKGh5X2Rydl9wcml2LT5kZXYsCi0JCQkJInJlbW90ZSBzeW5jOjpI WVBFUl9ETUFCVUZfT1BTX0tVTk1BUChfQVRPTUlDKVxuIik7CisJCQkJIkhZUEVSX0RNQUJVRl9P UFNfS1VOTUFQKF9BVE9NSUMpXG4iKTsKIAkJCWRldl9lcnIoaHlfZHJ2X3ByaXYtPmRldiwKIAkJ CQkibm8gbW9yZSBkbWFidWYgVkEgdG8gYmUgZnJlZWRcbiIpOwogCQkJcmV0dXJuIC1FRkFVTFQ7 CkBAIC0yNTAsMTUgKzI1MSwxNyBAQCBpbnQgaHlwZXJfZG1hYnVmX3JlbW90ZV9zeW5jKGh5cGVy X2RtYWJ1Zl9pZF90IGhpZCwgaW50IG9wcykKIAkJCQkJICAgIHN0cnVjdCBrbWFwX3ZhZGRyX2xp c3QsIGxpc3QpOwogCQlpZiAoIXZhX2ttYXBsLT52YWRkcikgewogCQkJZGV2X2VycihoeV9kcnZf cHJpdi0+ZGV2LAotCQkJCSJyZW1vdGUgc3luYzo6SFlQRVJfRE1BQlVGX09QU19LVU5NQVAoX0FU T01JQylcbiIpOworCQkJCSJIWVBFUl9ETUFCVUZfT1BTX0tVTk1BUChfQVRPTUlDKVxuIik7CiAJ CQlyZXR1cm4gUFRSX0VSUih2YV9rbWFwbC0+dmFkZHIpOwogCQl9CiAKIAkJLyogdW5tYXBwaW5n IDEgcGFnZSAqLwogCQlpZiAob3BzID09IEhZUEVSX0RNQUJVRl9PUFNfS1VOTUFQX0FUT01JQykK LQkJCWRtYV9idWZfa3VubWFwX2F0b21pYyhleHBvcnRlZC0+ZG1hX2J1ZiwgMSwgdmFfa21hcGwt PnZhZGRyKTsKKwkJCWRtYV9idWZfa3VubWFwX2F0b21pYyhleHBvcnRlZC0+ZG1hX2J1ZiwKKwkJ CQkJICAgICAgMSwgdmFfa21hcGwtPnZhZGRyKTsKIAkJZWxzZQotCQkJZG1hX2J1Zl9rdW5tYXAo ZXhwb3J0ZWQtPmRtYV9idWYsIDEsIHZhX2ttYXBsLT52YWRkcik7CisJCQlkbWFfYnVmX2t1bm1h cChleHBvcnRlZC0+ZG1hX2J1ZiwKKwkJCQkgICAgICAgMSwgdmFfa21hcGwtPnZhZGRyKTsKIAog CQlsaXN0X2RlbCgmdmFfa21hcGwtPmxpc3QpOwogCQlrZnJlZSh2YV9rbWFwbCk7CkBAIC0yNjYs NyArMjY5LDggQEAgaW50IGh5cGVyX2RtYWJ1Zl9yZW1vdGVfc3luYyhoeXBlcl9kbWFidWZfaWRf dCBoaWQsIGludCBvcHMpCiAKIAljYXNlIEhZUEVSX0RNQUJVRl9PUFNfTU1BUDoKIAkJLyogY3Vy cmVudGx5IG5vdCBzdXBwb3J0ZWQ6IGxvb2tpbmcgZm9yIGEgd2F5IHRvIGNyZWF0ZQotCQkgKiBh IGR1bW15IHZtYSAqLworCQkgKiBhIGR1bW15IHZtYQorCQkgKi8KIAkJZGV2X3dhcm4oaHlfZHJ2 X3ByaXYtPmRldiwKIAkJCSAicmVtb3RlIHN5bmM6OnN5Y2hyb25pemVkIG1tYXAgaXMgbm90IHN1 cHBvcnRlZFxuIik7CiAJCWJyZWFrOwpAQCAtMjc0LDExICsyNzgsOCBAQCBpbnQgaHlwZXJfZG1h YnVmX3JlbW90ZV9zeW5jKGh5cGVyX2RtYWJ1Zl9pZF90IGhpZCwgaW50IG9wcykKIAljYXNlIEhZ UEVSX0RNQUJVRl9PUFNfVk1BUDoKIAkJdmFfdm1hcGwgPSBrY2FsbG9jKDEsIHNpemVvZigqdmFf dm1hcGwpLCBHRlBfS0VSTkVMKTsKIAotCQlpZiAoIXZhX3ZtYXBsKSB7Ci0JCQlkZXZfZXJyKGh5 X2Rydl9wcml2LT5kZXYsCi0JCQkJInJlbW90ZSBzeW5jOjpIWVBFUl9ETUFCVUZfT1BTX1ZNQVBc biIpOworCQlpZiAoIXZhX3ZtYXBsKQogCQkJcmV0dXJuIC1FTk9NRU07Ci0JCX0KIAogCQkvKiBk dW1teSB2bWFwcGluZyAqLwogCQl2YV92bWFwbC0+dmFkZHIgPSBkbWFfYnVmX3ZtYXAoZXhwb3J0 ZWQtPmRtYV9idWYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVy X2RtYWJ1Zl9zZ2xfcHJvYy5jIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1 Zl9zZ2xfcHJvYy5jCmluZGV4IDMxNWMzNTQuLmU5Mjk5ZTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv eGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfc2dsX3Byb2MuYworKysgYi9kcml2ZXJzL3hl bi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX3NnbF9wcm9jLmMKQEAgLTg5LDkgKzg5LDggQEAg c3RydWN0IHBhZ2VzX2luZm8gKmh5cGVyX2RtYWJ1Zl9leHRfcGdzKHN0cnVjdCBzZ190YWJsZSAq c2d0KQogCWlmICghcGdfaW5mbykKIAkJcmV0dXJuIE5VTEw7CiAKLQlwZ19pbmZvLT5wZ3MgPSBr bWFsbG9jKHNpemVvZihzdHJ1Y3QgcGFnZSAqKSAqCi0JCQkgICAgICAgaHlwZXJfZG1hYnVmX2dl dF9udW1fcGdzKHNndCksCi0JCQkgICAgICAgR0ZQX0tFUk5FTCk7CisJcGdfaW5mby0+cGdzID0g a21hbGxvY19hcnJheShoeXBlcl9kbWFidWZfZ2V0X251bV9wZ3Moc2d0KSwKKwkJCQkgICAgIHNp emVvZihzdHJ1Y3QgcGFnZSAqKSwgR0ZQX0tFUk5FTCk7CiAKIAlpZiAoIXBnX2luZm8tPnBncykg ewogCQlrZnJlZShwZ19pbmZvKTsKQEAgLTEzNywxNyArMTM2LDE3IEBAIHN0cnVjdCBwYWdlc19p bmZvICpoeXBlcl9kbWFidWZfZXh0X3BncyhzdHJ1Y3Qgc2dfdGFibGUgKnNndCkKIH0KIAogLyog Y3JlYXRlIHNnX3RhYmxlIHdpdGggZ2l2ZW4gcGFnZXMgYW5kIG90aGVyIHBhcmFtZXRlcnMgKi8K LXN0cnVjdCBzZ190YWJsZSogaHlwZXJfZG1hYnVmX2NyZWF0ZV9zZ3Qoc3RydWN0IHBhZ2UgKipw Z3MsCi0JCQkJCSBpbnQgZnJzdF9vZnN0LCBpbnQgbGFzdF9sZW4sIGludCBuZW50cykKK3N0cnVj dCBzZ190YWJsZSAqaHlwZXJfZG1hYnVmX2NyZWF0ZV9zZ3Qoc3RydWN0IHBhZ2UgKipwZ3MsCisJ CQkJCSBpbnQgZnJzdF9vZnN0LCBpbnQgbGFzdF9sZW4sCisJCQkJCSBpbnQgbmVudHMpCiB7CiAJ c3RydWN0IHNnX3RhYmxlICpzZ3Q7CiAJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZ2w7CiAJaW50IGks IHJldDsKIAogCXNndCA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBzZ190YWJsZSksIEdGUF9LRVJO RUwpOwotCWlmICghc2d0KSB7CisJaWYgKCFzZ3QpCiAJCXJldHVybiBOVUxMOwotCX0KIAogCXJl dCA9IHNnX2FsbG9jX3RhYmxlKHNndCwgbmVudHMsIEdGUF9LRVJORUwpOwogCWlmIChyZXQpIHsK QEAgLTE2Myw3ICsxNjIsNyBAQCBzdHJ1Y3Qgc2dfdGFibGUqIGh5cGVyX2RtYWJ1Zl9jcmVhdGVf c2d0KHN0cnVjdCBwYWdlICoqcGdzLAogCiAJc2dfc2V0X3BhZ2Uoc2dsLCBwZ3NbMF0sIFBBR0Vf U0laRS1mcnN0X29mc3QsIGZyc3Rfb2ZzdCk7CiAKLQlmb3IgKGk9MTsgaTxuZW50cy0xOyBpKysp IHsKKwlmb3IgKGkgPSAxOyBpIDwgbmVudHMtMTsgaSsrKSB7CiAJCXNnbCA9IHNnX25leHQoc2ds KTsKIAkJc2dfc2V0X3BhZ2Uoc2dsLCBwZ3NbaV0sIFBBR0VfU0laRSwgMCk7CiAJfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9zZ2xfcHJvYy5oIGIv ZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9zZ2xfcHJvYy5oCmluZGV4IDkz MGJhZGUuLjE1MmY3OGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBl cl9kbWFidWZfc2dsX3Byb2MuaAorKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJf ZG1hYnVmX3NnbF9wcm9jLmgKQEAgLTMxLDcgKzMxLDcgQEAgaW50IGRtYWJ1Zl9yZWZjb3VudChz dHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Zik7CiBzdHJ1Y3QgcGFnZXNfaW5mbyAqaHlwZXJfZG1hYnVm X2V4dF9wZ3Moc3RydWN0IHNnX3RhYmxlICpzZ3QpOwogCiAvKiBjcmVhdGUgc2dfdGFibGUgd2l0 aCBnaXZlbiBwYWdlcyBhbmQgb3RoZXIgcGFyYW1ldGVycyAqLwotc3RydWN0IHNnX3RhYmxlKiBo eXBlcl9kbWFidWZfY3JlYXRlX3NndChzdHJ1Y3QgcGFnZSAqKnBncywKK3N0cnVjdCBzZ190YWJs ZSAqaHlwZXJfZG1hYnVmX2NyZWF0ZV9zZ3Qoc3RydWN0IHBhZ2UgKipwZ3MsCiAJCQkJCSBpbnQg ZnJzdF9vZnN0LCBpbnQgbGFzdF9sZW4sCiAJCQkJCSBpbnQgbmVudHMpOwogCmRpZmYgLS1naXQg YS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX3N0cnVjdC5oIGIvZHJpdmVy cy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9zdHJ1Y3QuaAppbmRleCA4YTYxMmQxLi5h MTFmODA0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVm X3N0cnVjdC5oCisrKyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfc3Ry dWN0LmgKQEAgLTUxLDY3ICs1MSw5MSBAQCBzdHJ1Y3Qgdm1hcF92YWRkcl9saXN0IHsKIAogLyog RXhwb3J0ZXIgYnVpbGRzIHBhZ2VzX2luZm8gYmVmb3JlIHNoYXJpbmcgcGFnZXMgKi8KIHN0cnVj dCBwYWdlc19pbmZvIHsKLSAgICAgICAgaW50IGZyc3Rfb2ZzdDsgLyogb2Zmc2V0IG9mIGRhdGEg aW4gdGhlIGZpcnN0IHBhZ2UgKi8KLSAgICAgICAgaW50IGxhc3RfbGVuOyAvKiBsZW5ndGggb2Yg ZGF0YSBpbiB0aGUgbGFzdCBwYWdlICovCi0gICAgICAgIGludCBuZW50czsgLyogIyBvZiBwYWdl cyAqLwotICAgICAgICBzdHJ1Y3QgcGFnZSAqKnBnczsgLyogcGFnZXMgdGhhdCBjb250YWlucyBy ZWZlcmVuY2UgbnVtYmVycyBvZiBzaGFyZWQgcGFnZXMqLworCWludCBmcnN0X29mc3Q7CisJaW50 IGxhc3RfbGVuOworCWludCBuZW50czsKKwlzdHJ1Y3QgcGFnZSAqKnBnczsKIH07CiAKIAogLyog RXhwb3J0ZXIgc3RvcmVzIHJlZmVyZW5jZXMgdG8gc2d0IGluIGEgaGFzaCB0YWJsZQotICogRXhw b3J0ZXIga2VlcHMgdGhlc2UgcmVmZXJlbmNlcyBmb3Igc3luY2hyb25pemF0aW9uIGFuZCB0cmFj a2luZyBwdXJwb3NlcworICogRXhwb3J0ZXIga2VlcHMgdGhlc2UgcmVmZXJlbmNlcyBmb3Igc3lu Y2hyb25pemF0aW9uCisgKiBhbmQgdHJhY2tpbmcgcHVycG9zZXMKICAqLwogc3RydWN0IGV4cG9y dGVkX3NndF9pbmZvIHsKLSAgICAgICAgaHlwZXJfZG1hYnVmX2lkX3QgaGlkOyAvKiB1bmlxdWUg aWQgdG8gcmVmZXJlbmNlIGRtYWJ1ZiBpbiByZW1vdGUgZG9tYWluICovCi0JaW50IHJkb21pZDsg LyogZG9tYWluIGltcG9ydGluZyB0aGlzIHNndCAqLworCWh5cGVyX2RtYWJ1Zl9pZF90IGhpZDsK KworCS8qIFZNIElEIG9mIGltcG9ydGVyICovCisJaW50IHJkb21pZDsKIAotCXN0cnVjdCBkbWFf YnVmICpkbWFfYnVmOyAvKiBuZWVkZWQgdG8gc3RvcmUgdGhpcyBmb3IgZnJlZWluZyBpdCBsYXRl ciAqLworCXN0cnVjdCBkbWFfYnVmICpkbWFfYnVmOwogCWludCBuZW50czsKIAotCS8qIGxpc3Qg b2YgcmVtb3RlIGFjdGl2aXRpZXMgb24gZG1hX2J1ZiAqLworCS8qIGxpc3QgZm9yIHRyYWNraW5n IGFjdGl2aXRpZXMgb24gZG1hX2J1ZiAqLwogCXN0cnVjdCBzZ3RfbGlzdCAqYWN0aXZlX3NndHM7 CiAJc3RydWN0IGF0dGFjaG1lbnRfbGlzdCAqYWN0aXZlX2F0dGFjaGVkOwogCXN0cnVjdCBrbWFw X3ZhZGRyX2xpc3QgKnZhX2ttYXBwZWQ7CiAJc3RydWN0IHZtYXBfdmFkZHJfbGlzdCAqdmFfdm1h cHBlZDsKIAotCWJvb2wgdmFsaWQ7IC8qIHNldCB0byAwIG9uY2UgdW5leHBvcnRlZC4gTmVlZGVk IHRvIHByZXZlbnQgZnVydGhlciBtYXBwaW5nIGJ5IGltcG9ydGVyICovCi0JaW50IGFjdGl2ZTsg LyogbG9jYWxseSBzaGFyZWQgb24gaW1wb3J0ZXIncyBzaWRlICovCi0Jdm9pZCAqcmVmc19pbmZv OyAvKiBoeXBlcnZpc29yLXNwZWNpZmljIGluZm8gZm9yIHRoZSByZWZlcmVuY2VzICovCisJLyog c2V0IHRvIDAgd2hlbiB1bmV4cG9ydGVkLiBJbXBvcnRlciBkb2Vzbid0CisJICogZG8gYSBuZXcg bWFwcGluZyBvZiBidWZmZXIgaWYgdmFsaWQgPT0gZmFsc2UKKwkgKi8KKwlib29sIHZhbGlkOwor CisJLyogYWN0aXZlID09IHRydWUgaWYgdGhlIGJ1ZmZlciBpcyBhY3RpdmVseSB1c2VkCisJICog KG1hcHBlZCkgYnkgaW1wb3J0ZXIKKwkgKi8KKwlpbnQgYWN0aXZlOworCisJLyogaHlwZXJ2aXNv ciBzcGVjaWZpYyByZWZlcmVuY2UgZGF0YSBmb3Igc2hhcmVkIHBhZ2VzICovCisJdm9pZCAqcmVm c19pbmZvOworCiAJc3RydWN0IGRlbGF5ZWRfd29yayB1bmV4cG9ydDsKIAlib29sIHVuZXhwb3J0 X3NjaGVkOwogCi0JLyogb3duZXIgb2YgYnVmZmVyCi0JICogVE9ETzogdGhhdCBpcyBuYWlpdmUg YXMgYnVmZmVyIG1heSBiZSByZXVzZWQgYnkKLQkgKiBhbm90aGVyIHVzZXJzcGFjZSBhcHAsIHNv IGhlcmUgbGlzdCBvZiBzdHJ1Y3QgZmlsZSBzaG91bGQgYmUga2VwdAotCSAqIGFuZCBlbWVyZ2Vu Y3kgdW5leHBvcnQgc2hvdWxkIGJlIGV4ZWN1dGVkIG9ubHkgYWZ0ZXIgbGFzdCBvZiBidWZmZXIK LQkgKiB1c2VzIHJlbGVhc2VzIGh5cGVyX2RtYWJ1ZiBkZXZpY2UKKwkvKiBsaXN0IGZvciBmaWxl IHBvaW50ZXJzIGFzc29jaWF0ZWQgd2l0aCBhbGwgdXNlciBzcGFjZQorCSAqIGFwcGxpY2F0aW9u IHRoYXQgaGF2ZSBleHBvcnRlZCB0aGlzIHNhbWUgYnVmZmVyIHRvCisJICogYW5vdGhlciBWTS4g VGhpcyBuZWVkcyB0byBiZSB0cmFja2VkIHRvIGtub3cgd2hldGhlcgorCSAqIHRoZSBidWZmZXIg Y2FuIGJlIGNvbXBsZXRlbHkgZnJlZWQuCiAJICovCiAJc3RydWN0IGZpbGUgKmZpbHA7CiAKKwkv KiBzaXplIG9mIHByaXZhdGUgKi8KIAlzaXplX3Qgc3pfcHJpdjsKLQljaGFyICpwcml2OyAvKiBk ZXZpY2Ugc3BlY2lmaWMgaW5mbyAoZS5nLiBpbWFnZSdzIG1ldGEgaW5mbz8pICovCisKKwkvKiBw cml2YXRlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBleHBvcnRlZCBidWZmZXIgKi8KKwljaGFy ICpwcml2OwogfTsKIAotLyogSW1wb3J0ZXIgc3RvcmUgcmVmZXJlbmNlcyAoYmVmb3JlIG1hcHBp bmcpIG9uIHNoYXJlZCBwYWdlcwotICogSW1wb3J0ZXIgc3RvcmUgdGhlc2UgcmVmZXJlbmNlcyBp biB0aGUgdGFibGUgYW5kIG1hcCBpdCBpbgotICogaXRzIG93biBtZW1vcnkgbWFwIG9uY2UgdXNl cnNwYWNlIGFza3MgZm9yIHJlZmVyZW5jZSBmb3IgdGhlIGJ1ZmZlciAqLworLyogaW1wb3J0ZWRf c2d0X2luZm8gY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgaW1wb3J0ZWQgRE1BX0JVRgorICog dGhpcyBpbmZvIGlzIGtlcHQgaW4gSU1QT1JUIGxpc3QgYW5kIGFzeW5jaG9yb3VzbHkgcmV0cmll dmVkIGFuZAorICogdXNlZCB0byBtYXAgRE1BX0JVRiBvbiBpbXBvcnRlciBWTSdzIHNpZGUgdXBv biBleHBvcnQgZmQgaW9jdGwKKyAqIHJlcXVlc3QgZnJvbSB1c2VyLXNwYWNlCisgKi8KKwogc3Ry dWN0IGltcG9ydGVkX3NndF9pbmZvIHsKIAloeXBlcl9kbWFidWZfaWRfdCBoaWQ7IC8qIHVuaXF1 ZSBpZCBmb3Igc2hhcmVkIGRtYWJ1ZiBpbXBvcnRlZCAqLwogCi0JaW50IHJlZl9oYW5kbGU7IC8q IHJlZmVyZW5jZSBudW1iZXIgb2YgdG9wIGxldmVsIGFkZHJlc3NpbmcgcGFnZSBvZiBzaGFyZWQg cGFnZXMgKi8KLQlpbnQgZnJzdF9vZnN0OwkvKiBzdGFydCBvZmZzZXQgaW4gZmlyc3Qgc2hhcmVk IHBhZ2UgKi8KLQlpbnQgbGFzdF9sZW47CS8qIGxlbmd0aCBvZiBkYXRhIGluIHRoZSBsYXN0IHNo YXJlZCBwYWdlICovCi0JaW50IG5lbnRzOwkvKiBudW1iZXIgb2YgcGFnZXMgdG8gYmUgc2hhcmVk ICovCisJLyogaHlwZXJ2aXNvci1zcGVjaWZpYyBoYW5kbGUgdG8gcGFnZXMgKi8KKwlpbnQgcmVm X2hhbmRsZTsKKworCS8qIG9mZnNldCBhbmQgc2l6ZSBpbmZvIG9mIERNQV9CVUYgKi8KKwlpbnQg ZnJzdF9vZnN0OworCWludCBsYXN0X2xlbjsKKwlpbnQgbmVudHM7CiAKIAlzdHJ1Y3QgZG1hX2J1 ZiAqZG1hX2J1ZjsKLQlzdHJ1Y3Qgc2dfdGFibGUgKnNndDsgLyogc2d0IHBvaW50ZXIgYWZ0ZXIg aW1wb3J0aW5nIGJ1ZmZlciAqLworCXN0cnVjdCBzZ190YWJsZSAqc2d0OwogCiAJdm9pZCAqcmVm c19pbmZvOwogCWJvb2wgdmFsaWQ7CiAJaW50IGltcG9ydGVyczsKIAorCS8qIHNpemUgb2YgcHJp dmF0ZSAqLwogCXNpemVfdCBzel9wcml2OwotCWNoYXIgKnByaXY7IC8qIGRldmljZSBzcGVjaWZp YyBpbmZvIChlLmcuIGltYWdlJ3MgbWV0YSBpbmZvPykgKi8KKworCS8qIHByaXZhdGUgZGF0YSBh c3NvY2lhdGVkIHdpdGggdGhlIGV4cG9ydGVkIGJ1ZmZlciAqLworCWNoYXIgKnByaXY7CiB9Owog CiAjZW5kaWYgLyogX19IWVBFUl9ETUFCVUZfU1RSVUNUX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJp dmVycy94ZW4vaHlwZXJfZG1hYnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX2NvbW0uYyBiL2RyaXZl cnMveGVuL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1hYnVmX3hlbl9jb21tLmMKaW5kZXggZjcw YjRlYS4uMDVmMzUyMSAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL3hlbi9o eXBlcl9kbWFidWZfeGVuX2NvbW0uYworKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYveGVu L2h5cGVyX2RtYWJ1Zl94ZW5fY29tbS5jCkBAIC00MSwxMiArNDEsMTAgQEAKICNpbmNsdWRlICJo eXBlcl9kbWFidWZfeGVuX2NvbW1fbGlzdC5oIgogI2luY2x1ZGUgIi4uL2h5cGVyX2RtYWJ1Zl9k cnYuaCIKIAotc3RhdGljIGludCBleHBvcnRfcmVxX2lkID0gMDsKK3N0YXRpYyBpbnQgZXhwb3J0 X3JlcV9pZDsKIAogc3RydWN0IGh5cGVyX2RtYWJ1Zl9yZXEgcmVxX3BlbmRpbmcgPSB7MH07CiAK LWV4dGVybiBpbnQgeGVuc3RvcmVkX3JlYWR5OwotCiBzdGF0aWMgdm9pZCB4ZW5fZ2V0X2RvbWlk X2RlbGF5ZWQoc3RydWN0IHdvcmtfc3RydWN0ICp1bnVzZWQpOwogc3RhdGljIHZvaWQgeGVuX2lu aXRfY29tbV9lbnZfZGVsYXllZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKnVudXNlZCk7CiAKQEAgLTE2 MCwxNSArMTU4LDE2IEBAIHZvaWQgeGVuX2dldF9kb21pZF9kZWxheWVkKHN0cnVjdCB3b3JrX3N0 cnVjdCAqdW51c2VkKQogCWludCBkb21pZCwgcmV0OwogCiAJLyogc2NoZWR1bGluZyBhbm90aGVy IGlmIGRyaXZlciBpcyBzdGlsbCBydW5uaW5nCi0JICogYW5kIHhlbnN0b3JlIGhhcyBub3QgYmVl biBpbml0aWFsaXplZCAqLworCSAqIGFuZCB4ZW5zdG9yZSBoYXMgbm90IGJlZW4gaW5pdGlhbGl6 ZWQKKwkgKi8KIAlpZiAobGlrZWx5KHhlbnN0b3JlZF9yZWFkeSA9PSAwKSkgewogCQlkZXZfZGJn KGh5X2Rydl9wcml2LT5kZXYsCi0JCQkiWGVuc3RvcmUgaXMgbm90IHF1aXRlIHJlYWR5IHlldC4g V2lsbCByZXRyeSBpdCBpbiA1MDBtc1xuIik7CisJCQkiWGVuc3RvcmUgaXMgbm90IHJlYWR5IHll dC4gV2lsbCByZXRyeSBpbiA1MDBtc1xuIik7CiAJCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmZ2V0 X3ZtX2lkX3dvcmssIG1zZWNzX3RvX2ppZmZpZXMoNTAwKSk7CiAJfSBlbHNlIHsKLQkgICAgICAg IHhlbmJ1c190cmFuc2FjdGlvbl9zdGFydCgmeGJ0KTsKKwkJeGVuYnVzX3RyYW5zYWN0aW9uX3N0 YXJ0KCZ4YnQpOwogCi0JCXJldCA9IHhlbmJ1c19zY2FuZih4YnQsICJkb21pZCIsIiIsICIlZCIs ICZkb21pZCk7CisJCXJldCA9IHhlbmJ1c19zY2FuZih4YnQsICJkb21pZCIsICIiLCAiJWQiLCAm ZG9taWQpOwogCiAJCWlmIChyZXQgPD0gMCkKIAkJCWRvbWlkID0gLTE7CkBAIC0xNzYsMTQgKzE3 NSwxNyBAQCB2b2lkIHhlbl9nZXRfZG9taWRfZGVsYXllZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKnVu dXNlZCkKIAkJeGVuYnVzX3RyYW5zYWN0aW9uX2VuZCh4YnQsIDApOwogCiAJCS8qIHRyeSBhZ2Fp biBzaW5jZSAtMSBpcyBhbiBpbnZhbGlkIGlkIGZvciBkb21haW4KLQkJICogKGJ1dCBvbmx5IGlm IGRyaXZlciBpcyBzdGlsbCBydW5uaW5nKSAqLworCQkgKiAoYnV0IG9ubHkgaWYgZHJpdmVyIGlz IHN0aWxsIHJ1bm5pbmcpCisJCSAqLwogCQlpZiAodW5saWtlbHkoZG9taWQgPT0gLTEpKSB7CiAJ CQlkZXZfZGJnKGh5X2Rydl9wcml2LT5kZXYsCiAJCQkJImRvbWlkPT0tMSBpcyBpbnZhbGlkLiBX aWxsIHJldHJ5IGl0IGluIDUwMG1zXG4iKTsKLQkJCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmZ2V0 X3ZtX2lkX3dvcmssIG1zZWNzX3RvX2ppZmZpZXMoNTAwKSk7CisJCQlzY2hlZHVsZV9kZWxheWVk X3dvcmsoJmdldF92bV9pZF93b3JrLAorCQkJCQkgICAgICBtc2Vjc190b19qaWZmaWVzKDUwMCkp OwogCQl9IGVsc2UgewogCQkJZGV2X2luZm8oaHlfZHJ2X3ByaXYtPmRldiwKLQkJCQkiU3VjY2Vz c2Z1bGx5IHJldHJpZXZlZCBkb21pZCBmcm9tIFhlbnN0b3JlOiVkXG4iLCBkb21pZCk7CisJCQkJ ICJTdWNjZXNzZnVsbHkgcmV0cmlldmVkIGRvbWlkIGZyb20gWGVuc3RvcmU6JWRcbiIsCisJCQkJ IGRvbWlkKTsKIAkJCWh5X2Rydl9wcml2LT5kb21pZCA9IGRvbWlkOwogCQl9CiAJfQpAQCAtMTk5 LDIxICsyMDEsMjAgQEAgaW50IGh5cGVyX2RtYWJ1Zl94ZW5fZ2V0X2RvbWlkKHZvaWQpCiAJCXJl dHVybiAtMTsKIAl9CiAKLSAgICAgICAgeGVuYnVzX3RyYW5zYWN0aW9uX3N0YXJ0KCZ4YnQpOwor CXhlbmJ1c190cmFuc2FjdGlvbl9zdGFydCgmeGJ0KTsKIAotICAgICAgICBpZiAoIXhlbmJ1c19z Y2FuZih4YnQsICJkb21pZCIsIiIsICIlZCIsICZkb21pZCkpIHsKKwlpZiAoIXhlbmJ1c19zY2Fu Zih4YnQsICJkb21pZCIsICIiLCAiJWQiLCAmZG9taWQpKQogCQlkb21pZCA9IC0xOwotICAgICAg ICB9CiAKLSAgICAgICAgeGVuYnVzX3RyYW5zYWN0aW9uX2VuZCh4YnQsIDApOworCXhlbmJ1c190 cmFuc2FjdGlvbl9lbmQoeGJ0LCAwKTsKIAogCXJldHVybiBkb21pZDsKIH0KIAogc3RhdGljIGlu dCB4ZW5fY29tbV9uZXh0X3JlcV9pZCh2b2lkKQogewotICAgICAgICBleHBvcnRfcmVxX2lkKys7 Ci0gICAgICAgIHJldHVybiBleHBvcnRfcmVxX2lkOworCWV4cG9ydF9yZXFfaWQrKzsKKwlyZXR1 cm4gZXhwb3J0X3JlcV9pZDsKIH0KIAogLyogRm9yIG5vdyBjYWNoZSBsYXRhc3QgcmluZ3MgYXMg Z2xvYmFsIHZhcmlhYmxlcyBUT0RPOiBrZWVwIHRoZW0gaW4gbGlzdCovCkBAIC0yMzYsMTkgKzIz NywxOCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgYmFja19yaW5nX2lzcihpbnQgaXJxLCB2b2lkICpp bmZvKTsKIHN0YXRpYyB2b2lkIHJlbW90ZV9kb21fZXhwb3J0ZXJfd2F0Y2hfY2Ioc3RydWN0IHhl bmJ1c193YXRjaCAqd2F0Y2gsCiAJCQkJCSBjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICp0 b2tlbikKIHsKLQlpbnQgcmRvbSxyZXQ7CisJaW50IHJkb20sIHJldDsKIAl1aW50MzJfdCBncmVm aWQsIHBvcnQ7CiAJc3RydWN0IHhlbl9jb21tX3J4X3JpbmdfaW5mbyAqcmluZ19pbmZvOwogCiAJ LyogQ2hlY2sgd2hpY2ggZG9tYWluIGhhcyBjaGFuZ2VkIGl0cyBleHBvcnRlciByaW5ncyAqLwog CXJldCA9IHNzY2FuZih3YXRjaC0+bm9kZSwgIi9sb2NhbC9kb21haW4vJWQvIiwgJnJkb20pOwot CWlmIChyZXQgPD0gMCkgeworCWlmIChyZXQgPD0gMCkKIAkJcmV0dXJuOwotCX0KIAogCS8qIENo ZWNrIGlmIHdlIGhhdmUgaW1wb3J0ZXIgcmluZyBmb3IgZ2l2ZW4gcmVtb3RlIGRvbWFpbiBhbHJl YWR5Ci0JICogY3JlYXRlZCAqLwotCisJICogY3JlYXRlZAorCSAqLwogCXJpbmdfaW5mbyA9IHhl bl9jb21tX2ZpbmRfcnhfcmluZyhyZG9tKTsKIAogCS8qIFRyeSB0byBxdWVyeSByZW1vdGUgZG9t YWluIGV4cG9ydGVyIHJpbmcgZGV0YWlscyAtIGlmCkBAIC0yOTgsMTEgKzI5OCw4IEBAIGludCBo eXBlcl9kbWFidWZfeGVuX2luaXRfdHhfcmJ1ZihpbnQgZG9taWQpCiAKIAlyaW5nX2luZm8gPSBr bWFsbG9jKHNpemVvZigqcmluZ19pbmZvKSwgR0ZQX0tFUk5FTCk7CiAKLQlpZiAoIXJpbmdfaW5m bykgewotCQlkZXZfZXJyKGh5X2Rydl9wcml2LT5kZXYsCi0JCQkiTm8gbW9yZSBzcGFlIGxlZnRc biIpOworCWlmICghcmluZ19pbmZvKQogCQlyZXR1cm4gLUVOT01FTTsKLQl9CiAKIAkvKiBmcm9t IGV4cG9ydGVyIHRvIGltcG9ydGVyICovCiAJc2hhcmVkX3JpbmcgPSAodm9pZCAqKV9fZ2V0X2Zy ZWVfcGFnZXMoR0ZQX0tFUk5FTCwgMSk7CkBAIC0zMTgsOCArMzE1LDggQEAgaW50IGh5cGVyX2Rt YWJ1Zl94ZW5faW5pdF90eF9yYnVmKGludCBkb21pZCkKIAlGUk9OVF9SSU5HX0lOSVQoJihyaW5n X2luZm8tPnJpbmdfZnJvbnQpLCBzcmluZywgUEFHRV9TSVpFKTsKIAogCXJpbmdfaW5mby0+Z3Jl Zl9yaW5nID0gZ250dGFiX2dyYW50X2ZvcmVpZ25fYWNjZXNzKGRvbWlkLAotCQkJCQkJCSAgIHZp cnRfdG9fbWZuKHNoYXJlZF9yaW5nKSwKLQkJCQkJCQkgICAwKTsKKwkJCQkJCXZpcnRfdG9fbWZu KHNoYXJlZF9yaW5nKSwKKwkJCQkJCTApOwogCWlmIChyaW5nX2luZm8tPmdyZWZfcmluZyA8IDAp IHsKIAkJLyogZmFpbCB0byBnZXQgZ3JlZiAqLwogCQlrZnJlZShyaW5nX2luZm8pOwpAQCAtMzQw LDcgKzMzNyw3IEBAIGludCBoeXBlcl9kbWFidWZfeGVuX2luaXRfdHhfcmJ1ZihpbnQgZG9taWQp CiAJLyogc2V0dGluZyB1cCBpbnRlcnJ1cHQgKi8KIAlyZXQgPSBiaW5kX2V2dGNobl90b19pcnFo YW5kbGVyKGFsbG9jX3VuYm91bmQucG9ydCwKIAkJCQkJZnJvbnRfcmluZ19pc3IsIDAsCi0JCQkJ CU5VTEwsICh2b2lkKikgcmluZ19pbmZvKTsKKwkJCQkJTlVMTCwgKHZvaWQgKikgcmluZ19pbmZv KTsKIAogCWlmIChyZXQgPCAwKSB7CiAJCWRldl9lcnIoaHlfZHJ2X3ByaXYtPmRldiwKQEAgLTM2 OCwyNSArMzY1LDI0IEBAIGludCBoeXBlcl9kbWFidWZfeGVuX2luaXRfdHhfcmJ1ZihpbnQgZG9t aWQpCiAKIAlyZXQgPSB4ZW5fY29tbV9hZGRfdHhfcmluZyhyaW5nX2luZm8pOwogCi0JcmV0ID0g eGVuX2NvbW1fZXhwb3NlX3JpbmdfZGV0YWlscyhoeXBlcl9kbWFidWZfeGVuX2dldF9kb21pZCgp LCBkb21pZCwKLQkJCQkJICAgcmluZ19pbmZvLT5ncmVmX3JpbmcsIHJpbmdfaW5mby0+cG9ydCk7 CisJcmV0ID0geGVuX2NvbW1fZXhwb3NlX3JpbmdfZGV0YWlscyhoeXBlcl9kbWFidWZfeGVuX2dl dF9kb21pZCgpLAorCQkJCQkgICBkb21pZCwKKwkJCQkJICAgcmluZ19pbmZvLT5ncmVmX3Jpbmcs CisJCQkJCSAgIHJpbmdfaW5mby0+cG9ydCk7CiAKLQkvKgotCSAqIFJlZ2lzdGVyIHdhdGNoIGZv ciByZW1vdGUgZG9tYWluIGV4cG9ydGVyIHJpbmcuCisJLyogUmVnaXN0ZXIgd2F0Y2ggZm9yIHJl bW90ZSBkb21haW4gZXhwb3J0ZXIgcmluZy4KIAkgKiBXaGVuIHJlbW90ZSBkb21haW4gd2lsbCBz ZXR1cCBpdHMgZXhwb3J0ZXIgcmluZywKIAkgKiB3ZSB3aWxsIGF1dG9tYXRpY2FsbHkgY29ubmVj dCBvdXIgaW1wb3J0ZXIgcmluZyB0byBpdC4KIAkgKi8KIAlyaW5nX2luZm8tPndhdGNoLmNhbGxi YWNrID0gcmVtb3RlX2RvbV9leHBvcnRlcl93YXRjaF9jYjsKLQlyaW5nX2luZm8tPndhdGNoLm5v ZGUgPSAoY29uc3QgY2hhciopIGttYWxsb2Moc2l6ZW9mKGNoYXIpICogMjU1LCBHRlBfS0VSTkVM KTsKKwlyaW5nX2luZm8tPndhdGNoLm5vZGUgPSBrbWFsbG9jKDI1NSwgR0ZQX0tFUk5FTCk7CiAK IAlpZiAoIXJpbmdfaW5mby0+d2F0Y2gubm9kZSkgewotCQlkZXZfZXJyKGh5X2Rydl9wcml2LT5k ZXYsCi0JCQkiTm8gbW9yZSBzcGFjZSBsZWZ0XG4iKTsKIAkJa2ZyZWUocmluZ19pbmZvKTsKIAkJ cmV0dXJuIC1FTk9NRU07CiAJfQogCi0Jc3ByaW50ZigoY2hhciopcmluZ19pbmZvLT53YXRjaC5u b2RlLAorCXNwcmludGYoKGNoYXIgKilyaW5nX2luZm8tPndhdGNoLm5vZGUsCiAJCSIvbG9jYWwv ZG9tYWluLyVkL2RhdGEvaHlwZXJfZG1hYnVmLyVkL3BvcnQiLAogCQlkb21pZCwgaHlwZXJfZG1h YnVmX3hlbl9nZXRfZG9taWQoKSk7CiAKQEAgLTQwNCw5ICs0MDAsOCBAQCB2b2lkIGh5cGVyX2Rt YWJ1Zl94ZW5fY2xlYW51cF90eF9yYnVmKGludCBkb21pZCkKIAkvKiBjaGVjayBpZiB3ZSBhdCBh bGwgaGF2ZSBleHBvcnRlciByaW5nIGZvciBnaXZlbiByZG9tYWluICovCiAJcmluZ19pbmZvID0g eGVuX2NvbW1fZmluZF90eF9yaW5nKGRvbWlkKTsKIAotCWlmICghcmluZ19pbmZvKSB7CisJaWYg KCFyaW5nX2luZm8pCiAJCXJldHVybjsKLQl9CiAKIAl4ZW5fY29tbV9yZW1vdmVfdHhfcmluZyhk b21pZCk7CiAKQEAgLTQxNiw3ICs0MTEsNyBAQCB2b2lkIGh5cGVyX2RtYWJ1Zl94ZW5fY2xlYW51 cF90eF9yYnVmKGludCBkb21pZCkKIAkvKiBObyBuZWVkIHRvIGNsb3NlIGNvbW11bmljYXRpb24g Y2hhbm5lbCwgd2lsbCBiZSBkb25lIGJ5CiAJICogdGhpcyBmdW5jdGlvbgogCSAqLwotCXVuYmlu ZF9mcm9tX2lycWhhbmRsZXIocmluZ19pbmZvLT5pcnEsICh2b2lkKikgcmluZ19pbmZvKTsKKwl1 bmJpbmRfZnJvbV9pcnFoYW5kbGVyKHJpbmdfaW5mby0+aXJxLCAodm9pZCAqKSByaW5nX2luZm8p OwogCiAJLyogTm8gbmVlZCB0byBmcmVlIHNyaW5nIHBhZ2UsIHdpbGwgYmUgZnJlZWQgYnkgdGhp cyBmdW5jdGlvbgogCSAqIHdoZW4gb3RoZXIgc2lkZSB3aWxsIGVuZCBpdHMgYWNjZXNzCkBAIC00 MzAsNyArNDI1LDggQEAgdm9pZCBoeXBlcl9kbWFidWZfeGVuX2NsZWFudXBfdHhfcmJ1ZihpbnQg ZG9taWQpCiAJaWYgKCFyeF9yaW5nX2luZm8pCiAJCXJldHVybjsKIAotCUJBQ0tfUklOR19JTklU KCYocnhfcmluZ19pbmZvLT5yaW5nX2JhY2spLCByeF9yaW5nX2luZm8tPnJpbmdfYmFjay5zcmlu ZywKKwlCQUNLX1JJTkdfSU5JVCgmKHJ4X3JpbmdfaW5mby0+cmluZ19iYWNrKSwKKwkJICAgICAg IHJ4X3JpbmdfaW5mby0+cmluZ19iYWNrLnNyaW5nLAogCQkgICAgICAgUEFHRV9TSVpFKTsKIH0K IApAQCAtNDczLDExICs0NjksOCBAQCBpbnQgaHlwZXJfZG1hYnVmX3hlbl9pbml0X3J4X3JidWYo aW50IGRvbWlkKQogCiAJcmluZ19pbmZvID0ga21hbGxvYyhzaXplb2YoKnJpbmdfaW5mbyksIEdG UF9LRVJORUwpOwogCi0JaWYgKCFyaW5nX2luZm8pIHsKLQkJZGV2X2VycihoeV9kcnZfcHJpdi0+ ZGV2LAotCQkJIk5vIG1lbW9yeSBsZWZ0IHRvIGJlIGFsbG9jYXRlZFxuIik7CisJaWYgKCFyaW5n X2luZm8pCiAJCXJldHVybiAtRU5PTUVNOwotCX0KIAogCXJpbmdfaW5mby0+c2RvbWFpbiA9IGRv bWlkOwogCXJpbmdfaW5mby0+ZXZ0Y2huID0gcnhfcG9ydDsKQEAgLTQ4NSw4ICs0NzgsNiBAQCBp bnQgaHlwZXJfZG1hYnVmX3hlbl9pbml0X3J4X3JidWYoaW50IGRvbWlkKQogCW1hcF9vcHMgPSBr bWFsbG9jKHNpemVvZigqbWFwX29wcyksIEdGUF9LRVJORUwpOwogCiAJaWYgKCFtYXBfb3BzKSB7 Ci0JCWRldl9lcnIoaHlfZHJ2X3ByaXYtPmRldiwKLQkJCSJObyBtZW1vcnkgbGVmdCB0byBiZSBh bGxvY2F0ZWRcbiIpOwogCQlyZXQgPSAtRU5PTUVNOwogCQlnb3RvIGZhaWxfbm9fbWFwX29wczsK IAl9CkBAIC00OTcsMTEgKzQ4OCwxMyBAQCBpbnQgaHlwZXJfZG1hYnVmX3hlbl9pbml0X3J4X3Ji dWYoaW50IGRvbWlkKQogCX0KIAogCWdudHRhYl9zZXRfbWFwX29wKCZtYXBfb3BzWzBdLAotCQkJ ICAodW5zaWduZWQgbG9uZylwZm5fdG9fa2FkZHIocGFnZV90b19wZm4oc2hhcmVkX3JpbmcpKSwK KwkJCSAgKHVuc2lnbmVkIGxvbmcpcGZuX3RvX2thZGRyKAorCQkJCQlwYWdlX3RvX3BmbihzaGFy ZWRfcmluZykpLAogCQkJICBHTlRNQVBfaG9zdF9tYXAsIHJ4X2dyZWYsIGRvbWlkKTsKIAogCWdu dHRhYl9zZXRfdW5tYXBfb3AoJnJpbmdfaW5mby0+dW5tYXBfb3AsCi0JCQkgICAgKHVuc2lnbmVk IGxvbmcpcGZuX3RvX2thZGRyKHBhZ2VfdG9fcGZuKHNoYXJlZF9yaW5nKSksCisJCQkgICAgKHVu c2lnbmVkIGxvbmcpcGZuX3RvX2thZGRyKAorCQkJCQlwYWdlX3RvX3BmbihzaGFyZWRfcmluZykp LAogCQkJICAgIEdOVE1BUF9ob3N0X21hcCwgLTEpOwogCiAJcmV0ID0gZ250dGFiX21hcF9yZWZz KG1hcF9vcHMsIE5VTEwsICZzaGFyZWRfcmluZywgMSk7CkBAIC01NDIsMTMgKzUzNSwxMiBAQCBp bnQgaHlwZXJfZG1hYnVmX3hlbl9pbml0X3J4X3JidWYoaW50IGRvbWlkKQogCXJldCA9IHhlbl9j b21tX2FkZF9yeF9yaW5nKHJpbmdfaW5mbyk7CiAKIAkvKiBTZXR1cCBjb21tdW5jYXRpb24gY2hh bm5lbCBpbiBvcHBvc2l0ZSBkaXJlY3Rpb24gKi8KLQlpZiAoIXhlbl9jb21tX2ZpbmRfdHhfcmlu Zyhkb21pZCkpIHsKKwlpZiAoIXhlbl9jb21tX2ZpbmRfdHhfcmluZyhkb21pZCkpCiAJCXJldCA9 IGh5cGVyX2RtYWJ1Zl94ZW5faW5pdF90eF9yYnVmKGRvbWlkKTsKLQl9CiAKIAlyZXQgPSByZXF1 ZXN0X2lycShyaW5nX2luZm8tPmlycSwKIAkJCSAgYmFja19yaW5nX2lzciwgMCwKLQkJCSAgTlVM TCwgKHZvaWQqKXJpbmdfaW5mbyk7CisJCQkgIE5VTEwsICh2b2lkICopcmluZ19pbmZvKTsKIAog CXJldHVybiByZXQ7CiAKQEAgLTU3Nyw3ICs1NjksNyBAQCB2b2lkIGh5cGVyX2RtYWJ1Zl94ZW5f Y2xlYW51cF9yeF9yYnVmKGludCBkb21pZCkKIAl4ZW5fY29tbV9yZW1vdmVfcnhfcmluZyhkb21p ZCk7CiAKIAkvKiBubyBuZWVkIHRvIGNsb3NlIGV2ZW50IGNoYW5uZWwsIHdpbGwgYmUgZG9uZSBi eSB0aGF0IGZ1bmN0aW9uICovCi0JdW5iaW5kX2Zyb21faXJxaGFuZGxlcihyaW5nX2luZm8tPmly cSwgKHZvaWQqKXJpbmdfaW5mbyk7CisJdW5iaW5kX2Zyb21faXJxaGFuZGxlcihyaW5nX2luZm8t PmlycSwgKHZvaWQgKilyaW5nX2luZm8pOwogCiAJLyogdW5tYXBwaW5nIHNoYXJlZCByaW5nIHBh Z2UgKi8KIAlzaGFyZWRfcmluZyA9IHZpcnRfdG9fcGFnZShyaW5nX2luZm8tPnJpbmdfYmFjay5z cmluZyk7CkBAIC02MzYsNyArNjI4LDggQEAgc3RhdGljIHZvaWQgeGVuX3J4X2NoX2FkZF9kZWxh eWVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqdW51c2VkKQogCiAJCQkJaWYgKCFyZXQpCiAJCQkJCWRl dl9pbmZvKGh5X2Rydl9wcml2LT5kZXYsCi0JCQkJCQkgIkZpbmlzaGluZyB1cCBzZXR0aW5nIHVw IHJ4IGNoYW5uZWwgZm9yIGRvbWFpbiAlZFxuIiwgaSk7CisJCQkJCQkgIkRvbmUgcnggY2ggaW5p dCBmb3IgVk0gJWRcbiIsCisJCQkJCQkgaSk7CiAJCQl9CiAJCX0KIApAQCAtNjU0LDcgKzY0Nyw4 IEBAIHZvaWQgeGVuX2luaXRfY29tbV9lbnZfZGVsYXllZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKnVu dXNlZCkKIAogCS8qIHNjaGVkdWxpbmcgYW5vdGhlciB3b3JrIGlmIGRyaXZlciBpcyBzdGlsbCBy dW5uaW5nCiAJICogYW5kIHhlbnN0b3JlIGhhc24ndCBiZWVuIGluaXRpYWxpemVkIG9yIGRvbV9p ZCBoYXNuJ3QKLQkgKiBiZWVuIGNvcnJlY3RseSByZXRyaWV2ZWQuICovCisJICogYmVlbiBjb3Jy ZWN0bHkgcmV0cmlldmVkLgorCSAqLwogCWlmIChsaWtlbHkoeGVuc3RvcmVkX3JlYWR5ID09IDAg fHwKIAkgICAgaHlfZHJ2X3ByaXYtPmRvbWlkID09IC0xKSkgewogCQlkZXZfZGJnKGh5X2Rydl9w cml2LT5kZXYsCkBAIC03NzgsOSArNzcyLDggQEAgaW50IGh5cGVyX2RtYWJ1Zl94ZW5fc2VuZF9y ZXEoaW50IGRvbWlkLCBzdHJ1Y3QgaHlwZXJfZG1hYnVmX3JlcSAqcmVxLAogCXJpbmctPnJlcV9w cm9kX3B2dCsrOwogCiAJUklOR19QVVNIX1JFUVVFU1RTX0FORF9DSEVDS19OT1RJRlkocmluZywg bm90aWZ5KTsKLQlpZiAobm90aWZ5KSB7CisJaWYgKG5vdGlmeSkKIAkJbm90aWZ5X3JlbW90ZV92 aWFfaXJxKHJpbmdfaW5mby0+aXJxKTsKLQl9CiAKIAlpZiAod2FpdCkgewogCQl3aGlsZSAodGlt ZW91dC0tKSB7CkBAIC03OTIsMjQgKzc4NSwyOSBAQCBpbnQgaHlwZXJfZG1hYnVmX3hlbl9zZW5k X3JlcShpbnQgZG9taWQsIHN0cnVjdCBoeXBlcl9kbWFidWZfcmVxICpyZXEsCiAKIAkJaWYgKHRp bWVvdXQgPCAwKSB7CiAJCQltdXRleF91bmxvY2soJnJpbmdfaW5mby0+bG9jayk7Ci0JCQlkZXZf ZXJyKGh5X2Rydl9wcml2LT5kZXYsICJyZXF1ZXN0IHRpbWVkLW91dFxuIik7CisJCQlkZXZfZXJy KGh5X2Rydl9wcml2LT5kZXYsCisJCQkJInJlcXVlc3QgdGltZWQtb3V0XG4iKTsKIAkJCXJldHVy biAtRUJVU1k7CiAJCX0KIAogCQltdXRleF91bmxvY2soJnJpbmdfaW5mby0+bG9jayk7CiAJCWRv X2dldHRpbWVvZmRheSgmdHZfZW5kKTsKIAotCQkvKiBjaGVja2luZyB0aW1lIGR1cmF0aW9uIGZv ciByb3VuZC10cmlwIG9mIGEgcmVxdWVzdCBmb3IgZGVidWdnaW5nICovCisJCS8qIGNoZWNraW5n IHRpbWUgZHVyYXRpb24gZm9yIHJvdW5kLXRyaXAgb2YgYSByZXF1ZXN0CisJCSAqIGZvciBkZWJ1 Z2dpbmcKKwkJICovCiAJCWlmICh0dl9lbmQudHZfdXNlYyA+PSB0dl9zdGFydC50dl91c2VjKSB7 CiAJCQl0dl9kaWZmLnR2X3NlYyA9IHR2X2VuZC50dl9zZWMtdHZfc3RhcnQudHZfc2VjOwogCQkJ dHZfZGlmZi50dl91c2VjID0gdHZfZW5kLnR2X3VzZWMtdHZfc3RhcnQudHZfdXNlYzsKIAkJfSBl bHNlIHsKIAkJCXR2X2RpZmYudHZfc2VjID0gdHZfZW5kLnR2X3NlYy10dl9zdGFydC50dl9zZWMt MTsKLQkJCXR2X2RpZmYudHZfdXNlYyA9IHR2X2VuZC50dl91c2VjKzEwMDAwMDAtdHZfc3RhcnQu dHZfdXNlYzsKKwkJCXR2X2RpZmYudHZfdXNlYyA9IHR2X2VuZC50dl91c2VjKzEwMDAwMDAtCisJ CQkJCSAgdHZfc3RhcnQudHZfdXNlYzsKIAkJfQogCiAJCWlmICh0dl9kaWZmLnR2X3NlYyAhPSAw ICYmIHR2X2RpZmYudHZfdXNlYyA+IDE2MDAwKQotCQkJZGV2X2RiZyhoeV9kcnZfcHJpdi0+ZGV2 LCAic2VuZF9yZXE6dGltZSBkaWZmOiAlbGQgc2VjLCAlbGQgdXNlY1xuIiwKKwkJCWRldl9kYmco aHlfZHJ2X3ByaXYtPmRldiwKKwkJCQkic2VuZF9yZXE6dGltZSBkaWZmOiAlbGQgc2VjLCAlbGQg dXNlY1xuIiwKIAkJCQl0dl9kaWZmLnR2X3NlYywgdHZfZGlmZi50dl91c2VjKTsKIAl9CiAKQEAg LTg1MCwyMyArODQ4LDI0IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBiYWNrX3JpbmdfaXNyKGludCBp cnEsIHZvaWQgKmluZm8pCiAJCQlyZXQgPSBoeXBlcl9kbWFidWZfbXNnX3BhcnNlKHJpbmdfaW5m by0+c2RvbWFpbiwgJnJlcSk7CiAKIAkJCWlmIChyZXQgPiAwKSB7Ci0JCQkJLyogcHJlcGFyaW5n IGEgcmVzcG9uc2UgZm9yIHRoZSByZXF1ZXN0IGFuZCBzZW5kIGl0IHRvCi0JCQkJICogdGhlIHJl cXVlc3RlcgorCQkJCS8qIHByZXBhcmluZyBhIHJlc3BvbnNlIGZvciB0aGUgcmVxdWVzdCBhbmQK KwkJCQkgKiBzZW5kIGl0IHRvIHRoZSByZXF1ZXN0ZXIKIAkJCQkgKi8KIAkJCQltZW1jcHkoJnJl c3AsICZyZXEsIHNpemVvZihyZXNwKSk7Ci0JCQkJbWVtY3B5KFJJTkdfR0VUX1JFU1BPTlNFKHJp bmcsIHJpbmctPnJzcF9wcm9kX3B2dCksCisJCQkJbWVtY3B5KFJJTkdfR0VUX1JFU1BPTlNFKHJp bmcsCisJCQkJCQkJIHJpbmctPnJzcF9wcm9kX3B2dCksCiAJCQkJCQkJICZyZXNwLCBzaXplb2Yo cmVzcCkpOwogCQkJCXJpbmctPnJzcF9wcm9kX3B2dCsrOwogCiAJCQkJZGV2X2RiZyhoeV9kcnZf cHJpdi0+ZGV2LAotCQkJCQkic2VuZGluZyByZXNwb25zZSB0byBleHBvcnRlciBmb3IgcmVxdWVz dCBpZDolZFxuIiwKKwkJCQkJInJlc3BvbmRpbmcgdG8gZXhwb3J0ZXIgZm9yIHJlcTolZFxuIiwK IAkJCQkJcmVzcC5yZXNwX2lkKTsKIAotCQkJCVJJTkdfUFVTSF9SRVNQT05TRVNfQU5EX0NIRUNL X05PVElGWShyaW5nLCBub3RpZnkpOworCQkJCVJJTkdfUFVTSF9SRVNQT05TRVNfQU5EX0NIRUNL X05PVElGWShyaW5nLAorCQkJCQkJCQkgICAgIG5vdGlmeSk7CiAKLQkJCQlpZiAobm90aWZ5KSB7 CisJCQkJaWYgKG5vdGlmeSkKIAkJCQkJbm90aWZ5X3JlbW90ZV92aWFfaXJxKHJpbmdfaW5mby0+ aXJxKTsKLQkJCQl9CiAJCQl9CiAKIAkJCVJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFUVVFU1RTKHJp bmcsIG1vcmVfdG9fZG8pOwpAQCAtOTA1LDQxICs5MDQsNDAgQEAgc3RhdGljIGlycXJldHVybl90 IGZyb250X3JpbmdfaXNyKGludCBpcnEsIHZvaWQgKmluZm8pCiAJCQlkZXZfZGJnKGh5X2Rydl9w cml2LT5kZXYsCiAJCQkJImdldHRpbmcgcmVzcG9uc2UgZnJvbSBpbXBvcnRlclxuIik7CiAKLQkJ CWlmIChyZXFfcGVuZGluZy5yZXFfaWQgPT0gcmVzcC0+cmVzcF9pZCkgeworCQkJaWYgKHJlcV9w ZW5kaW5nLnJlcV9pZCA9PSByZXNwLT5yZXNwX2lkKQogCQkJCXJlcV9wZW5kaW5nLnN0YXQgPSBy ZXNwLT5zdGF0OwotCQkJfQogCiAJCQlpZiAocmVzcC0+c3RhdCA9PSBIWVBFUl9ETUFCVUZfUkVR X05FRURTX0ZPTExPV19VUCkgewogCQkJCS8qIHBhcnNpbmcgcmVzcG9uc2UgKi8KIAkJCQlyZXQg PSBoeXBlcl9kbWFidWZfbXNnX3BhcnNlKHJpbmdfaW5mby0+cmRvbWFpbiwKLQkJCQkJCQkoc3Ry dWN0IGh5cGVyX2RtYWJ1Zl9yZXEgKilyZXNwKTsKKwkJCQkJKHN0cnVjdCBoeXBlcl9kbWFidWZf cmVxICopcmVzcCk7CiAKIAkJCQlpZiAocmV0IDwgMCkgewogCQkJCQlkZXZfZXJyKGh5X2Rydl9w cml2LT5kZXYsCi0JCQkJCQkiZ2V0dGluZyBlcnJvciB3aGlsZSBwYXJzaW5nIHJlc3BvbnNlXG4i KTsKKwkJCQkJCSJlcnIgd2hpbGUgcGFyc2luZyByZXNwXG4iKTsKIAkJCQl9CiAJCQl9IGVsc2Ug aWYgKHJlc3AtPnN0YXQgPT0gSFlQRVJfRE1BQlVGX1JFUV9QUk9DRVNTRUQpIHsKLQkJCQkvKiBm b3IgZGVidWdnaW5nIGRtYV9idWYgcmVtb3RlIHN5bmNocm9uaXphdGlvbiAqLworCQkJCS8qIGZv ciBkZWJ1Z2dpbmcgZG1hX2J1ZiByZW1vdGUgc3luY2ggKi8KIAkJCQlkZXZfZGJnKGh5X2Rydl9w cml2LT5kZXYsCiAJCQkJCSJvcmlnaW5hbCByZXF1ZXN0ID0gMHgleFxuIiwgcmVzcC0+Y21kKTsK IAkJCQlkZXZfZGJnKGh5X2Rydl9wcml2LT5kZXYsCi0JCQkJCSJKdXN0IGdvdCBIWVBFUl9ETUFC VUZfUkVRX1BST0NFU1NFRFxuIik7CisJCQkJCSJnb3QgSFlQRVJfRE1BQlVGX1JFUV9QUk9DRVNT RURcbiIpOwogCQkJfSBlbHNlIGlmIChyZXNwLT5zdGF0ID09IEhZUEVSX0RNQUJVRl9SRVFfRVJS T1IpIHsKLQkJCQkvKiBmb3IgZGVidWdnaW5nIGRtYV9idWYgcmVtb3RlIHN5bmNocm9uaXphdGlv biAqLworCQkJCS8qIGZvciBkZWJ1Z2dpbmcgZG1hX2J1ZiByZW1vdGUgc3luY2ggKi8KIAkJCQlk ZXZfZGJnKGh5X2Rydl9wcml2LT5kZXYsCiAJCQkJCSJvcmlnaW5hbCByZXF1ZXN0ID0gMHgleFxu IiwgcmVzcC0+Y21kKTsKIAkJCQlkZXZfZGJnKGh5X2Rydl9wcml2LT5kZXYsCi0JCQkJCSJKdXN0 IGdvdCBIWVBFUl9ETUFCVUZfUkVRX0VSUk9SXG4iKTsKKwkJCQkJImdvdCBIWVBFUl9ETUFCVUZf UkVRX0VSUk9SXG4iKTsKIAkJCX0KIAkJfQogCiAJCXJpbmctPnJzcF9jb25zID0gaTsKIAotCQlp ZiAoaSAhPSByaW5nLT5yZXFfcHJvZF9wdnQpIHsKKwkJaWYgKGkgIT0gcmluZy0+cmVxX3Byb2Rf cHZ0KQogCQkJUklOR19GSU5BTF9DSEVDS19GT1JfUkVTUE9OU0VTKHJpbmcsIG1vcmVfdG9fZG8p OwotCQl9IGVsc2UgeworCQllbHNlCiAJCQlyaW5nLT5zcmluZy0+cnNwX2V2ZW50ID0gaSsxOwot CQl9CisKIAl9IHdoaWxlIChtb3JlX3RvX2RvKTsKIAogCXJldHVybiBJUlFfSEFORExFRDsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1hYnVmX3hlbl9j b21tLmggYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYveGVuL2h5cGVyX2RtYWJ1Zl94ZW5fY29t bS5oCmluZGV4IDgwNzQxYzEuLjhlMmQxZDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2h5cGVy X2RtYWJ1Zi94ZW4vaHlwZXJfZG1hYnVmX3hlbl9jb21tLmgKKysrIGIvZHJpdmVycy94ZW4vaHlw ZXJfZG1hYnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX2NvbW0uaApAQCAtMjksMjMgKzI5LDI1IEBA CiAjaW5jbHVkZSAieGVuL3hlbmJ1cy5oIgogI2luY2x1ZGUgIi4uL2h5cGVyX2RtYWJ1Zl9tc2cu aCIKIAorZXh0ZXJuIGludCB4ZW5zdG9yZWRfcmVhZHk7CisKIERFRklORV9SSU5HX1RZUEVTKHhl bl9jb21tLCBzdHJ1Y3QgaHlwZXJfZG1hYnVmX3JlcSwgc3RydWN0IGh5cGVyX2RtYWJ1Zl9yZXNw KTsKIAogc3RydWN0IHhlbl9jb21tX3R4X3JpbmdfaW5mbyB7Ci0gICAgICAgIHN0cnVjdCB4ZW5f Y29tbV9mcm9udF9yaW5nIHJpbmdfZnJvbnQ7CisJc3RydWN0IHhlbl9jb21tX2Zyb250X3Jpbmcg cmluZ19mcm9udDsKIAlpbnQgcmRvbWFpbjsKLSAgICAgICAgaW50IGdyZWZfcmluZzsKLSAgICAg ICAgaW50IGlycTsKLSAgICAgICAgaW50IHBvcnQ7CisJaW50IGdyZWZfcmluZzsKKwlpbnQgaXJx OworCWludCBwb3J0OwogCXN0cnVjdCBtdXRleCBsb2NrOwogCXN0cnVjdCB4ZW5idXNfd2F0Y2gg d2F0Y2g7CiB9OwogCiBzdHJ1Y3QgeGVuX2NvbW1fcnhfcmluZ19pbmZvIHsKLSAgICAgICAgaW50 IHNkb21haW47Ci0gICAgICAgIGludCBpcnE7Ci0gICAgICAgIGludCBldnRjaG47Ci0gICAgICAg IHN0cnVjdCB4ZW5fY29tbV9iYWNrX3JpbmcgcmluZ19iYWNrOworCWludCBzZG9tYWluOworCWlu dCBpcnE7CisJaW50IGV2dGNobjsKKwlzdHJ1Y3QgeGVuX2NvbW1fYmFja19yaW5nIHJpbmdfYmFj azsKIAlzdHJ1Y3QgZ250dGFiX3VubWFwX2dyYW50X3JlZiB1bm1hcF9vcDsKIH07CiAKQEAgLTcw LDYgKzcyLDcgQEAgdm9pZCBoeXBlcl9kbWFidWZfeGVuX2NsZWFudXBfcnhfcmJ1ZihpbnQgZG9t aWQpOwogdm9pZCBoeXBlcl9kbWFidWZfeGVuX2Rlc3Ryb3lfY29tbSh2b2lkKTsKIAogLyogc2Vu ZCByZXF1ZXN0IHRvIHRoZSByZW1vdGUgZG9tYWluICovCi1pbnQgaHlwZXJfZG1hYnVmX3hlbl9z ZW5kX3JlcShpbnQgZG9taWQsIHN0cnVjdCBoeXBlcl9kbWFidWZfcmVxICpyZXEsIGludCB3YWl0 KTsKK2ludCBoeXBlcl9kbWFidWZfeGVuX3NlbmRfcmVxKGludCBkb21pZCwgc3RydWN0IGh5cGVy X2RtYWJ1Zl9yZXEgKnJlcSwKKwkJCSAgICAgIGludCB3YWl0KTsKIAogI2VuZGlmIC8vIF9fSFlQ RVJfRE1BQlVGX1hFTl9DT01NX0hfXwpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1h YnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX2NvbW1fbGlzdC5jIGIvZHJpdmVycy94ZW4vaHlwZXJf ZG1hYnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX2NvbW1fbGlzdC5jCmluZGV4IDdhOGVjNzMuLjM0 M2FhYjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1h YnVmX3hlbl9jb21tX2xpc3QuYworKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYveGVuL2h5 cGVyX2RtYWJ1Zl94ZW5fY29tbV9saXN0LmMKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlIDxs aW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8bGludXgv Y2Rldi5oPgotI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CiAjaW5jbHVkZSA8bGludXgvaGFzaHRh YmxlLmg+CiAjaW5jbHVkZSA8eGVuL2dyYW50X3RhYmxlLmg+CiAjaW5jbHVkZSAiLi4vaHlwZXJf ZG1hYnVmX2Rydi5oIgpAQCAtNDEsNyArNDAsNyBAQAogREVDTEFSRV9IQVNIVEFCTEUoeGVuX2Nv bW1fdHhfcmluZ19oYXNoLCBNQVhfRU5UUllfVFhfUklORyk7CiBERUNMQVJFX0hBU0hUQUJMRSh4 ZW5fY29tbV9yeF9yaW5nX2hhc2gsIE1BWF9FTlRSWV9SWF9SSU5HKTsKIAotdm9pZCB4ZW5fY29t bV9yaW5nX3RhYmxlX2luaXQoKQordm9pZCB4ZW5fY29tbV9yaW5nX3RhYmxlX2luaXQodm9pZCkK IHsKIAloYXNoX2luaXQoeGVuX2NvbW1fcnhfcmluZ19oYXNoKTsKIAloYXNoX2luaXQoeGVuX2Nv bW1fdHhfcmluZ19oYXNoKTsKQEAgLTUzLDExICs1Miw4IEBAIGludCB4ZW5fY29tbV9hZGRfdHhf cmluZyhzdHJ1Y3QgeGVuX2NvbW1fdHhfcmluZ19pbmZvICpyaW5nX2luZm8pCiAKIAlpbmZvX2Vu dHJ5ID0ga21hbGxvYyhzaXplb2YoKmluZm9fZW50cnkpLCBHRlBfS0VSTkVMKTsKIAotCWlmICgh aW5mb19lbnRyeSkgewotCQlkZXZfZXJyKGh5X2Rydl9wcml2LT5kZXYsCi0JCQkiTm8gbWVtb3J5 IGxlZnQgdG8gYmUgYWxsb2NhdGVkXG4iKTsKKwlpZiAoIWluZm9fZW50cnkpCiAJCXJldHVybiAt RU5PTUVNOwotCX0KIAogCWluZm9fZW50cnktPmluZm8gPSByaW5nX2luZm87CiAKQEAgLTczLDEx ICs2OSw4IEBAIGludCB4ZW5fY29tbV9hZGRfcnhfcmluZyhzdHJ1Y3QgeGVuX2NvbW1fcnhfcmlu Z19pbmZvICpyaW5nX2luZm8pCiAKIAlpbmZvX2VudHJ5ID0ga21hbGxvYyhzaXplb2YoKmluZm9f ZW50cnkpLCBHRlBfS0VSTkVMKTsKIAotCWlmICghaW5mb19lbnRyeSkgewotCQlkZXZfZXJyKGh5 X2Rydl9wcml2LT5kZXYsCi0JCQkiTm8gbWVtb3J5IGxlZnQgdG8gYmUgYWxsb2NhdGVkXG4iKTsK KwlpZiAoIWluZm9fZW50cnkpCiAJCXJldHVybiAtRU5PTUVNOwotCX0KIAogCWluZm9fZW50cnkt PmluZm8gPSByaW5nX2luZm87CiAKQEAgLTkzLDcgKzg2LDcgQEAgc3RydWN0IHhlbl9jb21tX3R4 X3JpbmdfaW5mbyAqeGVuX2NvbW1fZmluZF90eF9yaW5nKGludCBkb21pZCkKIAlpbnQgYmt0Owog CiAJaGFzaF9mb3JfZWFjaCh4ZW5fY29tbV90eF9yaW5nX2hhc2gsIGJrdCwgaW5mb19lbnRyeSwg bm9kZSkKLQkJaWYoaW5mb19lbnRyeS0+aW5mby0+cmRvbWFpbiA9PSBkb21pZCkKKwkJaWYgKGlu Zm9fZW50cnktPmluZm8tPnJkb21haW4gPT0gZG9taWQpCiAJCQlyZXR1cm4gaW5mb19lbnRyeS0+ aW5mbzsKIAogCXJldHVybiBOVUxMOwpAQCAtMTA1LDcgKzk4LDcgQEAgc3RydWN0IHhlbl9jb21t X3J4X3JpbmdfaW5mbyAqeGVuX2NvbW1fZmluZF9yeF9yaW5nKGludCBkb21pZCkKIAlpbnQgYmt0 OwogCiAJaGFzaF9mb3JfZWFjaCh4ZW5fY29tbV9yeF9yaW5nX2hhc2gsIGJrdCwgaW5mb19lbnRy eSwgbm9kZSkKLQkJaWYoaW5mb19lbnRyeS0+aW5mby0+c2RvbWFpbiA9PSBkb21pZCkKKwkJaWYg KGluZm9fZW50cnktPmluZm8tPnNkb21haW4gPT0gZG9taWQpCiAJCQlyZXR1cm4gaW5mb19lbnRy eS0+aW5mbzsKIAogCXJldHVybiBOVUxMOwpAQCAtMTE3LDcgKzExMCw3IEBAIGludCB4ZW5fY29t bV9yZW1vdmVfdHhfcmluZyhpbnQgZG9taWQpCiAJaW50IGJrdDsKIAogCWhhc2hfZm9yX2VhY2go eGVuX2NvbW1fdHhfcmluZ19oYXNoLCBia3QsIGluZm9fZW50cnksIG5vZGUpCi0JCWlmKGluZm9f ZW50cnktPmluZm8tPnJkb21haW4gPT0gZG9taWQpIHsKKwkJaWYgKGluZm9fZW50cnktPmluZm8t PnJkb21haW4gPT0gZG9taWQpIHsKIAkJCWhhc2hfZGVsKCZpbmZvX2VudHJ5LT5ub2RlKTsKIAkJ CWtmcmVlKGluZm9fZW50cnkpOwogCQkJcmV0dXJuIDA7CkBAIC0xMzIsNyArMTI1LDcgQEAgaW50 IHhlbl9jb21tX3JlbW92ZV9yeF9yaW5nKGludCBkb21pZCkKIAlpbnQgYmt0OwogCiAJaGFzaF9m b3JfZWFjaCh4ZW5fY29tbV9yeF9yaW5nX2hhc2gsIGJrdCwgaW5mb19lbnRyeSwgbm9kZSkKLQkJ aWYoaW5mb19lbnRyeS0+aW5mby0+c2RvbWFpbiA9PSBkb21pZCkgeworCQlpZiAoaW5mb19lbnRy eS0+aW5mby0+c2RvbWFpbiA9PSBkb21pZCkgewogCQkJaGFzaF9kZWwoJmluZm9fZW50cnktPm5v ZGUpOwogCQkJa2ZyZWUoaW5mb19lbnRyeSk7CiAJCQlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1hYnVmX3hlbl9jb21tX2xpc3QuaCBi L2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1hYnVmX3hlbl9jb21tX2xpc3Qu aAppbmRleCBjZGU4YWRlLi44NTAyZmU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9oeXBlcl9k bWFidWYveGVuL2h5cGVyX2RtYWJ1Zl94ZW5fY29tbV9saXN0LmgKKysrIGIvZHJpdmVycy94ZW4v aHlwZXJfZG1hYnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX2NvbW1fbGlzdC5oCkBAIC0zMSwxMyAr MzEsMTMgQEAKICNkZWZpbmUgTUFYX0VOVFJZX1JYX1JJTkcgNwogCiBzdHJ1Y3QgeGVuX2NvbW1f dHhfcmluZ19pbmZvX2VudHJ5IHsKLSAgICAgICAgc3RydWN0IHhlbl9jb21tX3R4X3JpbmdfaW5m byAqaW5mbzsKLSAgICAgICAgc3RydWN0IGhsaXN0X25vZGUgbm9kZTsKKwlzdHJ1Y3QgeGVuX2Nv bW1fdHhfcmluZ19pbmZvICppbmZvOworCXN0cnVjdCBobGlzdF9ub2RlIG5vZGU7CiB9OwogCiBz dHJ1Y3QgeGVuX2NvbW1fcnhfcmluZ19pbmZvX2VudHJ5IHsKLSAgICAgICAgc3RydWN0IHhlbl9j b21tX3J4X3JpbmdfaW5mbyAqaW5mbzsKLSAgICAgICAgc3RydWN0IGhsaXN0X25vZGUgbm9kZTsK KwlzdHJ1Y3QgeGVuX2NvbW1fcnhfcmluZ19pbmZvICppbmZvOworCXN0cnVjdCBobGlzdF9ub2Rl IG5vZGU7CiB9OwogCiB2b2lkIHhlbl9jb21tX3JpbmdfdGFibGVfaW5pdCh2b2lkKTsKQEAgLTU0 LDEwICs1NCwxNCBAQCBzdHJ1Y3QgeGVuX2NvbW1fdHhfcmluZ19pbmZvICp4ZW5fY29tbV9maW5k X3R4X3JpbmcoaW50IGRvbWlkKTsKIAogc3RydWN0IHhlbl9jb21tX3J4X3JpbmdfaW5mbyAqeGVu X2NvbW1fZmluZF9yeF9yaW5nKGludCBkb21pZCk7CiAKLS8qIGl0ZXJhdGVzIG92ZXIgYWxsIGV4 cG9ydGVyIHJpbmdzIGFuZCBjYWxscyBwcm92aWRlZCBmdW5jdGlvbiBmb3IgZWFjaCBvZiB0aGVt ICovCisvKiBpdGVyYXRlcyBvdmVyIGFsbCBleHBvcnRlciByaW5ncyBhbmQgY2FsbHMgcHJvdmlk ZWQKKyAqIGZ1bmN0aW9uIGZvciBlYWNoIG9mIHRoZW0KKyAqLwogdm9pZCB4ZW5fY29tbV9mb3Jl YWNoX3R4X3Jpbmcodm9pZCAoKmZ1bmMpKGludCBkb21pZCkpOwogCi0vKiBpdGVyYXRlcyBvdmVy IGFsbCBpbXBvcnRlciByaW5ncyBhbmQgY2FsbHMgcHJvdmlkZWQgZnVuY3Rpb24gZm9yIGVhY2gg b2YgdGhlbSAqLworLyogaXRlcmF0ZXMgb3ZlciBhbGwgaW1wb3J0ZXIgcmluZ3MgYW5kIGNhbGxz IHByb3ZpZGVkCisgKiBmdW5jdGlvbiBmb3IgZWFjaCBvZiB0aGVtCisgKi8KIHZvaWQgeGVuX2Nv bW1fZm9yZWFjaF9yeF9yaW5nKHZvaWQgKCpmdW5jKShpbnQgZG9taWQpKTsKIAogI2VuZGlmIC8v IF9fSFlQRVJfRE1BQlVGX1hFTl9DT01NX0xJU1RfSF9fCmRpZmYgLS1naXQgYS9kcml2ZXJzL3hl bi9oeXBlcl9kbWFidWYveGVuL2h5cGVyX2RtYWJ1Zl94ZW5fZHJ2LmggYi9kcml2ZXJzL3hlbi9o eXBlcl9kbWFidWYveGVuL2h5cGVyX2RtYWJ1Zl94ZW5fZHJ2LmgKaW5kZXggYzVmZWMyNC4uZTVi ZmYwOSAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL3hlbi9oeXBlcl9kbWFi dWZfeGVuX2Rydi5oCisrKyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1h YnVmX3hlbl9kcnYuaApAQCAtMzQsMTEgKzM0LDIwIEBAIGV4dGVybiBzdHJ1Y3QgaHlwZXJfZG1h YnVmX2JhY2tlbmRfb3BzIHhlbl9iYWNrZW5kX29wczsKICAqIHdoZW4gdW5zaGFyaW5nLgogICov CiBzdHJ1Y3QgeGVuX3NoYXJlZF9wYWdlc19pbmZvIHsKLSAgICAgICAgZ3JhbnRfcmVmX3QgbHZs M19ncmVmOyAvKiB0b3AgbGV2ZWwgcmVmaWQgKi8KLSAgICAgICAgZ3JhbnRfcmVmX3QgKmx2bDNf dGFibGU7IC8qIHBhZ2Ugb2YgdG9wIGxldmVsIGFkZHJlc3NpbmcsIGl0IGNvbnRhaW5zIHJlZmlk cyBvZiAybmQgbGV2ZWwgcGFnZXMgKi8KLSAgICAgICAgZ3JhbnRfcmVmX3QgKmx2bDJfdGFibGU7 IC8qIHRhYmxlIG9mIDJuZCBsZXZlbCBwYWdlcywgdGhhdCBjb250YWlucyByZWZpZHMgdG8gZGF0 YSBwYWdlcyAqLwotICAgICAgICBzdHJ1Y3QgZ250dGFiX3VubWFwX2dyYW50X3JlZiogdW5tYXBf b3BzOyAvKiB1bm1hcCBvcHMgZm9yIG1hcHBlZCBwYWdlcyAqLwotICAgICAgICBzdHJ1Y3QgcGFn ZSAqKmRhdGFfcGFnZXM7IC8qIGRhdGEgcGFnZXMgdG8gYmUgdW5tYXBwZWQgKi8KKwkvKiB0b3Ag bGV2ZWwgcmVmaWQgKi8KKwlncmFudF9yZWZfdCBsdmwzX2dyZWY7CisKKwkvKiBwYWdlIG9mIHRv cCBsZXZlbCBhZGRyZXNzaW5nLCBpdCBjb250YWlucyByZWZpZHMgb2YgMm5kIGx2bCBwYWdlcyAq LworCWdyYW50X3JlZl90ICpsdmwzX3RhYmxlOworCisJLyogdGFibGUgb2YgMm5kIGxldmVsIHBh Z2VzLCB0aGF0IGNvbnRhaW5zIHJlZmlkcyB0byBkYXRhIHBhZ2VzICovCisJZ3JhbnRfcmVmX3Qg Kmx2bDJfdGFibGU7CisKKwkvKiB1bm1hcCBvcHMgZm9yIG1hcHBlZCBwYWdlcyAqLworCXN0cnVj dCBnbnR0YWJfdW5tYXBfZ3JhbnRfcmVmICp1bm1hcF9vcHM7CisKKwkvKiBkYXRhIHBhZ2VzIHRv IGJlIHVubWFwcGVkICovCisJc3RydWN0IHBhZ2UgKipkYXRhX3BhZ2VzOwogfTsKIAogI2VuZGlm IC8vIF9fSFlQRVJfRE1BQlVGX1hFTl9DT01NX0hfXwpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4v aHlwZXJfZG1hYnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX3NobS5jIGIvZHJpdmVycy94ZW4vaHlw ZXJfZG1hYnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX3NobS5jCmluZGV4IDQyNDQxN2QuLmE4NjMx M2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1hYnVm X3hlbl9zaG0uYworKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYveGVuL2h5cGVyX2RtYWJ1 Zl94ZW5fc2htLmMKQEAgLTQwLDE5ICs0MCwyMSBAQAogICogQ3JlYXRlcyAyIGxldmVsIHBhZ2Ug ZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgcmVmZXJlbmNpbmcgc2hhcmVkIHBhZ2VzLgogICogVG9w IGxldmVsIHBhZ2UgaXMgYSBzaW5nbGUgcGFnZSB0aGF0IGNvbnRhaW5zIHVwIHRvIDEwMjQgcmVm aWRzIHRoYXQKICAqIHBvaW50IHRvIDJuZCBsZXZlbCBwYWdlcy4KKyAqCiAgKiBFYWNoIDJuZCBs ZXZlbCBwYWdlIGNvbnRhaW5zIHVwIHRvIDEwMjQgcmVmaWRzIHRoYXQgcG9pbnQgdG8gc2hhcmVk CiAgKiBkYXRhIHBhZ2VzLgorICoKICAqIFRoZXJlIHdpbGwgYWx3YXlzIGJlIG9uZSB0b3AgbGV2 ZWwgcGFnZSBhbmQgbnVtYmVyIG9mIDJuZCBsZXZlbCBwYWdlcwogICogZGVwZW5kcyBvbiBudW1i ZXIgb2Ygc2hhcmVkIGRhdGEgcGFnZXMuCiAgKgogICogICAgICAzcmQgbGV2ZWwgcGFnZSAgICAg ICAgICAgICAgICAybmQgbGV2ZWwgcGFnZXMgICAgICAgICAgICBEYXRhIHBhZ2VzCi0gKiArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICDilIw+Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKyDilIwt LS0+Ky0tLS0tLS0tLS0tLSsKLSAqIHwybmQgbGV2ZWwgcGFnZSAwIHJlZmlkICAgfC0tLeKUmCB8 RGF0YSBwYWdlIDAgcmVmaWQgICB8LeKUmCAgICB8RGF0YSBwYWdlIDAgfAotICogfDJuZCBsZXZl bCBwYWdlIDEgcmVmaWQgICB8LS0t4pSQIHxEYXRhIHBhZ2UgMSByZWZpZCAgIHwt4pSQICAgICst LS0tLS0tLS0tLS0rCisgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICDilIw+Ky0tLS0t LS0tLS0tLS0tLS0tLS0tKyDilIw+Ky0tLS0tLS0tLS0tLSsKKyAqIHwybmQgbGV2ZWwgcGFnZSAw IHJlZmlkICAgfC0tLeKUmCB8RGF0YSBwYWdlIDAgcmVmaWQgICB8LeKUmCB8RGF0YSBwYWdlIDAg fAorICogfDJuZCBsZXZlbCBwYWdlIDEgcmVmaWQgICB8LS0t4pSQIHxEYXRhIHBhZ2UgMSByZWZp ZCAgIHwt4pSQICstLS0tLS0tLS0tLS0rCiAgKiB8ICAgICAgICAgICAuLi4gICAgICAgICAgIHwg ICB8IHwgICAgIC4uLi4gICAgICAgICAgIHwgfAotICogfDJuZCBsZXZlbCBwYWdlIDEwMjMgcmVm aWR8LeKUkCB8IHxEYXRhIHBhZ2UgMTAyMyByZWZpZHwg4pSULS0tPistLS0tLS0tLS0tLS0rCi0g KiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfCB8ICstLS0tLS0tLS0tLS0tLS0tLS0tLSsg ICAgICB8RGF0YSBwYWdlIDEgfAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLSsKKyAqIHwybmQgbGV2ZWwg cGFnZSAxMDIzIHJlZmlkfC3ilJAgfCB8RGF0YSBwYWdlIDEwMjMgcmVmaWR8IOKUlD4rLS0tLS0t LS0tLS0tKworICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHwgfCArLS0tLS0tLS0tLS0t LS0tLS0tLS0rICAgfERhdGEgcGFnZSAxIHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0rCiAgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCDilJQ+Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICB8RGF0YSBwYWdlIDEwMjQgcmVmaWR8CiAgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIHxEYXRhIHBhZ2UgMTAyNSByZWZpZHwKQEAg LTY1LDkgKzY3LDggQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfERhdGEg cGFnZSAxMDQ3NTUyIHJlZmlkfAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 RGF0YSBwYWdlIDEwNDc1NTMgcmVmaWR8CiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgLi4uICAgICAgICAgICAgIHwKLSAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfERhdGEgcGFnZSAxMDQ4NTc1IHJlZmlkfC0tPistLS0tLS0tLS0tLS0tLS0tLS0r Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSsgICB8RGF0YSBwYWdlIDEwNDg1NzUgfAotICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsK KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfERhdGEgcGFnZSAxMDQ4NTc1IHJl ZmlkfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rCiAgKgogICogVXNpbmcgc3VjaCAyIGxldmVsIHN0cnVjdHVyZSBpdCBpcyBwb3Nz aWJsZSB0byByZWZlcmVuY2UgdXAgdG8gNEdCIG9mCiAgKiBzaGFyZWQgZGF0YSB1c2luZyBzaW5n bGUgcmVmaWQgcG9pbnRpbmcgdG8gdG9wIGxldmVsIHBhZ2UuCkBAIC04NSw3ICs4Niw3IEBAIGlu dCBoeXBlcl9kbWFidWZfeGVuX3NoYXJlX3BhZ2VzKHN0cnVjdCBwYWdlICoqcGFnZXMsIGludCBk b21pZCwgaW50IG5lbnRzLAogCSAqIENhbGN1bGF0ZSBudW1iZXIgb2YgcGFnZXMgbmVlZGVkIGZv ciAybmQgbGV2ZWwgYWRkcmVzaW5nOgogCSAqLwogCWludCBuX2x2bDJfZ3JlZnMgPSAobmVudHMv UkVGU19QRVJfUEFHRSArCi0JCQkgICAoKG5lbnRzICUgUkVGU19QRVJfUEFHRSkgPyAxOiAwKSk7 CisJCQkgICAoKG5lbnRzICUgUkVGU19QRVJfUEFHRSkgPyAxIDogMCkpOwogCiAJc3RydWN0IHhl bl9zaGFyZWRfcGFnZXNfaW5mbyAqc2hfcGFnZXNfaW5mbzsKIAlpbnQgaTsKQEAgLTk1LDIzICs5 NiwyMiBAQCBpbnQgaHlwZXJfZG1hYnVmX3hlbl9zaGFyZV9wYWdlcyhzdHJ1Y3QgcGFnZSAqKnBh Z2VzLCBpbnQgZG9taWQsIGludCBuZW50cywKIAogCXNoX3BhZ2VzX2luZm8gPSBrbWFsbG9jKHNp emVvZigqc2hfcGFnZXNfaW5mbyksIEdGUF9LRVJORUwpOwogCi0JaWYgKCFzaF9wYWdlc19pbmZv KSB7Ci0JCWRldl9lcnIoaHlfZHJ2X3ByaXYtPmRldiwgIk5vIG1vcmUgc3BhY2UgbGVmdFxuIik7 CisJaWYgKCFzaF9wYWdlc19pbmZvKQogCQlyZXR1cm4gLUVOT01FTTsKLQl9CiAKIAkqcmVmc19p bmZvID0gKHZvaWQgKilzaF9wYWdlc19pbmZvOwogCiAJLyogc2hhcmUgZGF0YSBwYWdlcyBpbiBy ZWFkb25seSBtb2RlIGZvciBzZWN1cml0eSAqLwotCWZvciAoaT0wOyBpPG5lbnRzOyBpKyspIHsK Kwlmb3IgKGkgPSAwOyBpIDwgbmVudHM7IGkrKykgewogCQlsdmwyX3RhYmxlW2ldID0gZ250dGFi X2dyYW50X2ZvcmVpZ25fYWNjZXNzKGRvbWlkLAogCQkJCQlwZm5fdG9fbWZuKHBhZ2VfdG9fcGZu KHBhZ2VzW2ldKSksCi0JCQkJCXRydWUgLyogcmVhZC1vbmx5IGZyb20gcmVtb3RlIGRvbWFpbiAq Lyk7CisJCQkJCXRydWUgLyogcmVhZCBvbmx5ICovKTsKIAkJaWYgKGx2bDJfdGFibGVbaV0gPT0g LUVOT1NQQykgewotCQkJZGV2X2VycihoeV9kcnZfcHJpdi0+ZGV2LCAiTm8gbW9yZSBzcGFjZSBs ZWZ0IGluIGdyYW50IHRhYmxlXG4iKTsKKwkJCWRldl9lcnIoaHlfZHJ2X3ByaXYtPmRldiwKKwkJ CQkiTm8gbW9yZSBzcGFjZSBsZWZ0IGluIGdyYW50IHRhYmxlXG4iKTsKIAogCQkJLyogVW5zaGFy ZSBhbGwgYWxyZWFkeSBzaGFyZWQgcGFnZXMgZm9yIGx2bDIgKi8KLQkJCXdoaWxlKGktLSkgewor CQkJd2hpbGUgKGktLSkgewogCQkJCWdudHRhYl9lbmRfZm9yZWlnbl9hY2Nlc3NfcmVmKGx2bDJf dGFibGVbaV0sIDApOwogCQkJCWdudHRhYl9mcmVlX2dyYW50X3JlZmVyZW5jZShsdmwyX3RhYmxl W2ldKTsKIAkJCX0KQEAgLTEyMCwyMyArMTIwLDI2IEBAIGludCBoeXBlcl9kbWFidWZfeGVuX3No YXJlX3BhZ2VzKHN0cnVjdCBwYWdlICoqcGFnZXMsIGludCBkb21pZCwgaW50IG5lbnRzLAogCX0K IAogCS8qIFNoYXJlIDJuZCBsZXZlbCBhZGRyZXNzaW5nIHBhZ2VzIGluIHJlYWRvbmx5IG1vZGUq LwotCWZvciAoaT0wOyBpPCBuX2x2bDJfZ3JlZnM7IGkrKykgeworCWZvciAoaSA9IDA7IGkgPCBu X2x2bDJfZ3JlZnM7IGkrKykgewogCQlsdmwzX3RhYmxlW2ldID0gZ250dGFiX2dyYW50X2ZvcmVp Z25fYWNjZXNzKGRvbWlkLAotCQkJCQl2aXJ0X3RvX21mbigodW5zaWduZWQgbG9uZylsdmwyX3Rh YmxlK2kqUEFHRV9TSVpFICksCisJCQkJCXZpcnRfdG9fbWZuKAorCQkJCQkodW5zaWduZWQgbG9u ZylsdmwyX3RhYmxlK2kqUEFHRV9TSVpFKSwKIAkJCQkJdHJ1ZSk7CiAKIAkJaWYgKGx2bDNfdGFi bGVbaV0gPT0gLUVOT1NQQykgewotCQkJZGV2X2VycihoeV9kcnZfcHJpdi0+ZGV2LCAiTm8gbW9y ZSBzcGFjZSBsZWZ0IGluIGdyYW50IHRhYmxlXG4iKTsKKwkJCWRldl9lcnIoaHlfZHJ2X3ByaXYt PmRldiwKKwkJCQkiTm8gbW9yZSBzcGFjZSBsZWZ0IGluIGdyYW50IHRhYmxlXG4iKTsKIAogCQkJ LyogVW5zaGFyZSBhbGwgYWxyZWFkeSBzaGFyZWQgcGFnZXMgZm9yIGx2bDMgKi8KLQkJCXdoaWxl KGktLSkgeworCQkJd2hpbGUgKGktLSkgewogCQkJCWdudHRhYl9lbmRfZm9yZWlnbl9hY2Nlc3Nf cmVmKGx2bDNfdGFibGVbaV0sIDEpOwogCQkJCWdudHRhYl9mcmVlX2dyYW50X3JlZmVyZW5jZShs dmwzX3RhYmxlW2ldKTsKIAkJCX0KIAogCQkJLyogVW5zaGFyZSBhbGwgcGFnZXMgZm9yIGx2bDIg Ki8KLQkJCXdoaWxlKG5lbnRzLS0pIHsKLQkJCQlnbnR0YWJfZW5kX2ZvcmVpZ25fYWNjZXNzX3Jl ZihsdmwyX3RhYmxlW25lbnRzXSwgMCk7CisJCQl3aGlsZSAobmVudHMtLSkgeworCQkJCWdudHRh Yl9lbmRfZm9yZWlnbl9hY2Nlc3NfcmVmKAorCQkJCQkJCWx2bDJfdGFibGVbbmVudHNdLCAwKTsK IAkJCQlnbnR0YWJfZnJlZV9ncmFudF9yZWZlcmVuY2UobHZsMl90YWJsZVtuZW50c10pOwogCQkJ fQogCkBAIC0xNTAsMTYgKzE1MywxNyBAQCBpbnQgaHlwZXJfZG1hYnVmX3hlbl9zaGFyZV9wYWdl cyhzdHJ1Y3QgcGFnZSAqKnBhZ2VzLCBpbnQgZG9taWQsIGludCBuZW50cywKIAkJCXRydWUpOwog CiAJaWYgKGx2bDNfZ3JlZiA9PSAtRU5PU1BDKSB7Ci0JCWRldl9lcnIoaHlfZHJ2X3ByaXYtPmRl diwgIk5vIG1vcmUgc3BhY2UgbGVmdCBpbiBncmFudCB0YWJsZVxuIik7CisJCWRldl9lcnIoaHlf ZHJ2X3ByaXYtPmRldiwKKwkJCSJObyBtb3JlIHNwYWNlIGxlZnQgaW4gZ3JhbnQgdGFibGVcbiIp OwogCiAJCS8qIFVuc2hhcmUgYWxsIHBhZ2VzIGZvciBsdmwzICovCi0JCXdoaWxlKGktLSkgewor CQl3aGlsZSAoaS0tKSB7CiAJCQlnbnR0YWJfZW5kX2ZvcmVpZ25fYWNjZXNzX3JlZihsdmwzX3Rh YmxlW2ldLCAxKTsKIAkJCWdudHRhYl9mcmVlX2dyYW50X3JlZmVyZW5jZShsdmwzX3RhYmxlW2ld KTsKIAkJfQogCiAJCS8qIFVuc2hhcmUgYWxsIHBhZ2VzIGZvciBsdmwyICovCi0JCXdoaWxlKG5l bnRzLS0pIHsKKwkJd2hpbGUgKG5lbnRzLS0pIHsKIAkJCWdudHRhYl9lbmRfZm9yZWlnbl9hY2Nl c3NfcmVmKGx2bDJfdGFibGVbbmVudHNdLCAwKTsKIAkJCWdudHRhYl9mcmVlX2dyYW50X3JlZmVy ZW5jZShsdmwyX3RhYmxlW25lbnRzXSk7CiAJCX0KQEAgLTE4NywxMCArMTkxLDExIEBAIGludCBo eXBlcl9kbWFidWZfeGVuX3NoYXJlX3BhZ2VzKHN0cnVjdCBwYWdlICoqcGFnZXMsIGludCBkb21p ZCwgaW50IG5lbnRzLAogCXJldHVybiAtRU5PU1BDOwogfQogCi1pbnQgaHlwZXJfZG1hYnVmX3hl bl91bnNoYXJlX3BhZ2VzKHZvaWQgKipyZWZzX2luZm8sIGludCBuZW50cykgeworaW50IGh5cGVy X2RtYWJ1Zl94ZW5fdW5zaGFyZV9wYWdlcyh2b2lkICoqcmVmc19pbmZvLCBpbnQgbmVudHMpCit7 CiAJc3RydWN0IHhlbl9zaGFyZWRfcGFnZXNfaW5mbyAqc2hfcGFnZXNfaW5mbzsKIAlpbnQgbl9s dmwyX2dyZWZzID0gKG5lbnRzL1JFRlNfUEVSX1BBR0UgKwotCQkJICAgICgobmVudHMgJSBSRUZT X1BFUl9QQUdFKSA/IDE6IDApKTsKKwkJCSAgICAoKG5lbnRzICUgUkVGU19QRVJfUEFHRSkgPyAx IDogMCkpOwogCWludCBpOwogCiAJZGV2X2RiZyhoeV9kcnZfcHJpdi0+ZGV2LCAiJXMgZW50cnlc biIsIF9fZnVuY19fKTsKQEAgLTIwNiwyOCArMjExLDI4IEBAIGludCBoeXBlcl9kbWFidWZfeGVu X3Vuc2hhcmVfcGFnZXModm9pZCAqKnJlZnNfaW5mbywgaW50IG5lbnRzKSB7CiAKIAkvKiBFbmQg Zm9yZWlnbiBhY2Nlc3MgZm9yIGRhdGEgcGFnZXMsIGJ1dCBkbyBub3QgZnJlZSB0aGVtICovCiAJ Zm9yIChpID0gMDsgaSA8IG5lbnRzOyBpKyspIHsKLQkJaWYgKGdudHRhYl9xdWVyeV9mb3JlaWdu X2FjY2VzcyhzaF9wYWdlc19pbmZvLT5sdmwyX3RhYmxlW2ldKSkgeworCQlpZiAoZ250dGFiX3F1 ZXJ5X2ZvcmVpZ25fYWNjZXNzKHNoX3BhZ2VzX2luZm8tPmx2bDJfdGFibGVbaV0pKQogCQkJZGV2 X3dhcm4oaHlfZHJ2X3ByaXYtPmRldiwgInJlZmlkIG5vdCBzaGFyZWQgISFcbiIpOwotCQl9CisK IAkJZ250dGFiX2VuZF9mb3JlaWduX2FjY2Vzc19yZWYoc2hfcGFnZXNfaW5mby0+bHZsMl90YWJs ZVtpXSwgMCk7CiAJCWdudHRhYl9mcmVlX2dyYW50X3JlZmVyZW5jZShzaF9wYWdlc19pbmZvLT5s dmwyX3RhYmxlW2ldKTsKIAl9CiAKIAkvKiBFbmQgZm9yZWlnbiBhY2Nlc3MgZm9yIDJuZCBsZXZl bCBhZGRyZXNzaW5nIHBhZ2VzICovCiAJZm9yIChpID0gMDsgaSA8IG5fbHZsMl9ncmVmczsgaSsr KSB7Ci0JCWlmIChnbnR0YWJfcXVlcnlfZm9yZWlnbl9hY2Nlc3Moc2hfcGFnZXNfaW5mby0+bHZs M190YWJsZVtpXSkpIHsKKwkJaWYgKGdudHRhYl9xdWVyeV9mb3JlaWduX2FjY2VzcyhzaF9wYWdl c19pbmZvLT5sdmwzX3RhYmxlW2ldKSkKIAkJCWRldl93YXJuKGh5X2Rydl9wcml2LT5kZXYsICJy ZWZpZCBub3Qgc2hhcmVkICEhXG4iKTsKLQkJfQotCQlpZiAoIWdudHRhYl9lbmRfZm9yZWlnbl9h Y2Nlc3NfcmVmKHNoX3BhZ2VzX2luZm8tPmx2bDNfdGFibGVbaV0sIDEpKSB7CisKKwkJaWYgKCFn bnR0YWJfZW5kX2ZvcmVpZ25fYWNjZXNzX3JlZigKKwkJCQkJc2hfcGFnZXNfaW5mby0+bHZsM190 YWJsZVtpXSwgMSkpCiAJCQlkZXZfd2FybihoeV9kcnZfcHJpdi0+ZGV2LCAicmVmaWQgc3RpbGwg aW4gdXNlISEhXG4iKTsKLQkJfQorCiAJCWdudHRhYl9mcmVlX2dyYW50X3JlZmVyZW5jZShzaF9w YWdlc19pbmZvLT5sdmwzX3RhYmxlW2ldKTsKIAl9CiAKIAkvKiBFbmQgZm9yZWlnbiBhY2Nlc3Mg Zm9yIHRvcCBsZXZlbCBhZGRyZXNzaW5nIHBhZ2UgKi8KLQlpZiAoZ250dGFiX3F1ZXJ5X2ZvcmVp Z25fYWNjZXNzKHNoX3BhZ2VzX2luZm8tPmx2bDNfZ3JlZikpIHsKKwlpZiAoZ250dGFiX3F1ZXJ5 X2ZvcmVpZ25fYWNjZXNzKHNoX3BhZ2VzX2luZm8tPmx2bDNfZ3JlZikpCiAJCWRldl93YXJuKGh5 X2Rydl9wcml2LT5kZXYsICJncmVmIG5vdCBzaGFyZWQgISFcbiIpOwotCX0KIAogCWdudHRhYl9l bmRfZm9yZWlnbl9hY2Nlc3NfcmVmKHNoX3BhZ2VzX2luZm8tPmx2bDNfZ3JlZiwgMSk7CiAJZ250 dGFiX2ZyZWVfZ3JhbnRfcmVmZXJlbmNlKHNoX3BhZ2VzX2luZm8tPmx2bDNfZ3JlZik7CkBAIC0y NDYsMTAgKzI1MSwxMSBAQCBpbnQgaHlwZXJfZG1hYnVmX3hlbl91bnNoYXJlX3BhZ2VzKHZvaWQg KipyZWZzX2luZm8sIGludCBuZW50cykgewogCXJldHVybiAwOwogfQogCi0vKgotICogTWFwcyBw cm92aWRlZCB0b3AgbGV2ZWwgcmVmIGlkIGFuZCB0aGVuIHJldHVybiBhcnJheSBvZiBwYWdlcyBj b250YWluaW5nIGRhdGEgcmVmcy4KKy8qIE1hcHMgcHJvdmlkZWQgdG9wIGxldmVsIHJlZiBpZCBh bmQgdGhlbiByZXR1cm4gYXJyYXkgb2YgcGFnZXMKKyAqIGNvbnRhaW5pbmcgZGF0YSByZWZzLgog ICovCi1zdHJ1Y3QgcGFnZSAqKiBoeXBlcl9kbWFidWZfeGVuX21hcF9zaGFyZWRfcGFnZXMoaW50 IGx2bDNfZ3JlZiwgaW50IGRvbWlkLCBpbnQgbmVudHMsIHZvaWQgKipyZWZzX2luZm8pCitzdHJ1 Y3QgcGFnZSAqKmh5cGVyX2RtYWJ1Zl94ZW5fbWFwX3NoYXJlZF9wYWdlcyhpbnQgbHZsM19ncmVm LCBpbnQgZG9taWQsCisJCQkJCQlpbnQgbmVudHMsIHZvaWQgKipyZWZzX2luZm8pCiB7CiAJc3Ry dWN0IHBhZ2UgKmx2bDNfdGFibGVfcGFnZTsKIAlzdHJ1Y3QgcGFnZSAqKmx2bDJfdGFibGVfcGFn ZXM7CkBAIC0yODAsMTkgKzI4NiwxOSBAQCBzdHJ1Y3QgcGFnZSAqKiBoeXBlcl9kbWFidWZfeGVu X21hcF9zaGFyZWRfcGFnZXMoaW50IGx2bDNfZ3JlZiwgaW50IGRvbWlkLCBpbnQgbgogCXNoX3Bh Z2VzX2luZm8gPSBrbWFsbG9jKHNpemVvZigqc2hfcGFnZXNfaW5mbyksIEdGUF9LRVJORUwpOwog CSpyZWZzX2luZm8gPSAodm9pZCAqKSBzaF9wYWdlc19pbmZvOwogCi0JbHZsMl90YWJsZV9wYWdl cyA9IGtjYWxsb2Moc2l6ZW9mKHN0cnVjdCBwYWdlKiksIG5fbHZsMl9ncmVmcywKKwlsdmwyX3Rh YmxlX3BhZ2VzID0ga2NhbGxvYyhuX2x2bDJfZ3JlZnMsIHNpemVvZihzdHJ1Y3QgcGFnZSAqKSwK IAkJCQkgICBHRlBfS0VSTkVMKTsKIAotCWRhdGFfcGFnZXMgPSBrY2FsbG9jKHNpemVvZihzdHJ1 Y3QgcGFnZSopLCBuZW50cywgR0ZQX0tFUk5FTCk7CisJZGF0YV9wYWdlcyA9IGtjYWxsb2MobmVu dHMsIHNpemVvZihzdHJ1Y3QgcGFnZSAqKSwgR0ZQX0tFUk5FTCk7CiAKLQlsdmwyX21hcF9vcHMg PSBrY2FsbG9jKHNpemVvZigqbHZsMl9tYXBfb3BzKSwgbl9sdmwyX2dyZWZzLAorCWx2bDJfbWFw X29wcyA9IGtjYWxsb2Mobl9sdmwyX2dyZWZzLCBzaXplb2YoKmx2bDJfbWFwX29wcyksCiAJCQkg ICAgICAgR0ZQX0tFUk5FTCk7CiAKLQlsdmwyX3VubWFwX29wcyA9IGtjYWxsb2Moc2l6ZW9mKCps dmwyX3VubWFwX29wcyksIG5fbHZsMl9ncmVmcywKKwlsdmwyX3VubWFwX29wcyA9IGtjYWxsb2Mo bl9sdmwyX2dyZWZzLCBzaXplb2YoKmx2bDJfdW5tYXBfb3BzKSwKIAkJCQkgR0ZQX0tFUk5FTCk7 CiAKLQlkYXRhX21hcF9vcHMgPSBrY2FsbG9jKHNpemVvZigqZGF0YV9tYXBfb3BzKSwgbmVudHMs IEdGUF9LRVJORUwpOwotCWRhdGFfdW5tYXBfb3BzID0ga2NhbGxvYyhzaXplb2YoKmRhdGFfdW5t YXBfb3BzKSwgbmVudHMsIEdGUF9LRVJORUwpOworCWRhdGFfbWFwX29wcyA9IGtjYWxsb2MobmVu dHMsIHNpemVvZigqZGF0YV9tYXBfb3BzKSwgR0ZQX0tFUk5FTCk7CisJZGF0YV91bm1hcF9vcHMg PSBrY2FsbG9jKG5lbnRzLCBzaXplb2YoKmRhdGFfdW5tYXBfb3BzKSwgR0ZQX0tFUk5FTCk7CiAK IAkvKiBNYXAgdG9wIGxldmVsIGFkZHJlc3NpbmcgcGFnZSAqLwogCWlmIChnbnR0YWJfYWxsb2Nf cGFnZXMoMSwgJmx2bDNfdGFibGVfcGFnZSkpIHsKQEAgLTMzMiw3ICszMzgsOCBAQCBzdHJ1Y3Qg cGFnZSAqKiBoeXBlcl9kbWFidWZfeGVuX21hcF9zaGFyZWRfcGFnZXMoaW50IGx2bDNfZ3JlZiwg aW50IGRvbWlkLCBpbnQgbgogCX0KIAogCWZvciAoaSA9IDA7IGkgPCBuX2x2bDJfZ3JlZnM7IGkr KykgewotCQlsdmwyX3RhYmxlID0gKGdyYW50X3JlZl90ICopcGZuX3RvX2thZGRyKHBhZ2VfdG9f cGZuKGx2bDJfdGFibGVfcGFnZXNbaV0pKTsKKwkJbHZsMl90YWJsZSA9IChncmFudF9yZWZfdCAq KXBmbl90b19rYWRkcigKKwkJCQkJcGFnZV90b19wZm4obHZsMl90YWJsZV9wYWdlc1tpXSkpOwog CQlnbnR0YWJfc2V0X21hcF9vcCgmbHZsMl9tYXBfb3BzW2ldLAogCQkJCSAgKHVuc2lnbmVkIGxv bmcpbHZsMl90YWJsZSwgR05UTUFQX2hvc3RfbWFwIHwKIAkJCQkgIEdOVE1BUF9yZWFkb25seSwK QEAgLTM0OCwxMSArMzU1LDExIEBAIHN0cnVjdCBwYWdlICoqIGh5cGVyX2RtYWJ1Zl94ZW5fbWFw X3NoYXJlZF9wYWdlcyhpbnQgbHZsM19ncmVmLCBpbnQgZG9taWQsIGludCBuCiAJCWRldl9lcnIo aHlfZHJ2X3ByaXYtPmRldiwKIAkJCSJ4ZW46IGNhbm5vdCB1bm1hcCB0b3AgbGV2ZWwgcGFnZVxu Iik7CiAJCXJldHVybiBOVUxMOwotCX0gZWxzZSB7Ci0JCS8qIE1hcmsgdGhhdCBwYWdlIHdhcyB1 bm1hcHBlZCAqLwotCQlsdmwzX3VubWFwX29wcy5oYW5kbGUgPSAtMTsKIAl9CiAKKwkvKiBNYXJr IHRoYXQgcGFnZSB3YXMgdW5tYXBwZWQgKi8KKwlsdmwzX3VubWFwX29wcy5oYW5kbGUgPSAtMTsK KwogCWlmIChnbnR0YWJfbWFwX3JlZnMobHZsMl9tYXBfb3BzLCBOVUxMLAogCQkJICAgIGx2bDJf dGFibGVfcGFnZXMsIG5fbHZsMl9ncmVmcykpIHsKIAkJZGV2X2VycihoeV9kcnZfcHJpdi0+ZGV2 LApAQCAtMzg0LDE5ICszOTEsMjIgQEAgc3RydWN0IHBhZ2UgKiogaHlwZXJfZG1hYnVmX3hlbl9t YXBfc2hhcmVkX3BhZ2VzKGludCBsdmwzX2dyZWYsIGludCBkb21pZCwgaW50IG4KIAkJbHZsMl90 YWJsZSA9IHBmbl90b19rYWRkcihwYWdlX3RvX3BmbihsdmwyX3RhYmxlX3BhZ2VzW2ldKSk7CiAJ CWZvciAoaiA9IDA7IGogPCBSRUZTX1BFUl9QQUdFOyBqKyspIHsKIAkJCWdudHRhYl9zZXRfbWFw X29wKCZkYXRhX21hcF9vcHNba10sCi0JCQkJKHVuc2lnbmVkIGxvbmcpcGZuX3RvX2thZGRyKHBh Z2VfdG9fcGZuKGRhdGFfcGFnZXNba10pKSwKKwkJCQkodW5zaWduZWQgbG9uZylwZm5fdG9fa2Fk ZHIoCisJCQkJCQlwYWdlX3RvX3BmbihkYXRhX3BhZ2VzW2tdKSksCiAJCQkJR05UTUFQX2hvc3Rf bWFwIHwgR05UTUFQX3JlYWRvbmx5LAogCQkJCWx2bDJfdGFibGVbal0sIGRvbWlkKTsKIAogCQkJ Z250dGFiX3NldF91bm1hcF9vcCgmZGF0YV91bm1hcF9vcHNba10sCi0JCQkJKHVuc2lnbmVkIGxv bmcpcGZuX3RvX2thZGRyKHBhZ2VfdG9fcGZuKGRhdGFfcGFnZXNba10pKSwKKwkJCQkodW5zaWdu ZWQgbG9uZylwZm5fdG9fa2FkZHIoCisJCQkJCQlwYWdlX3RvX3BmbihkYXRhX3BhZ2VzW2tdKSks CiAJCQkJR05UTUFQX2hvc3RfbWFwIHwgR05UTUFQX3JlYWRvbmx5LCAtMSk7CiAJCQlrKys7CiAJ CX0KIAl9CiAKIAkvKiBmb3IgZ3JlZnMgaW4gdGhlIGxhc3QgbHZsMiB0YWJsZSBwYWdlICovCi0J bHZsMl90YWJsZSA9IHBmbl90b19rYWRkcihwYWdlX3RvX3BmbihsdmwyX3RhYmxlX3BhZ2VzW25f bHZsMl9ncmVmcyAtIDFdKSk7CisJbHZsMl90YWJsZSA9IHBmbl90b19rYWRkcihwYWdlX3RvX3Bm bigKKwkJCQlsdmwyX3RhYmxlX3BhZ2VzW25fbHZsMl9ncmVmcyAtIDFdKSk7CiAKIAlmb3IgKGog PSAwOyBqIDwgbmVudHNfbGFzdDsgaisrKSB7CiAJCWdudHRhYl9zZXRfbWFwX29wKCZkYXRhX21h cF9vcHNba10sCkBAIC00MjQsMTMgKzQzNCwxMiBAQCBzdHJ1Y3QgcGFnZSAqKiBoeXBlcl9kbWFi dWZfeGVuX21hcF9zaGFyZWRfcGFnZXMoaW50IGx2bDNfZ3JlZiwgaW50IGRvbWlkLCBpbnQgbgog CQlkZXZfZXJyKGh5X2Rydl9wcml2LT5kZXYsCiAJCQkiQ2Fubm90IHVubWFwIDJuZCBsZXZlbCBy ZWZzXG4iKTsKIAkJcmV0dXJuIE5VTEw7Ci0JfSBlbHNlIHsKLQkJLyogTWFyayB0aGF0IHBhZ2Vz IHdlcmUgdW5tYXBwZWQgKi8KLQkJZm9yIChpID0gMDsgaSA8IG5fbHZsMl9ncmVmczsgaSsrKSB7 Ci0JCQlsdmwyX3VubWFwX29wc1tpXS5oYW5kbGUgPSAtMTsKLQkJfQogCX0KIAorCS8qIE1hcmsg dGhhdCBwYWdlcyB3ZXJlIHVubWFwcGVkICovCisJZm9yIChpID0gMDsgaSA8IG5fbHZsMl9ncmVm czsgaSsrKQorCQlsdmwyX3VubWFwX29wc1tpXS5oYW5kbGUgPSAtMTsKKwogCWZvciAoaSA9IDA7 IGkgPCBuZW50czsgaSsrKSB7CiAJCWlmIChkYXRhX21hcF9vcHNbaV0uc3RhdHVzKSB7CiAJCQlk ZXZfZXJyKGh5X2Rydl9wcml2LT5kZXYsCkBAIC00ODMsNyArNDkyLDggQEAgc3RydWN0IHBhZ2Ug KiogaHlwZXJfZG1hYnVmX3hlbl9tYXBfc2hhcmVkX3BhZ2VzKGludCBsdmwzX2dyZWYsIGludCBk b21pZCwgaW50IG4KIAlyZXR1cm4gTlVMTDsKIH0KIAotaW50IGh5cGVyX2RtYWJ1Zl94ZW5fdW5t YXBfc2hhcmVkX3BhZ2VzKHZvaWQgKipyZWZzX2luZm8sIGludCBuZW50cykgeworaW50IGh5cGVy X2RtYWJ1Zl94ZW5fdW5tYXBfc2hhcmVkX3BhZ2VzKHZvaWQgKipyZWZzX2luZm8sIGludCBuZW50 cykKK3sKIAlzdHJ1Y3QgeGVuX3NoYXJlZF9wYWdlc19pbmZvICpzaF9wYWdlc19pbmZvOwogCiAJ ZGV2X2RiZyhoeV9kcnZfcHJpdi0+ZGV2LCAiJXMgZW50cnlcbiIsIF9fZnVuY19fKTsKQEAgLTQ5 OCw3ICs1MDgsNyBAQCBpbnQgaHlwZXJfZG1hYnVmX3hlbl91bm1hcF9zaGFyZWRfcGFnZXModm9p ZCAqKnJlZnNfaW5mbywgaW50IG5lbnRzKSB7CiAJfQogCiAJaWYgKGdudHRhYl91bm1hcF9yZWZz KHNoX3BhZ2VzX2luZm8tPnVubWFwX29wcywgTlVMTCwKLQkJCSAgICAgIHNoX3BhZ2VzX2luZm8t PmRhdGFfcGFnZXMsIG5lbnRzKSApIHsKKwkJCSAgICAgIHNoX3BhZ2VzX2luZm8tPmRhdGFfcGFn ZXMsIG5lbnRzKSkgewogCQlkZXZfZXJyKGh5X2Rydl9wcml2LT5kZXYsICJDYW5ub3QgdW5tYXAg ZGF0YSBwYWdlc1xuIik7CiAJCXJldHVybiAtRUZBVUxUOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZl cnMveGVuL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1hYnVmX3hlbl9zaG0uaCBiL2RyaXZlcnMv eGVuL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1hYnVmX3hlbl9zaG0uaAppbmRleCA2MjllYzBm Li5lN2FlNzMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYveGVuL2h5cGVy X2RtYWJ1Zl94ZW5fc2htLmgKKysrIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL3hlbi9oeXBl cl9kbWFidWZfeGVuX3NobS5oCkBAIC0yNSwxOCArMjUsMjEgQEAKICNpZm5kZWYgX19IWVBFUl9E TUFCVUZfWEVOX1NITV9IX18KICNkZWZpbmUgX19IWVBFUl9ETUFCVUZfWEVOX1NITV9IX18KIAot LyogVGhpcyBjb2xsZWN0cyBhbGwgcmVmZXJlbmNlIG51bWJlcnMgZm9yIDJuZCBsZXZlbCBzaGFy ZWQgcGFnZXMgYW5kIGNyZWF0ZSBhIHRhYmxlCi0gKiB3aXRoIHRob3NlIGluIDFzdCBsZXZlbCBz aGFyZWQgcGFnZXMgdGhlbiByZXR1cm4gcmVmZXJlbmNlIG51bWJlcnMgZm9yIHRoaXMgdG9wIGxl dmVsCi0gKiB0YWJsZS4gKi8KKy8qIFRoaXMgY29sbGVjdHMgYWxsIHJlZmVyZW5jZSBudW1iZXJz IGZvciAybmQgbGV2ZWwgc2hhcmVkIHBhZ2VzIGFuZAorICogY3JlYXRlIGEgdGFibGUgd2l0aCB0 aG9zZSBpbiAxc3QgbGV2ZWwgc2hhcmVkIHBhZ2VzIHRoZW4gcmV0dXJuIHJlZmVyZW5jZQorICog bnVtYmVycyBmb3IgdGhpcyB0b3AgbGV2ZWwgdGFibGUuCisgKi8KIGludCBoeXBlcl9kbWFidWZf eGVuX3NoYXJlX3BhZ2VzKHN0cnVjdCBwYWdlICoqcGFnZXMsIGludCBkb21pZCwgaW50IG5lbnRz LAogCQkJCSB2b2lkICoqcmVmc19pbmZvKTsKIAogaW50IGh5cGVyX2RtYWJ1Zl94ZW5fdW5zaGFy ZV9wYWdlcyh2b2lkICoqcmVmc19pbmZvLCBpbnQgbmVudHMpOwogCi0vKiBNYXBzIHByb3ZpZGVk IHRvcCBsZXZlbCByZWYgaWQgYW5kIHRoZW4gcmV0dXJuIGFycmF5IG9mIHBhZ2VzIGNvbnRhaW5p bmcgZGF0YSByZWZzLgorLyogTWFwcyBwcm92aWRlZCB0b3AgbGV2ZWwgcmVmIGlkIGFuZCB0aGVu IHJldHVybiBhcnJheSBvZiBwYWdlcyBjb250YWluaW5nCisgKiBkYXRhIHJlZnMuCiAgKi8KLXN0 cnVjdCBwYWdlICoqIGh5cGVyX2RtYWJ1Zl94ZW5fbWFwX3NoYXJlZF9wYWdlcyhpbnQgbHZsM19n cmVmLCBpbnQgZG9taWQsIGludCBuZW50cywKLQkJCQkJCXZvaWQgKipyZWZzX2luZm8pOworc3Ry dWN0IHBhZ2UgKipoeXBlcl9kbWFidWZfeGVuX21hcF9zaGFyZWRfcGFnZXMoaW50IGx2bDNfZ3Jl ZiwgaW50IGRvbWlkLAorCQkJCQkJIGludCBuZW50cywKKwkJCQkJCSB2b2lkICoqcmVmc19pbmZv KTsKIAogaW50IGh5cGVyX2RtYWJ1Zl94ZW5fdW5tYXBfc2hhcmVkX3BhZ2VzKHZvaWQgKipyZWZz X2luZm8sIGludCBuZW50cyk7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS94ZW4vaHlwZXJf ZG1hYnVmLmggYi9pbmNsdWRlL3VhcGkveGVuL2h5cGVyX2RtYWJ1Zi5oCmluZGV4IGUxOGRkOWIu LmNiMjUyOTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS94ZW4vaHlwZXJfZG1hYnVmLmgKKysr IGIvaW5jbHVkZS91YXBpL3hlbi9oeXBlcl9kbWFidWYuaApAQCAtMjgsOCArMjgsOCBAQAogI2Rl ZmluZSBNQVhfU0laRV9QUklWX0RBVEEgMTkyCiAKIHR5cGVkZWYgc3RydWN0IHsKLSAgICAgICAg aW50IGlkOwotICAgICAgICBpbnQgcm5nX2tleVszXTsgLyogMTJieXRlcyBsb25nIHJhbmRvbSBu dW1iZXIgKi8KKwlpbnQgaWQ7CisJaW50IHJuZ19rZXlbM107IC8qIDEyYnl0ZXMgbG9uZyByYW5k b20gbnVtYmVyICovCiB9IGh5cGVyX2RtYWJ1Zl9pZF90OwogCiBzdHJ1Y3QgaHlwZXJfZG1hYnVm X2V2ZW50X2hkciB7CkBAIC0xMTUsMjAgKzExNSwyMCBAQCBzdHJ1Y3QgaW9jdGxfaHlwZXJfZG1h YnVmX3F1ZXJ5IHsKIC8qIERNQUJVRiBxdWVyeSAqLwogCiBlbnVtIGh5cGVyX2RtYWJ1Zl9xdWVy eSB7Ci0gICAgICAgIEhZUEVSX0RNQUJVRl9RVUVSWV9UWVBFID0gMHgxMCwKLSAgICAgICAgSFlQ RVJfRE1BQlVGX1FVRVJZX0VYUE9SVEVSLAotICAgICAgICBIWVBFUl9ETUFCVUZfUVVFUllfSU1Q T1JURVIsCi0gICAgICAgIEhZUEVSX0RNQUJVRl9RVUVSWV9TSVpFLAotICAgICAgICBIWVBFUl9E TUFCVUZfUVVFUllfQlVTWSwKLSAgICAgICAgSFlQRVJfRE1BQlVGX1FVRVJZX1VORVhQT1JURUQs Ci0gICAgICAgIEhZUEVSX0RNQUJVRl9RVUVSWV9ERUxBWUVEX1VORVhQT1JURUQsCi0gICAgICAg IEhZUEVSX0RNQUJVRl9RVUVSWV9QUklWX0lORk9fU0laRSwKLSAgICAgICAgSFlQRVJfRE1BQlVG X1FVRVJZX1BSSVZfSU5GTywKKwlIWVBFUl9ETUFCVUZfUVVFUllfVFlQRSA9IDB4MTAsCisJSFlQ RVJfRE1BQlVGX1FVRVJZX0VYUE9SVEVSLAorCUhZUEVSX0RNQUJVRl9RVUVSWV9JTVBPUlRFUiwK KwlIWVBFUl9ETUFCVUZfUVVFUllfU0laRSwKKwlIWVBFUl9ETUFCVUZfUVVFUllfQlVTWSwKKwlI WVBFUl9ETUFCVUZfUVVFUllfVU5FWFBPUlRFRCwKKwlIWVBFUl9ETUFCVUZfUVVFUllfREVMQVlF RF9VTkVYUE9SVEVELAorCUhZUEVSX0RNQUJVRl9RVUVSWV9QUklWX0lORk9fU0laRSwKKwlIWVBF Ul9ETUFCVUZfUVVFUllfUFJJVl9JTkZPLAogfTsKIAogZW51bSBoeXBlcl9kbWFidWZfc3RhdHVz IHsKLSAgICAgICAgRVhQT1JURUQ9IDB4MDEsCi0gICAgICAgIElNUE9SVEVELAorCUVYUE9SVEVE ID0gMHgwMSwKKwlJTVBPUlRFRCwKIH07CiAKICNlbmRpZiAvL19fTElOVVhfUFVCTElDX0hZUEVS X0RNQUJVRl9IX18KLS0gCjIuNy40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu cHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv L3hlbi1kZXZlbA==