From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v2 5/5] x86/pv: Implement the failsafe callback using the general path Date: Tue, 27 Feb 2018 14:50:36 +0000 Message-ID: <1519743036-11600-6-git-send-email-andrew.cooper3@citrix.com> References: <1519743036-11600-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1519743036-11600-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Wei Liu , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org UmVpbnRyb2R1Y2UgVEJGX0ZBSUxTQUZFIGFuZCB1cGRhdGUgcHZfY3JlYXRlX2V4Y2VwdGlvbl9m cmFtZSgpIHRvIGNvcGUgd2l0aAp0aGUgYWRkaXRpb25hbCBkYXRhIHNlZ21lbnQgcmVnaXN0ZXJz LgoKbG9hZF9zZWdtZW50cygpIG5vdyBmaWxscyBpbiB0cmFwX2JvdW5jZSwgYW5kIGxldHMgdGhl IGdlbmVyYWwgcmV0dXJuLXRvLWd1ZXN0CnBhdGggaW5qZWN0IHRoZSBleGNlcHRpb24uCgpCbG9h dC1vLW1ldGVyIHJlcG9ydHM6CiAgYWRkL3JlbW92ZTogMC8wIGdyb3cvc2hyaW5rOiAxLzEgdXAv ZG93bjogMTIzLy0yNTIyICgtMjM5OSkKICBmdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvbGQgICAgIG5ldyAgIGRlbHRhCiAgcHZfY3JlYXRlX2V4Y2VwdGlvbl9m cmFtZSAgICAgICAgICAgICAgICAgICAxMDg4ICAgIDEyMTEgICAgKzEyMwogIGNvbnRleHRfc3dp dGNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzU2NSAgICAxMDQzICAgLTI1MjIKCndo aWNoIEkgc3VzcGVjdCBpcyBsYXJnZWx5IGR1ZSB0byB0aGUgcXVhbnRpdHkgb2YgY29kZSBoaWRk ZW4gYmVoaW5kCnB1dF91c2VyKCkuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRy ZXcuY29vcGVyM0BjaXRyaXguY29tPgpSZXZpZXdlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNo QHN1c2UuY29tPgotLS0KQ0M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CkNDOiBSb2dl ciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KCnYyOgogKiBVc2UgY29uc3QgdXJl Z3MuCi0tLQogeGVuL2FyY2gveDg2L2RvbWFpbi5jICAgICAgICAgICB8IDEwMCArKystLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYvcHYvdHJhcHMuYyAg ICAgICAgIHwgIDI5ICsrKysrKysrKystLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9wcm9jZXNzb3Iu aCB8ICAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDk4IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21haW4uYyBiL3hlbi9hcmNoL3g4Ni9k b21haW4uYwppbmRleCA2OTY3OWE2Li43YmNlN2RlIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYv ZG9tYWluLmMKKysrIGIveGVuL2FyY2gveDg2L2RvbWFpbi5jCkBAIC0xMzU0LDEwMCArMTM1NCwx NCBAQCBzdGF0aWMgdm9pZCBsb2FkX3NlZ21lbnRzKHN0cnVjdCB2Y3B1ICpuKQogCiAgICAgaWYg KCB1bmxpa2VseSghYWxsX3NlZ3Nfb2theSkgKQogICAgIHsKLSAgICAgICAgc3RydWN0IHB2X3Zj cHUgKnB2ID0gJm4tPmFyY2gucHZfdmNwdTsKLSAgICAgICAgc3RydWN0IGNwdV91c2VyX3JlZ3Mg KnJlZ3MgPSBndWVzdF9jcHVfdXNlcl9yZWdzKCk7Ci0gICAgICAgIHVuc2lnbmVkIGxvbmcgKnJz cCA9Ci0gICAgICAgICAgICAodW5zaWduZWQgbG9uZyAqKSgoKG4tPmFyY2guZmxhZ3MgJiBURl9r ZXJuZWxfbW9kZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHJlZ3MtPnJzcCA6 IHB2LT5rZXJuZWxfc3ApICYgfjB4Zik7Ci0gICAgICAgIHVuc2lnbmVkIGxvbmcgY3NfYW5kX21h c2ssIHJmbGFnczsKLQotICAgICAgICAvKiBGb2xkIHVwY2FsbCBtYXNrIGFuZCBhcmNoaXRlY3R1 cmFsIElPUEwgaW50byBSRkxBR1MuSUYuICovCi0gICAgICAgIHJmbGFncyAgPSByZWdzLT5yZmxh Z3MgJiB+KFg4Nl9FRkxBR1NfSUZ8WDg2X0VGTEFHU19JT1BMKTsKLSAgICAgICAgcmZsYWdzIHw9 ICF2Y3B1X2luZm8obiwgZXZ0Y2huX3VwY2FsbF9tYXNrKSA8PCA5OwotICAgICAgICBpZiAoIFZN X0FTU0lTVChuLT5kb21haW4sIGFyY2hpdGVjdHVyYWxfaW9wbCkgKQotICAgICAgICAgICAgcmZs YWdzIHw9IG4tPmFyY2gucHZfdmNwdS5pb3BsOwotCi0gICAgICAgIGlmICggaXNfcHZfMzJiaXRf dmNwdShuKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGludCAqZXNwID0gcmlu Z18xKHJlZ3MpID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGlu dCAqKXJlZ3MtPnJzcCA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25l ZCBpbnQgKilwdi0+a2VybmVsX3NwOwotICAgICAgICAgICAgaW50IHJldCA9IDA7Ci0KLSAgICAg ICAgICAgIC8qIENTIGxvbmd3b3JkIGFsc28gY29udGFpbnMgZnVsbCBldnRjaG5fdXBjYWxsX21h c2suICovCi0gICAgICAgICAgICBjc19hbmRfbWFzayA9ICh1bnNpZ25lZCBzaG9ydClyZWdzLT5j cyB8Ci0gICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBpbnQpdmNwdV9pbmZvKG4sIGV2dGNobl91 cGNhbGxfbWFzaykgPDwgMTYpOwotCi0gICAgICAgICAgICBpZiAoICFyaW5nXzEocmVncykgKQot ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldCAgPSBwdXRfdXNlcihyZWdzLT5zcywg ICAgICAgZXNwLTEpOwotICAgICAgICAgICAgICAgIHJldCB8PSBwdXRfdXNlcihyZWdzLT5lc3As ICAgICAgZXNwLTIpOwotICAgICAgICAgICAgICAgIGVzcCAtPSAyOwotICAgICAgICAgICAgfQot Ci0gICAgICAgICAgICBpZiAoIHJldCB8Ci0gICAgICAgICAgICAgICAgIHB1dF91c2VyKHJmbGFn cywgICAgICAgICAgICAgIGVzcC0xKSB8Ci0gICAgICAgICAgICAgICAgIHB1dF91c2VyKGNzX2Fu ZF9tYXNrLCAgICAgICAgIGVzcC0yKSB8Ci0gICAgICAgICAgICAgICAgIHB1dF91c2VyKHJlZ3Mt PmVpcCwgICAgICAgICAgIGVzcC0zKSB8Ci0gICAgICAgICAgICAgICAgIHB1dF91c2VyKHVyZWdz LT5ncywgICAgICAgICAgIGVzcC00KSB8Ci0gICAgICAgICAgICAgICAgIHB1dF91c2VyKHVyZWdz LT5mcywgICAgICAgICAgIGVzcC01KSB8Ci0gICAgICAgICAgICAgICAgIHB1dF91c2VyKHVyZWdz LT5lcywgICAgICAgICAgIGVzcC02KSB8Ci0gICAgICAgICAgICAgICAgIHB1dF91c2VyKHVyZWdz LT5kcywgICAgICAgICAgIGVzcC03KSApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg Z3ByaW50ayhYRU5MT0dfRVJSLAotICAgICAgICAgICAgICAgICAgICAgICAgImVycm9yIHdoaWxl IGNyZWF0aW5nIGNvbXBhdCBmYWlsc2FmZSBjYWxsYmFjayBmcmFtZVxuIik7Ci0gICAgICAgICAg ICAgICAgZG9tYWluX2NyYXNoKG4tPmRvbWFpbik7Ci0gICAgICAgICAgICB9CisgICAgICAgIGJv b2wgZGlzYWJsZSA9IG4tPmFyY2gudmdjX2ZsYWdzICYgVkdDRl9mYWlsc2FmZV9kaXNhYmxlc19l dmVudHM7CiAKLSAgICAgICAgICAgIGlmICggbi0+YXJjaC52Z2NfZmxhZ3MgJiBWR0NGX2ZhaWxz YWZlX2Rpc2FibGVzX2V2ZW50cyApCi0gICAgICAgICAgICAgICAgdmNwdV9pbmZvKG4sIGV2dGNo bl91cGNhbGxfbWFzaykgPSAxOwotCi0gICAgICAgICAgICByZWdzLT5lbnRyeV92ZWN0b3IgfD0g VFJBUF9zeXNjYWxsOwotICAgICAgICAgICAgcmVncy0+ZWZsYWdzICAgICAgICY9IH4oWDg2X0VG TEFHU19WTXxYODZfRUZMQUdTX1JGfFg4Nl9FRkxBR1NfTlR8Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBYODZfRUZMQUdTX0lPUEx8WDg2X0VGTEFHU19URik7Ci0gICAgICAg ICAgICByZWdzLT5zcyAgICAgICAgICAgID0gRkxBVF9DT01QQVRfS0VSTkVMX1NTOwotICAgICAg ICAgICAgcmVncy0+ZXNwICAgICAgICAgICA9ICh1bnNpZ25lZCBsb25nKShlc3AtNyk7Ci0gICAg ICAgICAgICByZWdzLT5jcyAgICAgICAgICAgID0gRkxBVF9DT01QQVRfS0VSTkVMX0NTOwotICAg ICAgICAgICAgcmVncy0+ZWlwICAgICAgICAgICA9IHB2LT5mYWlsc2FmZV9jYWxsYmFja19laXA7 Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoICEobi0+YXJj aC5mbGFncyAmIFRGX2tlcm5lbF9tb2RlKSApCi0gICAgICAgICAgICB0b2dnbGVfZ3Vlc3RfbW9k ZShuKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVncy0+Y3MgJj0gfjM7Ci0KLSAgICAg ICAgLyogQ1MgbG9uZ3dvcmQgYWxzbyBjb250YWlucyBmdWxsIGV2dGNobl91cGNhbGxfbWFzay4g Ki8KLSAgICAgICAgY3NfYW5kX21hc2sgPSAodW5zaWduZWQgbG9uZylyZWdzLT5jcyB8Ci0gICAg ICAgICAgICAoKHVuc2lnbmVkIGxvbmcpdmNwdV9pbmZvKG4sIGV2dGNobl91cGNhbGxfbWFzaykg PDwgMzIpOwotCi0gICAgICAgIGlmICggcHV0X3VzZXIocmVncy0+c3MsICAgICAgICAgICAgcnNw LSAxKSB8Ci0gICAgICAgICAgICAgcHV0X3VzZXIocmVncy0+cnNwLCAgICAgICAgICAgcnNwLSAy KSB8Ci0gICAgICAgICAgICAgcHV0X3VzZXIocmZsYWdzLCAgICAgICAgICAgICAgcnNwLSAzKSB8 Ci0gICAgICAgICAgICAgcHV0X3VzZXIoY3NfYW5kX21hc2ssICAgICAgICAgcnNwLSA0KSB8Ci0g ICAgICAgICAgICAgcHV0X3VzZXIocmVncy0+cmlwLCAgICAgICAgICAgcnNwLSA1KSB8Ci0gICAg ICAgICAgICAgcHV0X3VzZXIodXJlZ3MtPmdzLCAgICAgICAgICAgcnNwLSA2KSB8Ci0gICAgICAg ICAgICAgcHV0X3VzZXIodXJlZ3MtPmZzLCAgICAgICAgICAgcnNwLSA3KSB8Ci0gICAgICAgICAg ICAgcHV0X3VzZXIodXJlZ3MtPmVzLCAgICAgICAgICAgcnNwLSA4KSB8Ci0gICAgICAgICAgICAg cHV0X3VzZXIodXJlZ3MtPmRzLCAgICAgICAgICAgcnNwLSA5KSB8Ci0gICAgICAgICAgICAgcHV0 X3VzZXIocmVncy0+cjExLCAgICAgICAgICAgcnNwLTEwKSB8Ci0gICAgICAgICAgICAgcHV0X3Vz ZXIocmVncy0+cmN4LCAgICAgICAgICAgcnNwLTExKSApCi0gICAgICAgIHsKLSAgICAgICAgICAg IGdwcmludGsoWEVOTE9HX0VSUiwKLSAgICAgICAgICAgICAgICAgICAgImVycm9yIHdoaWxlIGNy ZWF0aW5nIGZhaWxzYWZlIGNhbGxiYWNrIGZyYW1lXG4iKTsKLSAgICAgICAgICAgIGRvbWFpbl9j cmFzaChuLT5kb21haW4pOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCBuLT5hcmNoLnZnY19m bGFncyAmIFZHQ0ZfZmFpbHNhZmVfZGlzYWJsZXNfZXZlbnRzICkKLSAgICAgICAgICAgIHZjcHVf aW5mbyhuLCBldnRjaG5fdXBjYWxsX21hc2spID0gMTsKLQotICAgICAgICByZWdzLT5lbnRyeV92 ZWN0b3IgfD0gVFJBUF9zeXNjYWxsOwotICAgICAgICByZWdzLT5yZmxhZ3MgICAgICAgJj0gfihY ODZfRUZMQUdTX0FDfFg4Nl9FRkxBR1NfVk18WDg2X0VGTEFHU19SRnwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgWDg2X0VGTEFHU19OVHxYODZfRUZMQUdTX0lPUEx8WDg2X0VGTEFH U19URik7Ci0gICAgICAgIHJlZ3MtPnNzICAgICAgICAgICAgPSBGTEFUX0tFUk5FTF9TUzsKLSAg ICAgICAgcmVncy0+cnNwICAgICAgICAgICA9ICh1bnNpZ25lZCBsb25nKShyc3AtMTEpOwotICAg ICAgICByZWdzLT5jcyAgICAgICAgICAgID0gRkxBVF9LRVJORUxfQ1M7Ci0gICAgICAgIHJlZ3Mt PnJpcCAgICAgICAgICAgPSBwdi0+ZmFpbHNhZmVfY2FsbGJhY2tfZWlwOworICAgICAgICBuLT5h cmNoLnB2X3ZjcHUudHJhcF9ib3VuY2UgPSAoc3RydWN0IHRyYXBfYm91bmNlKXsKKyAgICAgICAg ICAgIC5mbGFncyA9IChUQkZfRkFJTFNBRkUgfCBUQkZfRVhDRVBUSU9OIHwKKyAgICAgICAgICAg ICAgICAgICAgICAoZGlzYWJsZSA/IFRCRl9JTlRFUlJVUFQgOiAwKSksCisgICAgICAgICAgICAu Y3MgICAgPSBGTEFUX0NPTVBBVF9LRVJORUxfQ1MsIC8qIElnbm9yZWQgZm9yIDY0Yml0IGd1ZXN0 cy4gKi8KKyAgICAgICAgICAgIC5laXAgICA9IG4tPmFyY2gucHZfdmNwdS5mYWlsc2FmZV9jYWxs YmFja19laXAKKyAgICAgICAgfTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4 Ni9wdi90cmFwcy5jIGIveGVuL2FyY2gveDg2L3B2L3RyYXBzLmMKaW5kZXggYjdkN2QyYi4uODc0 NWU0NCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3B2L3RyYXBzLmMKKysrIGIveGVuL2FyY2gv eDg2L3B2L3RyYXBzLmMKQEAgLTI1OCw2ICsyNTgsNyBAQCB2b2lkIHB2X2NyZWF0ZV9leGNlcHRp b25fZnJhbWUodm9pZCkKICAgICBzdHJ1Y3QgdmNwdSAqY3VyciA9IGN1cnJlbnQ7CiAgICAgc3Ry dWN0IHRyYXBfYm91bmNlICp0YiA9ICZjdXJyLT5hcmNoLnB2X3ZjcHUudHJhcF9ib3VuY2U7CiAg ICAgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MgPSBndWVzdF9jcHVfdXNlcl9yZWdzKCk7Cisg ICAgY29uc3Qgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnVyZWdzID0gJmN1cnItPmFyY2gudXNlcl9y ZWdzOwogICAgIGNvbnN0IGJvb2wgdXNlcl9tb2RlX2ZyYW1lID0gIWd1ZXN0X2tlcm5lbF9tb2Rl KGN1cnIsIHJlZ3MpOwogICAgIHVpbnQ4X3QgKmV2dF9tYXNrID0gJnZjcHVfaW5mbyhjdXJyLCBl dnRjaG5fdXBjYWxsX21hc2spOwogICAgIHVuc2lnbmVkIGludCBmbGFncywgYnl0ZXMsIG1pc3Np bmc7CkBAIC0yNzksMTAgKzI4MCwxOCBAQCB2b2lkIHB2X2NyZWF0ZV9leGNlcHRpb25fZnJhbWUo dm9pZCkKIAogICAgIGlmICggaXNfcHZfMzJiaXRfdmNwdShjdXJyKSApCiAgICAgewotICAgICAg ICAvKiB7IFtFUlJDT0RFLF0gRUlQLCBDUy9NQVNLICwgRUZMQUdTLCBbRVNQLCBTU10gfSAqLwot ICAgICAgICB1bnNpZ25lZCBpbnQgZnJhbWVbNl0sICpwdHIgPSBmcmFtZSwga3NwID0KKyAgICAg ICAgLyogeyBbRFMtR1MsXSBbRVJSQ09ERSxdIEVJUCwgQ1MvTUFTSyAsIEVGTEFHUywgW0VTUCwg U1NdIH0gKi8KKyAgICAgICAgdW5zaWduZWQgaW50IGZyYW1lWzEwXSwgKnB0ciA9IGZyYW1lLCBr c3AgPQogICAgICAgICAgICAgKHVzZXJfbW9kZV9mcmFtZSA/IGN1cnItPmFyY2gucHZfdmNwdS5r ZXJuZWxfc3AgOiByZWdzLT5lc3ApOwogCisgICAgICAgIGlmICggdGItPmZsYWdzICYgVEJGX0ZB SUxTQUZFICkKKyAgICAgICAgeworICAgICAgICAgICAgKnB0cisrID0gdXJlZ3MtPmRzOworICAg ICAgICAgICAgKnB0cisrID0gdXJlZ3MtPmVzOworICAgICAgICAgICAgKnB0cisrID0gdXJlZ3Mt PmZzOworICAgICAgICAgICAgKnB0cisrID0gdXJlZ3MtPmdzOworICAgICAgICB9CisKICAgICAg ICAgaWYgKCB0Yi0+ZmxhZ3MgJiBUQkZfRVhDRVBUSU9OX0VSUkNPREUgKQogICAgICAgICAgICAg KnB0cisrID0gdGItPmVycm9yX2NvZGU7CiAKQEAgLTMyMSwxMyArMzMwLDE1IEBAIHZvaWQgcHZf Y3JlYXRlX2V4Y2VwdGlvbl9mcmFtZSh2b2lkKQogICAgICAgICByZWdzLT5yZmxhZ3MgICAgICAg Jj0gfihYODZfRUZMQUdTX1ZNIHwgWDg2X0VGTEFHU19SRiB8CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFg4Nl9FRkxBR1NfTlQgfCBYODZfRUZMQUdTX1RGKTsKICAgICAgICAgcmVn cy0+cnNwICAgICAgICAgICA9IGtzcDsKLSAgICAgICAgaWYgKCB1c2VyX21vZGVfZnJhbWUgKQor ICAgICAgICBpZiAoIHRiLT5mbGFncyAmIFRCRl9GQUlMU0FGRSApCisgICAgICAgICAgICByZWdz LT5zcyA9IEZMQVRfQ09NUEFUX0tFUk5FTF9TUzsKKyAgICAgICAgZWxzZSBpZiAoIHVzZXJfbW9k ZV9mcmFtZSApCiAgICAgICAgICAgICByZWdzLT5zcyA9IGN1cnItPmFyY2gucHZfdmNwdS5rZXJu ZWxfc3M7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIC8qIHsgUkNYLCBSMTEsIFtF UlJDT0RFLF0gUklQLCBDUy9NQVNLLCBSRkxBR1MsIFJTUCwgU1MgfSAqLwotICAgICAgICB1bnNp Z25lZCBsb25nIGZyYW1lWzhdLCAqcHRyID0gZnJhbWUsIGtzcCA9CisgICAgICAgIC8qIHsgUkNY LCBSMTEsIFtEUy1HUyxdIFtFUlJDT0RFLF0gUklQLCBDUy9NQVNLLCBSRkxBR1MsIFJTUCwgU1Mg fSAqLworICAgICAgICB1bnNpZ25lZCBsb25nIGZyYW1lWzEyXSwgKnB0ciA9IGZyYW1lLCBrc3Ag PQogICAgICAgICAgICAgKHVzZXJfbW9kZV9mcmFtZSA/IGN1cnItPmFyY2gucHZfdmNwdS5rZXJu ZWxfc3AgOiByZWdzLT5yc3ApICYgfjB4ZjsKIAogICAgICAgICBpZiAoIHVzZXJfbW9kZV9mcmFt ZSApCkBAIC0zMzYsNiArMzQ3LDE0IEBAIHZvaWQgcHZfY3JlYXRlX2V4Y2VwdGlvbl9mcmFtZSh2 b2lkKQogICAgICAgICAqcHRyKysgPSByZWdzLT5yY3g7CiAgICAgICAgICpwdHIrKyA9IHJlZ3Mt PnIxMTsKIAorICAgICAgICBpZiAoIHRiLT5mbGFncyAmIFRCRl9GQUlMU0FGRSApCisgICAgICAg IHsKKyAgICAgICAgICAgICpwdHIrKyA9IHVyZWdzLT5kczsKKyAgICAgICAgICAgICpwdHIrKyA9 IHVyZWdzLT5lczsKKyAgICAgICAgICAgICpwdHIrKyA9IHVyZWdzLT5mczsKKyAgICAgICAgICAg ICpwdHIrKyA9IHVyZWdzLT5nczsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICggdGItPmZsYWdz ICYgVEJGX0VYQ0VQVElPTl9FUlJDT0RFICkKICAgICAgICAgICAgICpwdHIrKyA9IHRiLT5lcnJv cl9jb2RlOwogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3Byb2Nlc3Nvci5oIGIv eGVuL2luY2x1ZGUvYXNtLXg4Ni9wcm9jZXNzb3IuaAppbmRleCAwMWJjODlmLi40ZmJhOWE0IDEw MDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3Byb2Nlc3Nvci5oCisrKyBiL3hlbi9pbmNs dWRlL2FzbS14ODYvcHJvY2Vzc29yLmgKQEAgLTYxLDYgKzYxLDcgQEAKIC8qICd0cmFwX2JvdW5j ZScgZmxhZ3MgdmFsdWVzICovCiAjZGVmaW5lIFRCRl9FWENFUFRJT04gICAgICAgICAgMQogI2Rl ZmluZSBUQkZfRVhDRVBUSU9OX0VSUkNPREUgIDIKKyNkZWZpbmUgVEJGX0ZBSUxTQUZFICAgICAg ICAgICA0CiAjZGVmaW5lIFRCRl9JTlRFUlJVUFQgICAgICAgICAgOAogCiAvKiAnYXJjaF92Y3B1 JyBmbGFncyB2YWx1ZXMgKi8KLS0gCjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp c3RpbmZvL3hlbi1kZXZlbA==