From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: [PATCH v6 05/14] xen/arm: Rework the interface of p2m_lookup and use typesafe gfn and mfn Date: Wed, 6 Jul 2016 14:01:04 +0100 Message-ID: <1467810073-27971-6-git-send-email-julien.grall@arm.com> References: <1467810073-27971-1-git-send-email-julien.grall@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1467810073-27971-1-git-send-email-julien.grall@arm.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: Julien Grall , sstabellini@kernel.org List-Id: xen-devel@lists.xenproject.org VGhlIHByb3RvdHlwZSBhbmQgdGhlIGRlY2xhcmF0aW9uIG9mIHAybV9sb29rdXAgZGlzYWdyZWUg b24gaG93IHRoZQpmdW5jdGlvbiBzaG91bGQgYmUgdXNlZC4gT25lIGV4cGVjdCBhIGZyYW1lIG51 bWJlciB3aGlsc3QgdGhlIG90aGVyCmFuIGFkZHJlc3MuCgpUaGFua2Z1bGx5LCBldmVyeW9uZSBp cyB1c2luZyB3aXRoIGFuIGFkZHJlc3MgdG9kYXkuIEhvd2V2ZXIsIG1vc3Qgb2YKdGhlIGNhbGxl cnMgaGF2ZSB0byBjb252ZXJ0IGEgZ3Vlc3QgZnJhbWUgdG8gYW4gYWRkcmVzcy4gTW9kaWZ5CnRo ZSBpbnRlcmZhY2UgdG8gdGFrZSBhIGd1ZXN0IHBoeXNpY2FsIGZyYW1lIGluIHBhcmFtZXRlciBh bmQgcmV0dXJuCmEgbWFjaGluZSBmcmFtZS4KCldoaWxzdCBtb2RpZnlpbmcgdGhlIGludGVyZmFj ZSwgdXNlIHR5cGVzYWZlIGdmbiBhbmQgbWZuIGZvciBjbGFyaXR5CmFuZCBjYXRjaGluZyBwb3Nz aWJsZSBtaXN1c2FnZS4KClNpZ25lZC1vZmYtYnk6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxs QGFybS5jb20+CkFja2VkLWJ5OiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5l bC5vcmc+CgotLS0KICAgIENoYW5nZXMgaW4gdjY6CiAgICAgICAgLSBBZGQgU3RlZmFubydzIGFj a2VkLWJ5CgogICAgQ2hhbmdlcyBpbiB2NDoKICAgICAgICAtIFVzZSBJTlZBTElEX01GTl9UIHdo ZW4gcG9zc2libGUKLS0tCiB4ZW4vYXJjaC9hcm0vcDJtLmMgICAgICAgIHwgNDMgKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL2FyY2gvYXJtL3RyYXBzLmMg ICAgICB8IDIxICsrKysrKysrKysrLS0tLS0tLS0tLQogeGVuL2luY2x1ZGUvYXNtLWFybS9wMm0u aCB8ICA3ICsrKy0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKSwgMzQgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3AybS5jIGIveGVuL2FyY2gvYXJt L3AybS5jCmluZGV4IGM5MzhkZGUuLjU0YTM2M2EgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9w Mm0uYworKysgYi94ZW4vYXJjaC9hcm0vcDJtLmMKQEAgLTE0MCwxNCArMTQwLDE1IEBAIHZvaWQg Zmx1c2hfdGxiX2RvbWFpbihzdHJ1Y3QgZG9tYWluICpkKQogfQogCiAvKgotICogTG9va3VwIHRo ZSBNRk4gY29ycmVzcG9uZGluZyB0byBhIGRvbWFpbidzIFBGTi4KKyAqIExvb2t1cCB0aGUgTUZO IGNvcnJlc3BvbmRpbmcgdG8gYSBkb21haW4ncyBHRk4uCiAgKgogICogVGhlcmUgYXJlIG5vIHBy b2Nlc3NvciBmdW5jdGlvbnMgdG8gZG8gYSBzdGFnZSAyIG9ubHkgbG9va3VwIHRoZXJlZm9yZSB3 ZQogICogZG8gYSBhIHNvZnR3YXJlIHdhbGsuCiAgKi8KLXN0YXRpYyBwYWRkcl90IF9fcDJtX2xv b2t1cChzdHJ1Y3QgZG9tYWluICpkLCBwYWRkcl90IHBhZGRyLCBwMm1fdHlwZV90ICp0KQorc3Rh dGljIG1mbl90IF9fcDJtX2xvb2t1cChzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4sIHAybV90 eXBlX3QgKnQpCiB7CiAgICAgc3RydWN0IHAybV9kb21haW4gKnAybSA9ICZkLT5hcmNoLnAybTsK KyAgICBjb25zdCBwYWRkcl90IHBhZGRyID0gcGZuX3RvX3BhZGRyKGdmbl94KGdmbikpOwogICAg IGNvbnN0IHVuc2lnbmVkIGludCBvZmZzZXRzWzRdID0gewogICAgICAgICB6ZXJvZXRoX3RhYmxl X29mZnNldChwYWRkciksCiAgICAgICAgIGZpcnN0X3RhYmxlX29mZnNldChwYWRkciksCkBAIC0x NTgsNyArMTU5LDcgQEAgc3RhdGljIHBhZGRyX3QgX19wMm1fbG9va3VwKHN0cnVjdCBkb21haW4g KmQsIHBhZGRyX3QgcGFkZHIsIHAybV90eXBlX3QgKnQpCiAgICAgICAgIFpFUk9FVEhfTUFTSywg RklSU1RfTUFTSywgU0VDT05EX01BU0ssIFRISVJEX01BU0sKICAgICB9OwogICAgIGxwYWVfdCBw dGUsICptYXA7Ci0gICAgcGFkZHJfdCBtYWRkciA9IElOVkFMSURfUEFERFI7CisgICAgbWZuX3Qg bWZuID0gSU5WQUxJRF9NRk47CiAgICAgcGFkZHJfdCBtYXNrID0gMDsKICAgICBwMm1fdHlwZV90 IF90OwogICAgIHVuc2lnbmVkIGludCBsZXZlbCwgcm9vdF90YWJsZTsKQEAgLTIxNiwyMSArMjE3 LDIyIEBAIHN0YXRpYyBwYWRkcl90IF9fcDJtX2xvb2t1cChzdHJ1Y3QgZG9tYWluICpkLCBwYWRk cl90IHBhZGRyLCBwMm1fdHlwZV90ICp0KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1hc2spOwog ICAgICAgICBBU1NFUlQocHRlLnAybS50eXBlICE9IHAybV9pbnZhbGlkKTsKLSAgICAgICAgbWFk ZHIgPSAocHRlLmJpdHMgJiBQQUREUl9NQVNLICYgbWFzaykgfCAocGFkZHIgJiB+bWFzayk7Cisg ICAgICAgIG1mbiA9IF9tZm4ocGFkZHJfdG9fcGZuKChwdGUuYml0cyAmIFBBRERSX01BU0sgJiBt YXNrKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWRkciAmIH5tYXNrKSkp OwogICAgICAgICAqdCA9IHB0ZS5wMm0udHlwZTsKICAgICB9CiAKIGVycjoKLSAgICByZXR1cm4g bWFkZHI7CisgICAgcmV0dXJuIG1mbjsKIH0KIAotcGFkZHJfdCBwMm1fbG9va3VwKHN0cnVjdCBk b21haW4gKmQsIHBhZGRyX3QgcGFkZHIsIHAybV90eXBlX3QgKnQpCittZm5fdCBwMm1fbG9va3Vw KHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwgcDJtX3R5cGVfdCAqdCkKIHsKLSAgICBwYWRk cl90IHJldDsKKyAgICBtZm5fdCByZXQ7CiAgICAgc3RydWN0IHAybV9kb21haW4gKnAybSA9ICZk LT5hcmNoLnAybTsKIAogICAgIHNwaW5fbG9jaygmcDJtLT5sb2NrKTsKLSAgICByZXQgPSBfX3Ay bV9sb29rdXAoZCwgcGFkZHIsIHQpOworICAgIHJldCA9IF9fcDJtX2xvb2t1cChkLCBnZm4sIHQp OwogICAgIHNwaW5fdW5sb2NrKCZwMm0tPmxvY2spOwogCiAgICAgcmV0dXJuIHJldDsKQEAgLTQ5 Myw4ICs0OTUsOSBAQCBzdGF0aWMgaW50IF9fcDJtX2dldF9tZW1fYWNjZXNzKHN0cnVjdCBkb21h aW4gKmQsIGdmbl90IGdmbiwKICAgICAgICAgICogTm8gc2V0dGluZyB3YXMgZm91bmQgaW4gdGhl IFJhZGl4IHRyZWUuIENoZWNrIGlmIHRoZQogICAgICAgICAgKiBlbnRyeSBleGlzdHMgaW4gdGhl IHBhZ2UtdGFibGVzLgogICAgICAgICAgKi8KLSAgICAgICAgcGFkZHJfdCBtYWRkciA9IF9fcDJt X2xvb2t1cChkLCBnZm5feChnZm4pIDw8IFBBR0VfU0hJRlQsIE5VTEwpOwotICAgICAgICBpZiAo IElOVkFMSURfUEFERFIgPT0gbWFkZHIgKQorICAgICAgICBtZm5fdCBtZm4gPSBfX3AybV9sb29r dXAoZCwgZ2ZuLCBOVUxMKTsKKworICAgICAgICBpZiAoIG1mbl9lcShtZm4sIElOVkFMSURfTUZO KSApCiAgICAgICAgICAgICByZXR1cm4gLUVTUkNIOwogCiAgICAgICAgIC8qIElmIGVudHJ5IGV4 aXN0cyB0aGVuIGl0cyByd3guICovCkBAIC0xNDgzLDggKzE0ODYsNyBAQCBpbnQgcDJtX2NhY2hl X2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHhlbl9wZm5fdCBzdGFydF9tZm4sIHhlbl9wZm5fdCBl bmRfbWZuKQogCiBtZm5fdCBnZm5fdG9fbWZuKHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbikK IHsKLSAgICBwYWRkcl90IHAgPSBwMm1fbG9va3VwKGQsIHBmbl90b19wYWRkcihnZm5feChnZm4p KSwgTlVMTCk7Ci0gICAgcmV0dXJuIF9tZm4ocCA+PiBQQUdFX1NISUZUKTsKKyAgICByZXR1cm4g cDJtX2xvb2t1cChkLCBnZm4sIE5VTEwpOwogfQogCiAvKgpAQCAtMTQ5OCw4ICsxNTAwLDggQEAg cDJtX21lbV9hY2Nlc3NfY2hlY2tfYW5kX2dldF9wYWdlKHZhZGRyX3QgZ3ZhLCB1bnNpZ25lZCBs b25nIGZsYWcpCiB7CiAgICAgbG9uZyByYzsKICAgICBwYWRkcl90IGlwYTsKLSAgICB1bnNpZ25l ZCBsb25nIG1hZGRyOwotICAgIHVuc2lnbmVkIGxvbmcgbWZuOworICAgIGdmbl90IGdmbjsKKyAg ICBtZm5fdCBtZm47CiAgICAgeGVubWVtX2FjY2Vzc190IHhtYTsKICAgICBwMm1fdHlwZV90IHQ7 CiAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSA9IE5VTEw7CkBAIC0xNTA4LDExICsxNTEwLDEz IEBAIHAybV9tZW1fYWNjZXNzX2NoZWNrX2FuZF9nZXRfcGFnZSh2YWRkcl90IGd2YSwgdW5zaWdu ZWQgbG9uZyBmbGFnKQogICAgIGlmICggcmMgPCAwICkKICAgICAgICAgZ290byBlcnI7CiAKKyAg ICBnZm4gPSBfZ2ZuKHBhZGRyX3RvX3BmbihpcGEpKTsKKwogICAgIC8qCiAgICAgICogV2UgZG8g dGhpcyBmaXJzdCBhcyB0aGlzIGlzIGZhc3RlciBpbiB0aGUgZGVmYXVsdCBjYXNlIHdoZW4gbm8K ICAgICAgKiBwZXJtaXNzaW9uIGlzIHNldCBvbiB0aGUgcGFnZS4KICAgICAgKi8KLSAgICByYyA9 IF9fcDJtX2dldF9tZW1fYWNjZXNzKGN1cnJlbnQtPmRvbWFpbiwgX2dmbihwYWRkcl90b19wZm4o aXBhKSksICZ4bWEpOworICAgIHJjID0gX19wMm1fZ2V0X21lbV9hY2Nlc3MoY3VycmVudC0+ZG9t YWluLCBnZm4sICZ4bWEpOwogICAgIGlmICggcmMgPCAwICkKICAgICAgICAgZ290byBlcnI7CiAK QEAgLTE1NjEsMTIgKzE1NjUsMTEgQEAgcDJtX21lbV9hY2Nlc3NfY2hlY2tfYW5kX2dldF9wYWdl KHZhZGRyX3QgZ3ZhLCB1bnNpZ25lZCBsb25nIGZsYWcpCiAgICAgICogV2UgaGFkIGEgbWVtX2Fj Y2VzcyBwZXJtaXNzaW9uIGxpbWl0aW5nIHRoZSBhY2Nlc3MsIGJ1dCB0aGUgcGFnZSB0eXBlCiAg ICAgICogY291bGQgYWxzbyBiZSBsaW1pdGluZywgc28gd2UgbmVlZCB0byBjaGVjayB0aGF0IGFz IHdlbGwuCiAgICAgICovCi0gICAgbWFkZHIgPSBfX3AybV9sb29rdXAoY3VycmVudC0+ZG9tYWlu LCBpcGEsICZ0KTsKLSAgICBpZiAoIG1hZGRyID09IElOVkFMSURfUEFERFIgKQorICAgIG1mbiA9 IF9fcDJtX2xvb2t1cChjdXJyZW50LT5kb21haW4sIGdmbiwgJnQpOworICAgIGlmICggbWZuX2Vx KG1mbiwgSU5WQUxJRF9NRk4pICkKICAgICAgICAgZ290byBlcnI7CiAKLSAgICBtZm4gPSBtYWRk ciA+PiBQQUdFX1NISUZUOwotICAgIGlmICggIW1mbl92YWxpZChtZm4pICkKKyAgICBpZiAoICFt Zm5fdmFsaWQobWZuX3gobWZuKSkgKQogICAgICAgICBnb3RvIGVycjsKIAogICAgIC8qCkBAIC0x NTc1LDcgKzE1NzgsNyBAQCBwMm1fbWVtX2FjY2Vzc19jaGVja19hbmRfZ2V0X3BhZ2UodmFkZHJf dCBndmEsIHVuc2lnbmVkIGxvbmcgZmxhZykKICAgICBpZiAoIHQgIT0gcDJtX3JhbV9ydyApCiAg ICAgICAgIGdvdG8gZXJyOwogCi0gICAgcGFnZSA9IG1mbl90b19wYWdlKG1mbik7CisgICAgcGFn ZSA9IG1mbl90b19wYWdlKG1mbl94KG1mbikpOwogCiAgICAgaWYgKCB1bmxpa2VseSghZ2V0X3Bh Z2UocGFnZSwgY3VycmVudC0+ZG9tYWluKSkgKQogICAgICAgICBwYWdlID0gTlVMTDsKZGlmZiAt LWdpdCBhL3hlbi9hcmNoL2FybS90cmFwcy5jIGIveGVuL2FyY2gvYXJtL3RyYXBzLmMKaW5kZXgg NDQ5MjZjYS4uYjY1M2Y2MSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL3RyYXBzLmMKKysrIGIv eGVuL2FyY2gvYXJtL3RyYXBzLmMKQEAgLTIzMTksMTQgKzIzMTksMTYgQEAgdm9pZCBkdW1wX2d1 ZXN0X3MxX3dhbGsoc3RydWN0IGRvbWFpbiAqZCwgdmFkZHJfdCBhZGRyKQogewogICAgIHJlZ2lz dGVyX3QgdHRiY3IgPSBSRUFEX1NZU1JFRyhUQ1JfRUwxKTsKICAgICB1aW50NjRfdCB0dGJyMCA9 IFJFQURfU1lTUkVHNjQoVFRCUjBfRUwxKTsKLSAgICBwYWRkcl90IHBhZGRyOwogICAgIHVpbnQz Ml90IG9mZnNldDsKICAgICB1aW50MzJfdCAqZmlyc3QgPSBOVUxMLCAqc2Vjb25kID0gTlVMTDsK KyAgICBtZm5fdCBtZm47CisKKyAgICBtZm4gPSBwMm1fbG9va3VwKGQsIF9nZm4ocGFkZHJfdG9f cGZuKHR0YnIwKSksIE5VTEwpOwogCiAgICAgcHJpbnRrKCJkb20lZCBWQSAweCUwOCJQUkl2YWRk ciJcbiIsIGQtPmRvbWFpbl9pZCwgYWRkcik7CiAgICAgcHJpbnRrKCIgICAgVFRCQ1I6IDB4JTA4 IlBSSXJlZ2lzdGVyIlxuIiwgdHRiY3IpOwogICAgIHByaW50aygiICAgIFRUQlIwOiAweCUwMTYi UFJJeDY0IiA9IDB4JSJQUklwYWRkciJcbiIsCi0gICAgICAgICAgIHR0YnIwLCBwMm1fbG9va3Vw KGQsIHR0YnIwICYgUEFHRV9NQVNLLCBOVUxMKSk7CisgICAgICAgICAgIHR0YnIwLCBwZm5fdG9f cGFkZHIobWZuX3gobWZuKSkpOwogCiAgICAgaWYgKCB0dGJjciAmIFRUQkNSX0VBRSApCiAgICAg ewpAQCAtMjMzOSwzMiArMjM0MSwzMSBAQCB2b2lkIGR1bXBfZ3Vlc3RfczFfd2FsayhzdHJ1Y3Qg ZG9tYWluICpkLCB2YWRkcl90IGFkZHIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBw YWRkciA9IHAybV9sb29rdXAoZCwgdHRicjAgJiBQQUdFX01BU0ssIE5VTEwpOwotICAgIGlmICgg cGFkZHIgPT0gSU5WQUxJRF9QQUREUiApCisgICAgaWYgKCBtZm5fZXEobWZuLCBJTlZBTElEX01G TikgKQogICAgIHsKICAgICAgICAgcHJpbnRrKCJGYWlsZWQgVFRCUjAgbWFkZHIgbG9va3VwXG4i KTsKICAgICAgICAgZ290byBkb25lOwogICAgIH0KLSAgICBmaXJzdCA9IG1hcF9kb21haW5fcGFn ZShfbWZuKHBhZGRyX3RvX3BmbihwYWRkcikpKTsKKyAgICBmaXJzdCA9IG1hcF9kb21haW5fcGFn ZShtZm4pOwogCiAgICAgb2Zmc2V0ID0gYWRkciA+PiAoMTIrMTApOwogICAgIHByaW50aygiMVNU WzB4JSJQUkl4MzIiXSAoMHglIlBSSXBhZGRyIikgPSAweCUwOCJQUkl4MzIiXG4iLAotICAgICAg ICAgICBvZmZzZXQsIHBhZGRyLCBmaXJzdFtvZmZzZXRdKTsKKyAgICAgICAgICAgb2Zmc2V0LCBw Zm5fdG9fcGFkZHIobWZuX3gobWZuKSksIGZpcnN0W29mZnNldF0pOwogICAgIGlmICggIShmaXJz dFtvZmZzZXRdICYgMHgxKSB8fAogICAgICAgICAgIShmaXJzdFtvZmZzZXRdICYgMHgyKSApCiAg ICAgICAgIGdvdG8gZG9uZTsKIAotICAgIHBhZGRyID0gcDJtX2xvb2t1cChkLCBmaXJzdFtvZmZz ZXRdICYgUEFHRV9NQVNLLCBOVUxMKTsKKyAgICBtZm4gPSBwMm1fbG9va3VwKGQsIF9nZm4ocGFk ZHJfdG9fcGZuKGZpcnN0W29mZnNldF0pKSwgTlVMTCk7CiAKLSAgICBpZiAoIHBhZGRyID09IElO VkFMSURfUEFERFIgKQorICAgIGlmICggbWZuX2VxKG1mbiwgSU5WQUxJRF9NRk4pICkKICAgICB7 CiAgICAgICAgIHByaW50aygiRmFpbGVkIEwxIGVudHJ5IG1hZGRyIGxvb2t1cFxuIik7CiAgICAg ICAgIGdvdG8gZG9uZTsKICAgICB9Ci0gICAgc2Vjb25kID0gbWFwX2RvbWFpbl9wYWdlKF9tZm4o cGFkZHJfdG9fcGZuKHBhZGRyKSkpOworICAgIHNlY29uZCA9IG1hcF9kb21haW5fcGFnZShtZm4p OwogICAgIG9mZnNldCA9IChhZGRyID4+IDEyKSAmIDB4M0ZGOwogICAgIHByaW50aygiMk5EWzB4 JSJQUkl4MzIiXSAoMHglIlBSSXBhZGRyIikgPSAweCUwOCJQUkl4MzIiXG4iLAotICAgICAgICAg ICBvZmZzZXQsIHBhZGRyLCBzZWNvbmRbb2Zmc2V0XSk7CisgICAgICAgICAgIG9mZnNldCwgcGZu X3RvX3BhZGRyKG1mbl94KG1mbikpLCBzZWNvbmRbb2Zmc2V0XSk7CiAKIGRvbmU6CiAgICAgaWYg KHNlY29uZCkgdW5tYXBfZG9tYWluX3BhZ2Uoc2Vjb25kKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNs dWRlL2FzbS1hcm0vcDJtLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL3AybS5oCmluZGV4IDBkMWU2 MWUuLmYyMDQ0ODIgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vcDJtLmgKKysrIGIv eGVuL2luY2x1ZGUvYXNtLWFybS9wMm0uaApAQCAtMTM1LDggKzEzNSw4IEBAIHZvaWQgcDJtX3Jl c3RvcmVfc3RhdGUoc3RydWN0IHZjcHUgKm4pOwogLyogUHJpbnQgZGVidWdnaW5nL3N0YXRpc3Rp YWwgaW5mbyBhYm91dCBhIGRvbWFpbidzIHAybSAqLwogdm9pZCBwMm1fZHVtcF9pbmZvKHN0cnVj dCBkb21haW4gKmQpOwogCi0vKiBMb29rIHVwIHRoZSBNRk4gY29ycmVzcG9uZGluZyB0byBhIGRv bWFpbidzIFBGTi4gKi8KLXBhZGRyX3QgcDJtX2xvb2t1cChzdHJ1Y3QgZG9tYWluICpkLCBwYWRk cl90IGdwZm4sIHAybV90eXBlX3QgKnQpOworLyogTG9vayB1cCB0aGUgTUZOIGNvcnJlc3BvbmRp bmcgdG8gYSBkb21haW4ncyBHRk4uICovCittZm5fdCBwMm1fbG9va3VwKHN0cnVjdCBkb21haW4g KmQsIGdmbl90IGdmbiwgcDJtX3R5cGVfdCAqdCk7CiAKIC8qIENsZWFuICYgaW52YWxpZGF0ZSBj YWNoZXMgY29ycmVzcG9uZGluZyB0byBhIHJlZ2lvbiBvZiBndWVzdCBhZGRyZXNzIHNwYWNlICov CiBpbnQgcDJtX2NhY2hlX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHhlbl9wZm5fdCBzdGFydF9t Zm4sIHhlbl9wZm5fdCBlbmRfbWZuKTsKQEAgLTIwMSw4ICsyMDEsNyBAQCBzdGF0aWMgaW5saW5l IHN0cnVjdCBwYWdlX2luZm8gKmdldF9wYWdlX2Zyb21fZ2ZuKAogewogICAgIHN0cnVjdCBwYWdl X2luZm8gKnBhZ2U7CiAgICAgcDJtX3R5cGVfdCBwMm10OwotICAgIHBhZGRyX3QgbWFkZHIgPSBw Mm1fbG9va3VwKGQsIHBmbl90b19wYWRkcihnZm4pLCAmcDJtdCk7Ci0gICAgdW5zaWduZWQgbG9u ZyBtZm4gPSBtYWRkciA+PiBQQUdFX1NISUZUOworICAgIHVuc2lnbmVkIGxvbmcgbWZuID0gbWZu X3gocDJtX2xvb2t1cChkLCBfZ2ZuKGdmbiksICZwMm10KSk7CiAKICAgICBpZiAodCkKICAgICAg ICAgKnQgPSBwMm10OwotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK