From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: [PATCH v4 08/21] acpi/hvmloader: Replace mem_alloc() and virt_to_phys() with memory ops Date: Mon, 19 Sep 2016 20:19:26 -0400 Message-ID: <1474330779-10645-9-git-send-email-boris.ostrovsky@oracle.com> References: <1474330779-10645-1-git-send-email-boris.ostrovsky@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1474330779-10645-1-git-send-email-boris.ostrovsky@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: wei.liu2@citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, julien.grall@arm.com, jbeulich@suse.com, zhaoshenglong@huawei.com, Boris Ostrovsky , roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org Q29tcG9uZW50cyB0aGF0IHdpc2ggdG8gdXNlIEFDUEkgYnVpbGRlciB3aWxsIG5lZWQgdG8gcHJv dmlkZSB0aGVpciBvd24KbWVtX2FsbG9jKCkgYW5kIHZpcnRfdG9fcGh5cygpIHJvdXRpbmVzLiBQ b2ludGVycyB0byB0aGVzZSByb3V0aW5lcyB3aWxsCmJlIHBhc3NlZCB0byB0aGUgYnVpbGRlciBh cyBtZW1vcnkgb3BzLgoKU2lnbmVkLW9mZi1ieTogQm9yaXMgT3N0cm92c2t5IDxib3Jpcy5vc3Ry b3Zza3lAb3JhY2xlLmNvbT4KQWNrZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNv bT4KLS0tCkNoYW5nZXMgaW4gdjQ6CiogQWRkZWQgY29tbWVudCB0byBhY3BpX21lbV9mcmVlKCkK CiB0b29scy9maXJtd2FyZS9odm1sb2FkZXIvYWNwaS9idWlsZC5jICAgfCA5NSArKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0KIHRvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9hY3BpL2xp YmFjcGkuaCB8IDEwICsrKy0KIHRvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci91dGlsLmMgICAgICAg ICB8IDI0ICsrKysrKysrLQogMyBmaWxlcyBjaGFuZ2VkLCA4NCBpbnNlcnRpb25zKCspLCA0NSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90b29scy9maXJtd2FyZS9odm1sb2FkZXIvYWNwaS9i dWlsZC5jIGIvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL2FjcGkvYnVpbGQuYwppbmRleCA1Mzc5 MzNiLi4xZGQ5OTg3IDEwMDY0NAotLS0gYS90b29scy9maXJtd2FyZS9odm1sb2FkZXIvYWNwaS9i dWlsZC5jCisrKyBiL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9hY3BpL2J1aWxkLmMKQEAgLTcx LDcgKzcxLDggQEAgc3RhdGljIHZvaWQgc2V0X2NoZWNrc3VtKAogICAgIHBbY2hlY2tzdW1fb2Zm c2V0XSA9IC1zdW07CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgYWNwaV8yMF9tYWR0ICpjb25zdHJ1Y3Rf bWFkdChjb25zdCBzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZpZywKK3N0YXRpYyBzdHJ1Y3QgYWNw aV8yMF9tYWR0ICpjb25zdHJ1Y3RfbWFkdChzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBhY3BpX2Nv bmZpZyAqY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBhY3BpX2luZm8gKmluZm8pCiB7CiAgICAgc3RydWN0IGFjcGlfMjBfbWFkdCAgICAg ICAgICAgKm1hZHQ7CkBAIC04Niw3ICs4Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgYWNwaV8yMF9tYWR0 ICpjb25zdHJ1Y3RfbWFkdChjb25zdCBzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZpZywKICAgICBz eiArPSBzaXplb2Yoc3RydWN0IGFjcGlfMjBfbWFkdF9pb2FwaWMpOwogICAgIHN6ICs9IHNpemVv ZihzdHJ1Y3QgYWNwaV8yMF9tYWR0X2xhcGljKSAqIGh2bWluZm8tPm5yX3ZjcHVzOwogCi0gICAg bWFkdCA9IG1lbV9hbGxvYyhzeiwgMTYpOworICAgIG1hZHQgPSBjdHh0LT5tZW1fb3BzLmFsbG9j KGN0eHQsIHN6LCAxNik7CiAgICAgaWYgKCFtYWR0KSByZXR1cm4gTlVMTDsKIAogICAgIG1lbXNl dChtYWR0LCAwLCBzaXplb2YoKm1hZHQpKTsKQEAgLTE2NiwxMSArMTY3LDEyIEBAIHN0YXRpYyBz dHJ1Y3QgYWNwaV8yMF9tYWR0ICpjb25zdHJ1Y3RfbWFkdChjb25zdCBzdHJ1Y3QgYWNwaV9jb25m aWcgKmNvbmZpZywKICAgICByZXR1cm4gbWFkdDsKIH0KIAotc3RhdGljIHN0cnVjdCBhY3BpXzIw X2hwZXQgKmNvbnN0cnVjdF9ocGV0KHZvaWQpCitzdGF0aWMgc3RydWN0IGFjcGlfMjBfaHBldCAq Y29uc3RydWN0X2hwZXQoc3RydWN0IGFjcGlfY3R4dCAqY3R4dCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZp ZykKIHsKICAgICBzdHJ1Y3QgYWNwaV8yMF9ocGV0ICpocGV0OwogCi0gICAgaHBldCA9IG1lbV9h bGxvYyhzaXplb2YoKmhwZXQpLCAxNik7CisgICAgaHBldCA9IGN0eHQtPm1lbV9vcHMuYWxsb2Mo Y3R4dCwgc2l6ZW9mKCpocGV0KSwgMTYpOwogICAgIGlmICghaHBldCkgcmV0dXJuIE5VTEw7CiAK ICAgICBtZW1zZXQoaHBldCwgMCwgc2l6ZW9mKCpocGV0KSk7CkBAIC0xODksMTEgKzE5MSwxMiBA QCBzdGF0aWMgc3RydWN0IGFjcGlfMjBfaHBldCAqY29uc3RydWN0X2hwZXQodm9pZCkKICAgICBy ZXR1cm4gaHBldDsKIH0KIAotc3RhdGljIHN0cnVjdCBhY3BpXzIwX3dhZXQgKmNvbnN0cnVjdF93 YWV0KHZvaWQpCitzdGF0aWMgc3RydWN0IGFjcGlfMjBfd2FldCAqY29uc3RydWN0X3dhZXQoc3Ry dWN0IGFjcGlfY3R4dCAqY3R4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZpZykKIHsKICAgICBzdHJ1Y3Qg YWNwaV8yMF93YWV0ICp3YWV0OwogCi0gICAgd2FldCA9IG1lbV9hbGxvYyhzaXplb2YoKndhZXQp LCAxNik7CisgICAgd2FldCA9IGN0eHQtPm1lbV9vcHMuYWxsb2MoY3R4dCwgc2l6ZW9mKCp3YWV0 KSwgMTYpOwogICAgIGlmICghd2FldCkgcmV0dXJuIE5VTEw7CiAKICAgICBtZW1jcHkod2FldCwg JldhZXQsIHNpemVvZigqd2FldCkpOwpAQCAtMjA0LDcgKzIwNyw4IEBAIHN0YXRpYyBzdHJ1Y3Qg YWNwaV8yMF93YWV0ICpjb25zdHJ1Y3Rfd2FldCh2b2lkKQogICAgIHJldHVybiB3YWV0OwogfQog Ci1zdGF0aWMgc3RydWN0IGFjcGlfMjBfc3JhdCAqY29uc3RydWN0X3NyYXQoY29uc3Qgc3RydWN0 IGFjcGlfY29uZmlnICpjb25maWcpCitzdGF0aWMgc3RydWN0IGFjcGlfMjBfc3JhdCAqY29uc3Ry dWN0X3NyYXQoc3RydWN0IGFjcGlfY3R4dCAqY3R4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZpZykKIHsK ICAgICBzdHJ1Y3QgYWNwaV8yMF9zcmF0ICpzcmF0OwogICAgIHN0cnVjdCBhY3BpXzIwX3NyYXRf cHJvY2Vzc29yICpwcm9jZXNzb3I7CkBAIC0yMTYsNyArMjIwLDcgQEAgc3RhdGljIHN0cnVjdCBh Y3BpXzIwX3NyYXQgKmNvbnN0cnVjdF9zcmF0KGNvbnN0IHN0cnVjdCBhY3BpX2NvbmZpZyAqY29u ZmlnKQogICAgIHNpemUgPSBzaXplb2YoKnNyYXQpICsgc2l6ZW9mKCpwcm9jZXNzb3IpICogY29u ZmlnLT5odm1pbmZvLT5ucl92Y3B1cyArCiAgICAgICAgICAgIHNpemVvZigqbWVtb3J5KSAqIGNv bmZpZy0+bnVtYS5ucl92bWVtcmFuZ2VzOwogCi0gICAgcCA9IG1lbV9hbGxvYyhzaXplLCAxNik7 CisgICAgcCA9IGN0eHQtPm1lbV9vcHMuYWxsb2MoY3R4dCwgc2l6ZSwgMTYpOwogICAgIGlmICgg IXAgKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMjYyLDcgKzI2Niw4IEBAIHN0YXRpYyBz dHJ1Y3QgYWNwaV8yMF9zcmF0ICpjb25zdHJ1Y3Rfc3JhdChjb25zdCBzdHJ1Y3QgYWNwaV9jb25m aWcgKmNvbmZpZykKICAgICByZXR1cm4gc3JhdDsKIH0KIAotc3RhdGljIHN0cnVjdCBhY3BpXzIw X3NsaXQgKmNvbnN0cnVjdF9zbGl0KGNvbnN0IHN0cnVjdCBhY3BpX2NvbmZpZyAqY29uZmlnKQor c3RhdGljIHN0cnVjdCBhY3BpXzIwX3NsaXQgKmNvbnN0cnVjdF9zbGl0KHN0cnVjdCBhY3BpX2N0 eHQgKmN0eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3Qgc3RydWN0IGFjcGlfY29uZmlnICpjb25maWcpCiB7CiAgICAgc3RydWN0IGFjcGlfMjBfc2xp dCAqc2xpdDsKICAgICB1bnNpZ25lZCBpbnQgaSwgbnVtLCBzaXplOwpAQCAtMjcwLDcgKzI3NSw3 IEBAIHN0YXRpYyBzdHJ1Y3QgYWNwaV8yMF9zbGl0ICpjb25zdHJ1Y3Rfc2xpdChjb25zdCBzdHJ1 Y3QgYWNwaV9jb25maWcgKmNvbmZpZykKICAgICBudW0gPSBjb25maWctPm51bWEubnJfdm5vZGVz ICogY29uZmlnLT5udW1hLm5yX3Zub2RlczsKICAgICBzaXplID0gc2l6ZW9mKCpzbGl0KSArIG51 bSAqIHNpemVvZih1aW50OF90KTsKIAotICAgIHNsaXQgPSBtZW1fYWxsb2Moc2l6ZSwgMTYpOwor ICAgIHNsaXQgPSBjdHh0LT5tZW1fb3BzLmFsbG9jKGN0eHQsIHNpemUsIDE2KTsKICAgICBpZiAo ICFzbGl0ICkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTI5NCw3ICsyOTksOCBAQCBzdGF0 aWMgc3RydWN0IGFjcGlfMjBfc2xpdCAqY29uc3RydWN0X3NsaXQoY29uc3Qgc3RydWN0IGFjcGlf Y29uZmlnICpjb25maWcpCiAgICAgcmV0dXJuIHNsaXQ7CiB9CiAKLXN0YXRpYyBpbnQgY29uc3Ry dWN0X3Bhc3N0aHJvdWdoX3RhYmxlcyh1bnNpZ25lZCBsb25nICp0YWJsZV9wdHJzLAorc3RhdGlj IGludCBjb25zdHJ1Y3RfcGFzc3Rocm91Z2hfdGFibGVzKHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAq dGFibGVfcHRycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg bnJfdGFibGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBhY3BpX2NvbmZpZyAqY29uZmlnKQogewpAQCAtMzE3LDcgKzMyMyw3IEBAIHN0YXRpYyBpbnQg Y29uc3RydWN0X3Bhc3N0aHJvdWdoX3RhYmxlcyh1bnNpZ25lZCBsb25nICp0YWJsZV9wdHJzLAog CiAgICAgICAgIGhlYWRlciA9IChzdHJ1Y3QgYWNwaV9oZWFkZXIqKXB0X2FkZHI7CiAKLSAgICAg ICAgYnVmZmVyID0gbWVtX2FsbG9jKGhlYWRlci0+bGVuZ3RoLCAxNik7CisgICAgICAgIGJ1ZmZl ciA9IGN0eHQtPm1lbV9vcHMuYWxsb2MoY3R4dCwgaGVhZGVyLT5sZW5ndGgsIDE2KTsKICAgICAg ICAgaWYgKCBidWZmZXIgPT0gTlVMTCApCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgbWVt Y3B5KGJ1ZmZlciwgaGVhZGVyLCBoZWFkZXItPmxlbmd0aCk7CkBAIC0zMzAsNyArMzM2LDggQEAg c3RhdGljIGludCBjb25zdHJ1Y3RfcGFzc3Rocm91Z2hfdGFibGVzKHVuc2lnbmVkIGxvbmcgKnRh YmxlX3B0cnMsCiAgICAgcmV0dXJuIG5yX2FkZGVkOwogfQogCi1zdGF0aWMgaW50IGNvbnN0cnVj dF9zZWNvbmRhcnlfdGFibGVzKHVuc2lnbmVkIGxvbmcgKnRhYmxlX3B0cnMsCitzdGF0aWMgaW50 IGNvbnN0cnVjdF9zZWNvbmRhcnlfdGFibGVzKHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKnRhYmxlX3B0 cnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhY3BpX2Nv bmZpZyAqY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgYWNwaV9pbmZvICppbmZvKQogewpAQCAtMzQ2LDcgKzM1Myw3IEBAIHN0YXRpYyBpbnQgY29u c3RydWN0X3NlY29uZGFyeV90YWJsZXModW5zaWduZWQgbG9uZyAqdGFibGVfcHRycywKICAgICAv KiBNQURULiAqLwogICAgIGlmICggKGNvbmZpZy0+aHZtaW5mby0+bnJfdmNwdXMgPiAxKSB8fCBj b25maWctPmh2bWluZm8tPmFwaWNfbW9kZSApCiAgICAgewotICAgICAgICBtYWR0ID0gY29uc3Ry dWN0X21hZHQoY29uZmlnLCBpbmZvKTsKKyAgICAgICAgbWFkdCA9IGNvbnN0cnVjdF9tYWR0KGN0 eHQsIGNvbmZpZywgaW5mbyk7CiAgICAgICAgIGlmICghbWFkdCkgcmV0dXJuIC0xOwogICAgICAg ICB0YWJsZV9wdHJzW25yX3RhYmxlcysrXSA9ICh1bnNpZ25lZCBsb25nKW1hZHQ7CiAgICAgfQpA QCAtMzU0LDcgKzM2MSw3IEBAIHN0YXRpYyBpbnQgY29uc3RydWN0X3NlY29uZGFyeV90YWJsZXMo dW5zaWduZWQgbG9uZyAqdGFibGVfcHRycywKICAgICAvKiBIUEVULiAqLwogICAgIGlmICggaW5m by0+aHBldF9wcmVzZW50ICkKICAgICB7Ci0gICAgICAgIGhwZXQgPSBjb25zdHJ1Y3RfaHBldCgp OworICAgICAgICBocGV0ID0gY29uc3RydWN0X2hwZXQoY3R4dCwgY29uZmlnKTsKICAgICAgICAg aWYgKCFocGV0KSByZXR1cm4gLTE7CiAgICAgICAgIHRhYmxlX3B0cnNbbnJfdGFibGVzKytdID0g KHVuc2lnbmVkIGxvbmcpaHBldDsKICAgICB9CkBAIC0zNjIsNyArMzY5LDcgQEAgc3RhdGljIGlu dCBjb25zdHJ1Y3Rfc2Vjb25kYXJ5X3RhYmxlcyh1bnNpZ25lZCBsb25nICp0YWJsZV9wdHJzLAog ICAgIC8qIFdBRVQuICovCiAgICAgaWYgKCBjb25maWctPnRhYmxlX2ZsYWdzICYgQUNQSV9IQVNf V0FFVCApCiAgICAgewotICAgICAgICB3YWV0ID0gY29uc3RydWN0X3dhZXQoKTsKKyAgICAgICAg d2FldCA9IGNvbnN0cnVjdF93YWV0KGN0eHQsIGNvbmZpZyk7CiAgICAgICAgIGlmICggIXdhZXQg KQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB0YWJsZV9wdHJzW25yX3RhYmxlcysr XSA9ICh1bnNpZ25lZCBsb25nKXdhZXQ7CkBAIC0zNzAsNyArMzc3LDcgQEAgc3RhdGljIGludCBj b25zdHJ1Y3Rfc2Vjb25kYXJ5X3RhYmxlcyh1bnNpZ25lZCBsb25nICp0YWJsZV9wdHJzLAogCiAg ICAgaWYgKCBjb25maWctPnRhYmxlX2ZsYWdzICYgQUNQSV9IQVNfU1NEVF9QTSApCiAgICAgewot ICAgICAgICBzc2R0ID0gbWVtX2FsbG9jKHNpemVvZihzc2R0X3BtKSwgMTYpOworICAgICAgICBz c2R0ID0gY3R4dC0+bWVtX29wcy5hbGxvYyhjdHh0LCBzaXplb2Yoc3NkdF9wbSksIDE2KTsKICAg ICAgICAgaWYgKCFzc2R0KSByZXR1cm4gLTE7CiAgICAgICAgIG1lbWNweShzc2R0LCBzc2R0X3Bt LCBzaXplb2Yoc3NkdF9wbSkpOwogICAgICAgICB0YWJsZV9wdHJzW25yX3RhYmxlcysrXSA9ICh1 bnNpZ25lZCBsb25nKXNzZHQ7CkBAIC0zNzgsNyArMzg1LDcgQEAgc3RhdGljIGludCBjb25zdHJ1 Y3Rfc2Vjb25kYXJ5X3RhYmxlcyh1bnNpZ25lZCBsb25nICp0YWJsZV9wdHJzLAogCiAgICAgaWYg KCBjb25maWctPnRhYmxlX2ZsYWdzICYgQUNQSV9IQVNfU1NEVF9TMyApCiAgICAgewotICAgICAg ICBzc2R0ID0gbWVtX2FsbG9jKHNpemVvZihzc2R0X3MzKSwgMTYpOworICAgICAgICBzc2R0ID0g Y3R4dC0+bWVtX29wcy5hbGxvYyhjdHh0LCBzaXplb2Yoc3NkdF9zMyksIDE2KTsKICAgICAgICAg aWYgKCFzc2R0KSByZXR1cm4gLTE7CiAgICAgICAgIG1lbWNweShzc2R0LCBzc2R0X3MzLCBzaXpl b2Yoc3NkdF9zMykpOwogICAgICAgICB0YWJsZV9wdHJzW25yX3RhYmxlcysrXSA9ICh1bnNpZ25l ZCBsb25nKXNzZHQ7CkBAIC0zODgsNyArMzk1LDcgQEAgc3RhdGljIGludCBjb25zdHJ1Y3Rfc2Vj b25kYXJ5X3RhYmxlcyh1bnNpZ25lZCBsb25nICp0YWJsZV9wdHJzLAogCiAgICAgaWYgKCBjb25m aWctPnRhYmxlX2ZsYWdzICYgQUNQSV9IQVNfU1NEVF9TNCApCiAgICAgewotICAgICAgICBzc2R0 ID0gbWVtX2FsbG9jKHNpemVvZihzc2R0X3M0KSwgMTYpOworICAgICAgICBzc2R0ID0gY3R4dC0+ bWVtX29wcy5hbGxvYyhjdHh0LCBzaXplb2Yoc3NkdF9zNCksIDE2KTsKICAgICAgICAgaWYgKCFz c2R0KSByZXR1cm4gLTE7CiAgICAgICAgIG1lbWNweShzc2R0LCBzc2R0X3M0LCBzaXplb2Yoc3Nk dF9zNCkpOwogICAgICAgICB0YWJsZV9wdHJzW25yX3RhYmxlcysrXSA9ICh1bnNpZ25lZCBsb25n KXNzZHQ7CkBAIC00MDIsMTIgKzQwOSwxMiBAQCBzdGF0aWMgaW50IGNvbnN0cnVjdF9zZWNvbmRh cnlfdGFibGVzKHVuc2lnbmVkIGxvbmcgKnRhYmxlX3B0cnMsCiAgICAgICAgICAoY29uZmlnLT50 aXNfaGRyWzFdID09IHRpc19zaWduYXR1cmVbMV0pICYmCiAgICAgICAgICAoY29uZmlnLT50aXNf aGRyWzJdID09IHRpc19zaWduYXR1cmVbMl0pICkKICAgICB7Ci0gICAgICAgIHNzZHQgPSBtZW1f YWxsb2Moc2l6ZW9mKHNzZHRfdHBtKSwgMTYpOworICAgICAgICBzc2R0ID0gY3R4dC0+bWVtX29w cy5hbGxvYyhjdHh0LCBzaXplb2Yoc3NkdF90cG0pLCAxNik7CiAgICAgICAgIGlmICghc3NkdCkg cmV0dXJuIC0xOwogICAgICAgICBtZW1jcHkoc3NkdCwgc3NkdF90cG0sIHNpemVvZihzc2R0X3Rw bSkpOwogICAgICAgICB0YWJsZV9wdHJzW25yX3RhYmxlcysrXSA9ICh1bnNpZ25lZCBsb25nKXNz ZHQ7CiAKLSAgICAgICAgdGNwYSA9IG1lbV9hbGxvYyhzaXplb2Yoc3RydWN0IGFjcGlfMjBfdGNw YSksIDE2KTsKKyAgICAgICAgdGNwYSA9IGN0eHQtPm1lbV9vcHMuYWxsb2MoY3R4dCwgc2l6ZW9m KHN0cnVjdCBhY3BpXzIwX3RjcGEpLCAxNik7CiAgICAgICAgIGlmICghdGNwYSkgcmV0dXJuIC0x OwogICAgICAgICBtZW1zZXQodGNwYSwgMCwgc2l6ZW9mKCp0Y3BhKSk7CiAgICAgICAgIHRhYmxl X3B0cnNbbnJfdGFibGVzKytdID0gKHVuc2lnbmVkIGxvbmcpdGNwYTsKQEAgLTQyMCw5ICs0Mjcs OSBAQCBzdGF0aWMgaW50IGNvbnN0cnVjdF9zZWNvbmRhcnlfdGFibGVzKHVuc2lnbmVkIGxvbmcg KnRhYmxlX3B0cnMsCiAgICAgICAgIHRjcGEtPmhlYWRlci5vZW1fcmV2aXNpb24gPSBBQ1BJX09F TV9SRVZJU0lPTjsKICAgICAgICAgdGNwYS0+aGVhZGVyLmNyZWF0b3JfaWQgICA9IEFDUElfQ1JF QVRPUl9JRDsKICAgICAgICAgdGNwYS0+aGVhZGVyLmNyZWF0b3JfcmV2aXNpb24gPSBBQ1BJX0NS RUFUT1JfUkVWSVNJT047Ci0gICAgICAgIGlmICggKGxhc2EgPSBtZW1fYWxsb2MoQUNQSV8yXzBf VENQQV9MQU1MX1NJWkUsIDE2KSkgIT0gTlVMTCApCisgICAgICAgIGlmICggKGxhc2EgPSBjdHh0 LT5tZW1fb3BzLmFsbG9jKGN0eHQsIEFDUElfMl8wX1RDUEFfTEFNTF9TSVpFLCAxNikpICE9IE5V TEwgKQogICAgICAgICB7Ci0gICAgICAgICAgICB0Y3BhLT5sYXNhID0gdmlydF90b19waHlzKGxh c2EpOworICAgICAgICAgICAgdGNwYS0+bGFzYSA9IGN0eHQtPm1lbV9vcHMudjJwKGN0eHQsIGxh c2EpOwogICAgICAgICAgICAgdGNwYS0+bGFtbCA9IEFDUElfMl8wX1RDUEFfTEFNTF9TSVpFOwog ICAgICAgICAgICAgbWVtc2V0KGxhc2EsIDAsIHRjcGEtPmxhbWwpOwogICAgICAgICAgICAgc2V0 X2NoZWNrc3VtKHRjcGEsCkBAIC00MzQsOCArNDQxLDggQEAgc3RhdGljIGludCBjb25zdHJ1Y3Rf c2Vjb25kYXJ5X3RhYmxlcyh1bnNpZ25lZCBsb25nICp0YWJsZV9wdHJzLAogICAgIC8qIFNSQVQg YW5kIFNMSVQgKi8KICAgICBpZiAoIGNvbmZpZy0+bnVtYS5ucl92bm9kZXMgPiAwICkKICAgICB7 Ci0gICAgICAgIHN0cnVjdCBhY3BpXzIwX3NyYXQgKnNyYXQgPSBjb25zdHJ1Y3Rfc3JhdChjb25m aWcpOwotICAgICAgICBzdHJ1Y3QgYWNwaV8yMF9zbGl0ICpzbGl0ID0gY29uc3RydWN0X3NsaXQo Y29uZmlnKTsKKyAgICAgICAgc3RydWN0IGFjcGlfMjBfc3JhdCAqc3JhdCA9IGNvbnN0cnVjdF9z cmF0KGN0eHQsIGNvbmZpZyk7CisgICAgICAgIHN0cnVjdCBhY3BpXzIwX3NsaXQgKnNsaXQgPSBj b25zdHJ1Y3Rfc2xpdChjdHh0LCBjb25maWcpOwogCiAgICAgICAgIGlmICggc3JhdCApCiAgICAg ICAgICAgICB0YWJsZV9wdHJzW25yX3RhYmxlcysrXSA9ICh1bnNpZ25lZCBsb25nKXNyYXQ7CkBA IC00NDgsNyArNDU1LDggQEAgc3RhdGljIGludCBjb25zdHJ1Y3Rfc2Vjb25kYXJ5X3RhYmxlcyh1 bnNpZ25lZCBsb25nICp0YWJsZV9wdHJzLAogICAgIH0KIAogICAgIC8qIExvYWQgYW55IGFkZGl0 aW9uYWwgdGFibGVzIHBhc3NlZCB0aHJvdWdoLiAqLwotICAgIG5yX3RhYmxlcyArPSBjb25zdHJ1 Y3RfcGFzc3Rocm91Z2hfdGFibGVzKHRhYmxlX3B0cnMsIG5yX3RhYmxlcywgY29uZmlnKTsKKyAg ICBucl90YWJsZXMgKz0gY29uc3RydWN0X3Bhc3N0aHJvdWdoX3RhYmxlcyhjdHh0LCB0YWJsZV9w dHJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5yX3Rh YmxlcywgY29uZmlnKTsKIAogICAgIHRhYmxlX3B0cnNbbnJfdGFibGVzXSA9IDA7CiAgICAgcmV0 dXJuIG5yX3RhYmxlczsKQEAgLTQ2MSw3ICs0NjksOCBAQCBzdGF0aWMgaW50IGNvbnN0cnVjdF9z ZWNvbmRhcnlfdGFibGVzKHVuc2lnbmVkIGxvbmcgKnRhYmxlX3B0cnMsCiAgKgogICogUmV0dXJu IDAgaWYgbWVtb3J5IGZhaWx1cmUsICE9IDAgaWYgc3VjY2VzcwogICovCi1zdGF0aWMgaW50IG5l d192bV9naWQoc3RydWN0IGFjcGlfY29uZmlnICpjb25maWcsCitzdGF0aWMgaW50IG5ld192bV9n aWQoc3RydWN0IGFjcGlfY3R4dCAqY3R4dCwKKyAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg YWNwaV9jb25maWcgKmNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYWNwaV9p bmZvICppbmZvKQogewogICAgIHVpbnQ2NF90ICpidWY7CkBAIC00NzMsMTkgKzQ4MiwxOSBAQCBz dGF0aWMgaW50IG5ld192bV9naWQoc3RydWN0IGFjcGlfY29uZmlnICpjb25maWcsCiAgICAgICAg IHJldHVybiAxOwogCiAgICAgLyogY29weSB0byBhbGxvY2F0ZSBCSU9TIG1lbW9yeSAqLwotICAg IGJ1ZiA9IG1lbV9hbGxvYyhzaXplb2YoY29uZmlnLT52bV9naWQpLCA4KTsKKyAgICBidWYgPSBj dHh0LT5tZW1fb3BzLmFsbG9jKGN0eHQsIHNpemVvZihjb25maWctPnZtX2dpZCksIDgpOwogICAg IGlmICggIWJ1ZiApCiAgICAgICAgIHJldHVybiAwOwogICAgIG1lbWNweShidWYsIGNvbmZpZy0+ dm1fZ2lkLCBzaXplb2YoY29uZmlnLT52bV9naWQpKTsKIAogICAgIC8qIHNldCB0aGUgYWRkcmVz cyBpbnRvIEFDUEkgdGFibGUgYW5kIGFsc28gcGFzcyBpdCBiYWNrIHRvIHRoZSBjYWxsZXIgKi8K LSAgICBpbmZvLT52bV9naWRfYWRkciA9IHZpcnRfdG9fcGh5cyhidWYpOworICAgIGluZm8tPnZt X2dpZF9hZGRyID0gY3R4dC0+bWVtX29wcy52MnAoY3R4dCwgYnVmKTsKICAgICBjb25maWctPnZt X2dpZF9hZGRyID0gaW5mby0+dm1fZ2lkX2FkZHI7CiAKICAgICByZXR1cm4gMTsKIH0KIAotdm9p ZCBhY3BpX2J1aWxkX3RhYmxlcyhzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZpZykKK3ZvaWQgYWNw aV9idWlsZF90YWJsZXMoc3RydWN0IGFjcGlfY3R4dCAqY3R4dCwgc3RydWN0IGFjcGlfY29uZmln ICpjb25maWcpCiB7CiAgICAgc3RydWN0IGFjcGlfaW5mbyAqYWNwaV9pbmZvOwogICAgIHN0cnVj dCBhY3BpXzIwX3JzZHAgKnJzZHA7CkBAIC01MTYsNyArNTI1LDcgQEAgdm9pZCBhY3BpX2J1aWxk X3RhYmxlcyhzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZpZykKICAgICAgKiBGaWxsIGluIGhpZ2gt bWVtb3J5IGRhdGEgc3RydWN0dXJlcywgc3RhcnRpbmcgYXQgQGJ1Zi4KICAgICAgKi8KIAotICAg IGZhY3MgPSBtZW1fYWxsb2Moc2l6ZW9mKHN0cnVjdCBhY3BpXzIwX2ZhY3MpLCAxNik7CisgICAg ZmFjcyA9IGN0eHQtPm1lbV9vcHMuYWxsb2MoY3R4dCwgc2l6ZW9mKHN0cnVjdCBhY3BpXzIwX2Zh Y3MpLCAxNik7CiAgICAgaWYgKCFmYWNzKSBnb3RvIG9vbTsKICAgICBtZW1jcHkoZmFjcywgJkZh Y3MsIHNpemVvZihzdHJ1Y3QgYWNwaV8yMF9mYWNzKSk7CiAKQEAgLTUzMCwxMyArNTM5LDEzIEBA IHZvaWQgYWNwaV9idWlsZF90YWJsZXMoc3RydWN0IGFjcGlfY29uZmlnICpjb25maWcpCiAgICAg ICovCiAgICAgaWYgKCBjb25maWctPmh2bWluZm8tPm5yX3ZjcHVzIDw9IDE1ICYmIGNvbmZpZy0+ ZHNkdF8xNWNwdSkKICAgICB7Ci0gICAgICAgIGRzZHQgPSBtZW1fYWxsb2MoY29uZmlnLT5kc2R0 XzE1Y3B1X2xlbiwgMTYpOworICAgICAgICBkc2R0ID0gY3R4dC0+bWVtX29wcy5hbGxvYyhjdHh0 LCBjb25maWctPmRzZHRfMTVjcHVfbGVuLCAxNik7CiAgICAgICAgIGlmICghZHNkdCkgZ290byBv b207CiAgICAgICAgIG1lbWNweShkc2R0LCBjb25maWctPmRzZHRfMTVjcHUsIGNvbmZpZy0+ZHNk dF8xNWNwdV9sZW4pOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBkc2R0ID0gbWVt X2FsbG9jKGNvbmZpZy0+ZHNkdF9hbnljcHVfbGVuLCAxNik7CisgICAgICAgIGRzZHQgPSBjdHh0 LT5tZW1fb3BzLmFsbG9jKGN0eHQsIGNvbmZpZy0+ZHNkdF9hbnljcHVfbGVuLCAxNik7CiAgICAg ICAgIGlmICghZHNkdCkgZ290byBvb207CiAgICAgICAgIG1lbWNweShkc2R0LCBjb25maWctPmRz ZHRfYW55Y3B1LCBjb25maWctPmRzZHRfYW55Y3B1X2xlbik7CiAgICAgfQpAQCAtNTQ5LDcgKzU1 OCw3IEBAIHZvaWQgYWNwaV9idWlsZF90YWJsZXMoc3RydWN0IGFjcGlfY29uZmlnICpjb25maWcp CiAgICAgICogY29tcGF0aWJsZSByZXZpc2lvbiAxIEZBRFQgdGhhdCBpcyBsaW5rZWQgd2l0aCB0 aGUgUlNEVC4gUmVmZXIgdG86CiAgICAgICogICAgIGh0dHA6Ly93d3cuYWNwaS5pbmZvL3ByZXNl bnRhdGlvbnMvUzAxVVNNT0JTMTY5X09TJTIwbmV3LnBwdAogICAgICAqLwotICAgIGZhZHRfMTAg PSBtZW1fYWxsb2Moc2l6ZW9mKHN0cnVjdCBhY3BpXzEwX2ZhZHQpLCAxNik7CisgICAgZmFkdF8x MCA9IGN0eHQtPm1lbV9vcHMuYWxsb2MoY3R4dCwgc2l6ZW9mKHN0cnVjdCBhY3BpXzEwX2ZhZHQp LCAxNik7CiAgICAgaWYgKCFmYWR0XzEwKSBnb3RvIG9vbTsKICAgICBtZW1jcHkoZmFkdF8xMCwg JkZhZHQsIHNpemVvZihzdHJ1Y3QgYWNwaV8xMF9mYWR0KSk7CiAgICAgZmFkdF8xMC0+aGVhZGVy Lmxlbmd0aCA9IHNpemVvZihzdHJ1Y3QgYWNwaV8xMF9mYWR0KTsKQEAgLTU2MCw3ICs1NjksNyBA QCB2b2lkIGFjcGlfYnVpbGRfdGFibGVzKHN0cnVjdCBhY3BpX2NvbmZpZyAqY29uZmlnKQogICAg ICAgICAgICAgICAgICBvZmZzZXRvZihzdHJ1Y3QgYWNwaV9oZWFkZXIsIGNoZWNrc3VtKSwKICAg ICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBhY3BpXzEwX2ZhZHQpKTsKIAotICAgIGZhZHQg PSBtZW1fYWxsb2Moc2l6ZW9mKHN0cnVjdCBhY3BpXzIwX2ZhZHQpLCAxNik7CisgICAgZmFkdCA9 IGN0eHQtPm1lbV9vcHMuYWxsb2MoY3R4dCwgc2l6ZW9mKHN0cnVjdCBhY3BpXzIwX2ZhZHQpLCAx Nik7CiAgICAgaWYgKCFmYWR0KSBnb3RvIG9vbTsKICAgICBtZW1jcHkoZmFkdCwgJkZhZHQsIHNp emVvZihzdHJ1Y3QgYWNwaV8yMF9mYWR0KSk7CiAgICAgZmFkdC0+ZHNkdCAgID0gKHVuc2lnbmVk IGxvbmcpZHNkdDsKQEAgLTU3MSwxNCArNTgwLDE0IEBAIHZvaWQgYWNwaV9idWlsZF90YWJsZXMo c3RydWN0IGFjcGlfY29uZmlnICpjb25maWcpCiAgICAgICAgICAgICAgICAgIG9mZnNldG9mKHN0 cnVjdCBhY3BpX2hlYWRlciwgY2hlY2tzdW0pLAogICAgICAgICAgICAgICAgICBzaXplb2Yoc3Ry dWN0IGFjcGlfMjBfZmFkdCkpOwogCi0gICAgbnJfc2Vjb25kYXJpZXMgPSBjb25zdHJ1Y3Rfc2Vj b25kYXJ5X3RhYmxlcyhzZWNvbmRhcnlfdGFibGVzLAorICAgIG5yX3NlY29uZGFyaWVzID0gY29u c3RydWN0X3NlY29uZGFyeV90YWJsZXMoY3R4dCwgc2Vjb25kYXJ5X3RhYmxlcywKICAgICAgICAg ICAgICAgICAgY29uZmlnLCBhY3BpX2luZm8pOwogICAgIGlmICggbnJfc2Vjb25kYXJpZXMgPCAw ICkKICAgICAgICAgZ290byBvb207CiAKLSAgICB4c2R0ID0gbWVtX2FsbG9jKHNpemVvZihzdHJ1 Y3QgYWNwaV8yMF94c2R0KSsKLSAgICAgICAgICAgICAgICAgICAgIHNpemVvZih1aW50NjRfdCkq bnJfc2Vjb25kYXJpZXMsCi0gICAgICAgICAgICAgICAgICAgICAxNik7CisgICAgeHNkdCA9IGN0 eHQtPm1lbV9vcHMuYWxsb2MoY3R4dCwgc2l6ZW9mKHN0cnVjdCBhY3BpXzIwX3hzZHQpICsgCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVpbnQ2NF90KSAqIG5yX3NlY29u ZGFyaWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2KTsKICAgICBpZiAoIXhz ZHQpIGdvdG8gb29tOwogICAgIG1lbWNweSh4c2R0LCAmWHNkdCwgc2l6ZW9mKHN0cnVjdCBhY3Bp X2hlYWRlcikpOwogICAgIHhzZHQtPmVudHJ5WzBdID0gKHVuc2lnbmVkIGxvbmcpZmFkdDsKQEAg LTU4OSw5ICs1OTgsOSBAQCB2b2lkIGFjcGlfYnVpbGRfdGFibGVzKHN0cnVjdCBhY3BpX2NvbmZp ZyAqY29uZmlnKQogICAgICAgICAgICAgICAgICBvZmZzZXRvZihzdHJ1Y3QgYWNwaV9oZWFkZXIs IGNoZWNrc3VtKSwKICAgICAgICAgICAgICAgICAgeHNkdC0+aGVhZGVyLmxlbmd0aCk7CiAKLSAg ICByc2R0ID0gbWVtX2FsbG9jKHNpemVvZihzdHJ1Y3QgYWNwaV8yMF9yc2R0KSsKLSAgICAgICAg ICAgICAgICAgICAgIHNpemVvZih1aW50MzJfdCkqbnJfc2Vjb25kYXJpZXMsCi0gICAgICAgICAg ICAgICAgICAgICAxNik7CisgICAgcnNkdCA9IGN0eHQtPm1lbV9vcHMuYWxsb2MoY3R4dCwgc2l6 ZW9mKHN0cnVjdCBhY3BpXzIwX3JzZHQpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplb2YodWludDMyX3QpICogbnJfc2Vjb25kYXJpZXMsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMTYpOwogICAgIGlmICghcnNkdCkgZ290byBvb207CiAgICAgbWVtY3B5KHJz ZHQsICZSc2R0LCBzaXplb2Yoc3RydWN0IGFjcGlfaGVhZGVyKSk7CiAgICAgcnNkdC0+ZW50cnlb MF0gPSAodW5zaWduZWQgbG9uZylmYWR0XzEwOwpAQCAtNjE3LDcgKzYyNiw3IEBAIHZvaWQgYWNw aV9idWlsZF90YWJsZXMoc3RydWN0IGFjcGlfY29uZmlnICpjb25maWcpCiAgICAgICAgICAgICAg ICAgIG9mZnNldG9mKHN0cnVjdCBhY3BpXzIwX3JzZHAsIGV4dGVuZGVkX2NoZWNrc3VtKSwKICAg ICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBhY3BpXzIwX3JzZHApKTsKIAotICAgIGlmICgg IW5ld192bV9naWQoY29uZmlnLCBhY3BpX2luZm8pICkKKyAgICBpZiAoICFuZXdfdm1fZ2lkKGN0 eHQsIGNvbmZpZywgYWNwaV9pbmZvKSApCiAgICAgICAgIGdvdG8gb29tOwogCiAgICAgcmV0dXJu OwpkaWZmIC0tZ2l0IGEvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL2FjcGkvbGliYWNwaS5oIGIv dG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL2FjcGkvbGliYWNwaS5oCmluZGV4IGI0MTFhNmUuLjM1 YjZmNDcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9hY3BpL2xpYmFjcGku aAorKysgYi90b29scy9maXJtd2FyZS9odm1sb2FkZXIvYWNwaS9saWJhY3BpLmgKQEAgLTQwLDYg KzQwLDE0IEBAIHN0cnVjdCBhY3BpX251bWEgewogICAgIGNvbnN0IHN0cnVjdCB4ZW5fdm1lbXJh bmdlICp2bWVtcmFuZ2U7CiB9OwogCitzdHJ1Y3QgYWNwaV9jdHh0IHsKKyAgICBzdHJ1Y3QgYWNw aV9tZW1fb3BzIHsKKyAgICAgICAgdm9pZCAqKCphbGxvYykoc3RydWN0IGFjcGlfY3R4dCAqY3R4 dCwgdWludDMyX3Qgc2l6ZSwgdWludDMyX3QgYWxpZ24pOworICAgICAgICB2b2lkICgqZnJlZSko c3RydWN0IGFjcGlfY3R4dCAqY3R4dCwgdm9pZCAqdiwgdWludDMyX3Qgc2l6ZSk7CisgICAgICAg IHVuc2lnbmVkIGxvbmcgKCp2MnApKHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQsIHZvaWQgKnYpOwor ICAgIH0gbWVtX29wczsKK307CisKIHN0cnVjdCBhY3BpX2NvbmZpZyB7CiAgICAgY29uc3QgdW5z aWduZWQgY2hhciAqZHNkdF9hbnljcHU7CiAgICAgdW5zaWduZWQgaW50IGRzZHRfYW55Y3B1X2xl bjsKQEAgLTc2LDcgKzg0LDcgQEAgc3RydWN0IGFjcGlfY29uZmlnIHsKICAgICB1bnNpZ25lZCBp bnQgcnNkcDsKIH07CiAKLXZvaWQgYWNwaV9idWlsZF90YWJsZXMoc3RydWN0IGFjcGlfY29uZmln ICpjb25maWcpOwordm9pZCBhY3BpX2J1aWxkX3RhYmxlcyhzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0 LCBzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZpZyk7CiAKICNlbmRpZiAvKiBfX0xJQkFDUElfSF9f ICovCiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci91dGlsLmMgYi90b29s cy9maXJtd2FyZS9odm1sb2FkZXIvdXRpbC5jCmluZGV4IGIzNDU1NzYuLjNhNDIzYWIgMTAwNjQ0 Ci0tLSBhL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci91dGlsLmMKKysrIGIvdG9vbHMvZmlybXdh cmUvaHZtbG9hZGVyL3V0aWwuYwpAQCAtODY2LDEwICs4NjYsMjggQEAgc3RhdGljIHVpbnQ4X3Qg YmF0dGVyeV9wb3J0X2V4aXN0cyh2b2lkKQogICAgIHJldHVybiAoaW5iKDB4ODgpID09IDB4MUYp OwogfQogCitzdGF0aWMgdW5zaWduZWQgbG9uZyBhY3BpX3YycChzdHJ1Y3QgYWNwaV9jdHh0ICpj dHh0LCB2b2lkICp2KQoreworICAgIHJldHVybiB2aXJ0X3RvX3BoeXModik7Cit9CisKK3N0YXRp YyB2b2lkICphY3BpX21lbV9hbGxvYyhzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNpemUsIHVpbnQzMl90IGFsaWduKQoreworICAg IHJldHVybiBtZW1fYWxsb2Moc2l6ZSwgYWxpZ24pOworfQorCitzdGF0aWMgdm9pZCBhY3BpX21l bV9mcmVlKHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg IHZvaWQgKnYsIHVpbnQzMl90IHNpemUpCit7CisgICAgLyogQUNQSSBidWlsZGVyIGN1cnJlbnRs eSBkb2Vzbid0IGZyZWUgbWVtb3J5IHNvIHRoaXMgaXMganVzdCBhIHN0dWIgKi8KK30KKwogdm9p ZCBodm1sb2FkZXJfYWNwaV9idWlsZF90YWJsZXMoc3RydWN0IGFjcGlfY29uZmlnICpjb25maWcs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGh5c2ljYWwp CiB7CiAgICAgY29uc3QgY2hhciAqczsKKyAgICBzdHJ1Y3QgYWNwaV9jdHh0IGN0eHQ7CiAKICAg ICAvKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGlzZSB0aGUgYWNwaSBpbmZvIGFyZWEuICovCiAgICAg bWVtX2hvbGVfcG9wdWxhdGVfcmFtKEFDUElfSU5GT19QSFlTSUNBTF9BRERSRVNTID4+IFBBR0Vf U0hJRlQsIDEpOwpAQCAtOTM0LDcgKzk1MiwxMSBAQCB2b2lkIGh2bWxvYWRlcl9hY3BpX2J1aWxk X3RhYmxlcyhzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZpZywKICAgICBjb25maWctPnJzZHAgPSBw aHlzaWNhbDsKICAgICBjb25maWctPmluZm9wID0gQUNQSV9JTkZPX1BIWVNJQ0FMX0FERFJFU1M7 CiAKLSAgICBhY3BpX2J1aWxkX3RhYmxlcyhjb25maWcpOworICAgIGN0eHQubWVtX29wcy5hbGxv YyA9IGFjcGlfbWVtX2FsbG9jOworICAgIGN0eHQubWVtX29wcy5mcmVlID0gYWNwaV9tZW1fZnJl ZTsKKyAgICBjdHh0Lm1lbV9vcHMudjJwID0gYWNwaV92MnA7CisKKyAgICBhY3BpX2J1aWxkX3Rh YmxlcygmY3R4dCwgY29uZmlnKTsKIAogICAgIGh2bV9wYXJhbV9zZXQoSFZNX1BBUkFNX1ZNX0dF TkVSQVRJT05fSURfQUREUiwgY29uZmlnLT52bV9naWRfYWRkcik7CiB9Ci0tIAoxLjguMy4xCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg==