From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keir Fraser Subject: Re: [PATCH 1/3] xen: Add instruction length parameter in function hvm_inject_exception Date: Fri, 25 May 2012 09:53:01 +0100 Message-ID: References: <1337886385-2374-2-git-send-email-xudong.hao@intel.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="B_3420784386_192024370" Return-path: In-Reply-To: <1337886385-2374-2-git-send-email-xudong.hao@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Xudong Hao , JBeulich@suse.com Cc: Aravindh Puthiyaparambil , eddie.dong@intel.com, Ian Jackson , Xiantao Zhang , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org > This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. --B_3420784386_192024370 Content-type: text/plain; charset="US-ASCII" Content-transfer-encoding: 7bit On 24/05/2012 20:06, "Xudong Hao" wrote: > VMX exception: Pass the instruction length field down to exception emulation, > by changing hypercall parameter and adding a parameter in fucntion > hvm_inject_exception(), so that exception emulation can set correct > instruction length. > > Signed-off-by: Xudong Hao > Signed-off-by: Xiantao Zhang I don't like adding yet another parameter for all callers, especially as we should also be passing down the event type (sw interrupt, hw exception, ...) and that would bloat the parameter list further. I attach a cleanup patch which packs everything into a new struct and renames hvm_inject_exception to hvm_inject_trap. I then define a couple of wrappers around that function for existing callers, so that their parameter lists actually *shrink*. Let me know what you think. If it looks acceptable I can check it in and we can build on top of this restructuring. The aim being to keep hvm/vmx_inject_trap dumb, and push down the knowledge from the callers into it. -- Keir --B_3420784386_192024370 Content-type: application/octet-stream; name="00-inject-cleanup" Content-disposition: attachment; filename="00-inject-cleanup" Content-transfer-encoding: base64 ZGlmZiAtciA1M2UwNTcxZjk0ZTQgeGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKLS0tIGEv eGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMJRnJpIE1heSAyNSAwODoyMToyNSAyMDEyICsw MTAwCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCUZyaSBNYXkgMjUgMDk6NDU6 MDAgMjAxMiArMDEwMApAQCAtMzI2LDcgKzMyNiw3IEBAIHN0YXRpYyBpbnQgaHZtZW11bF9s aW5lYXJfdG9fcGh5cygKICAgICB7CiAgICAgICAgIGlmICggcGZlYyA9PSBQRkVDX3BhZ2Vf cGFnZWQgfHwgcGZlYyA9PSBQRkVDX3BhZ2Vfc2hhcmVkICkKICAgICAgICAgICAgIHJldHVy biBYODZFTVVMX1JFVFJZOwotICAgICAgICBodm1faW5qZWN0X2V4Y2VwdGlvbihUUkFQX3Bh Z2VfZmF1bHQsIHBmZWMsIGFkZHIpOworICAgICAgICBodm1faW5qZWN0X3BhZ2VfZmF1bHQo cGZlYywgYWRkcik7CiAgICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKICAgICB9 CiAKQEAgLTM0OSw3ICszNDksNyBAQCBzdGF0aWMgaW50IGh2bWVtdWxfbGluZWFyX3RvX3Bo eXMoCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFyZXZlcnNlKTsKICAgICAgICAgICAgICAg ICBpZiAoIG5wZm4gIT0gSU5WQUxJRF9HRk4gKQogICAgICAgICAgICAgICAgICAgICByZXR1 cm4gWDg2RU1VTF9VTkhBTkRMRUFCTEU7Ci0gICAgICAgICAgICAgICAgaHZtX2luamVjdF9l eGNlcHRpb24oVFJBUF9wYWdlX2ZhdWx0LCBwZmVjLCBhZGRyICYgUEFHRV9NQVNLKTsKKyAg ICAgICAgICAgICAgICBodm1faW5qZWN0X3BhZ2VfZmF1bHQocGZlYywgYWRkciAmIFBBR0Vf TUFTSyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwogICAg ICAgICAgICAgfQogICAgICAgICAgICAgKnJlcHMgPSBkb25lOwpkaWZmIC1yIDUzZTA1NzFm OTRlNCB4ZW4vYXJjaC94ODYvaHZtL2h2bS5jCi0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaHZt LmMJRnJpIE1heSAyNSAwODoyMToyNSAyMDEyICswMTAwCisrKyBiL3hlbi9hcmNoL3g4Ni9o dm0vaHZtLmMJRnJpIE1heSAyNSAwOTo0NTowMCAyMDEyICswMTAwCkBAIC0zNDcsMTIgKzM0 NywxMCBAQCB2b2lkIGh2bV9kb19yZXN1bWUoc3RydWN0IHZjcHUgKnYpCiAgICAgfQogCiAg ICAgLyogSW5qZWN0IHBlbmRpbmcgaHcvc3cgdHJhcCAqLwotICAgIGlmICh2LT5hcmNoLmh2 bV92Y3B1LmluamVjdF90cmFwICE9IC0xKSAKKyAgICBpZiAoIHYtPmFyY2guaHZtX3ZjcHUu aW5qZWN0X3RyYXAudmVjdG9yICE9IC0xICkgCiAgICAgewotICAgICAgICBodm1faW5qZWN0 X2V4Y2VwdGlvbih2LT5hcmNoLmh2bV92Y3B1LmluamVjdF90cmFwLCAKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdi0+YXJjaC5odm1fdmNwdS5pbmplY3RfZXJyb3JfY29kZSwg Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtPmFyY2guaHZtX3ZjcHUuaW5qZWN0 X2NyMik7Ci0gICAgICAgIHYtPmFyY2guaHZtX3ZjcHUuaW5qZWN0X3RyYXAgPSAtMTsKKyAg ICAgICAgaHZtX2luamVjdF90cmFwKCZ2LT5hcmNoLmh2bV92Y3B1LmluamVjdF90cmFwKTsK KyAgICAgICAgdi0+YXJjaC5odm1fdmNwdS5pbmplY3RfdHJhcC52ZWN0b3IgPSAtMTsKICAg ICB9CiB9CiAKQEAgLTEwNDcsNyArMTA0NSw3IEBAIGludCBodm1fdmNwdV9pbml0aWFsaXNl KHN0cnVjdCB2Y3B1ICp2KQogICAgIHNwaW5fbG9ja19pbml0KCZ2LT5hcmNoLmh2bV92Y3B1 LnRtX2xvY2spOwogICAgIElOSVRfTElTVF9IRUFEKCZ2LT5hcmNoLmh2bV92Y3B1LnRtX2xp c3QpOwogCi0gICAgdi0+YXJjaC5odm1fdmNwdS5pbmplY3RfdHJhcCA9IC0xOworICAgIHYt PmFyY2guaHZtX3ZjcHUuaW5qZWN0X3RyYXAudmVjdG9yID0gLTE7CiAKICNpZmRlZiBDT05G SUdfQ09NUEFUCiAgICAgcmMgPSBzZXR1cF9jb21wYXRfYXJnX3hsYXQodik7CkBAIC0xMTk0 LDE4ICsxMTkyLDE5IEBAIHZvaWQgaHZtX3RyaXBsZV9mYXVsdCh2b2lkKQogICAgIGRvbWFp bl9zaHV0ZG93bih2LT5kb21haW4sIFNIVVRET1dOX3JlYm9vdCk7CiB9CiAKLXZvaWQgaHZt X2luamVjdF9leGNlcHRpb24odW5zaWduZWQgaW50IHRyYXBuciwgaW50IGVycmNvZGUsIHVu c2lnbmVkIGxvbmcgY3IyKQordm9pZCBodm1faW5qZWN0X3RyYXAoc3RydWN0IGh2bV90cmFw ICp0cmFwKQogewogICAgIHN0cnVjdCB2Y3B1ICpjdXJyID0gY3VycmVudDsKIAogICAgIGlm ICggbmVzdGVkaHZtX2VuYWJsZWQoY3Vyci0+ZG9tYWluKSAmJgogICAgICAgICAgIW5lc3Rl ZGh2bV92bXN3aXRjaF9pbl9wcm9ncmVzcyhjdXJyKSAmJgogICAgICAgICAgbmVzdGVkaHZt X3ZjcHVfaW5fZ3Vlc3Rtb2RlKGN1cnIpICYmCi0gICAgICAgICBuaHZtX3ZtY3hfZ3Vlc3Rf aW50ZXJjZXB0c190cmFwKGN1cnIsIHRyYXBuciwgZXJyY29kZSkgKQorICAgICAgICAgbmh2 bV92bWN4X2d1ZXN0X2ludGVyY2VwdHNfdHJhcCgKKyAgICAgICAgICAgICBjdXJyLCB0cmFw LT52ZWN0b3IsIHRyYXAtPmVycm9yX2NvZGUpICkKICAgICB7CiAgICAgICAgIGVudW0gbmVz dGVkaHZtX3ZtZXhpdHMgbnNyZXQ7CiAKLSAgICAgICAgbnNyZXQgPSBuaHZtX3ZjcHVfdm1l eGl0X3RyYXAoY3VyciwgdHJhcG5yLCBlcnJjb2RlLCBjcjIpOworICAgICAgICBuc3JldCA9 IG5odm1fdmNwdV92bWV4aXRfdHJhcChjdXJyLCB0cmFwKTsKIAogICAgICAgICBzd2l0Y2gg KCBuc3JldCApCiAgICAgICAgIHsKQEAgLTEyMjEsNyArMTIyMCwyNiBAQCB2b2lkIGh2bV9p bmplY3RfZXhjZXB0aW9uKHVuc2lnbmVkIGludCB0CiAgICAgICAgIH0KICAgICB9CiAKLSAg ICBodm1fZnVuY3MuaW5qZWN0X2V4Y2VwdGlvbih0cmFwbnIsIGVycmNvZGUsIGNyMik7Cisg ICAgaHZtX2Z1bmNzLmluamVjdF90cmFwKHRyYXApOworfQorCit2b2lkIGh2bV9pbmplY3Rf aHdfZXhjZXB0aW9uKHVuc2lnbmVkIGludCB0cmFwbnIsIGludCBlcnJjb2RlKQoreworICAg IHN0cnVjdCBodm1fdHJhcCB0cmFwID0geworICAgICAgICAudmVjdG9yID0gdHJhcG5yLAor ICAgICAgICAudHlwZSA9IFg4Nl9FVkVOVFRZUEVfSFdfRVhDRVBUSU9OLAorICAgICAgICAu ZXJyb3JfY29kZSA9IGVycmNvZGUgfTsKKyAgICBodm1faW5qZWN0X3RyYXAoJnRyYXApOwor fQorCit2b2lkIGh2bV9pbmplY3RfcGFnZV9mYXVsdChpbnQgZXJyY29kZSwgdW5zaWduZWQg bG9uZyBjcjIpCit7CisgICAgc3RydWN0IGh2bV90cmFwIHRyYXAgPSB7CisgICAgICAgIC52 ZWN0b3IgPSBUUkFQX3BhZ2VfZmF1bHQsCisgICAgICAgIC50eXBlID0gWDg2X0VWRU5UVFlQ RV9IV19FWENFUFRJT04sCisgICAgICAgIC5lcnJvcl9jb2RlID0gZXJyY29kZSwKKyAgICAg ICAgLmNyMiA9IGNyMiB9OworICAgIGh2bV9pbmplY3RfdHJhcCgmdHJhcCk7CiB9CiAKIGlu dCBodm1faGFwX25lc3RlZF9wYWdlX2ZhdWx0KHVuc2lnbmVkIGxvbmcgZ3BhLApAQCAtMTI3 MCw3ICsxMjg4LDcgQEAgaW50IGh2bV9oYXBfbmVzdGVkX3BhZ2VfZmF1bHQodW5zaWduZWQg bAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBjYXNlIE5FU1RFREhWTV9QQUdF RkFVTFRfTU1JTzoKICAgICAgICAgICAgIGlmICggIWhhbmRsZV9tbWlvKCkgKQotICAgICAg ICAgICAgICAgIGh2bV9pbmplY3RfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDAsIDApOwor ICAgICAgICAgICAgICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQs IDApOwogICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMzM3 LDcgKzEzNTUsNyBAQCBpbnQgaHZtX2hhcF9uZXN0ZWRfcGFnZV9mYXVsdCh1bnNpZ25lZCBs CiAgICAgewogICAgICAgICBwdXRfZ2ZuKHAybS0+ZG9tYWluLCBnZm4pOwogICAgICAgICBp ZiAoICFoYW5kbGVfbW1pbygpICkKLSAgICAgICAgICAgIGh2bV9pbmplY3RfZXhjZXB0aW9u KFRSQVBfZ3BfZmF1bHQsIDAsIDApOworICAgICAgICAgICAgaHZtX2luamVjdF9od19leGNl cHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7CiAgICAgICAgIHJjID0gMTsKICAgICAgICAgZ290 byBvdXQ7CiAgICAgfQpAQCAtMTM4MCw3ICsxMzk4LDcgQEAgaW50IGh2bV9oYXBfbmVzdGVk X3BhZ2VfZmF1bHQodW5zaWduZWQgbAogICAgIHsKICAgICAgICAgZ2RwcmludGsoWEVOTE9H X1dBUk5JTkcsCiAgICAgICAgICAgICAgICAgICJ0cnlpbmcgdG8gd3JpdGUgdG8gcmVhZC1v bmx5IGdyYW50IG1hcHBpbmdcbiIpOwotICAgICAgICBodm1faW5qZWN0X2V4Y2VwdGlvbihU UkFQX2dwX2ZhdWx0LCAwLCAwKTsKKyAgICAgICAgaHZtX2luamVjdF9od19leGNlcHRpb24o VFJBUF9ncF9mYXVsdCwgMCk7CiAgICAgICAgIHJjID0gMTsKICAgICAgICAgZ290byBvdXRf cHV0X2dmbjsKICAgICB9CkBAIC0xNDQxLDcgKzE0NTksNyBAQCBpbnQgaHZtX2hhbmRsZV94 c2V0YnYodTY0IG5ld19idikKIAogICAgIHJldHVybiAwOwogZXJyOgotICAgIGh2bV9pbmpl Y3RfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDAsIDApOworICAgIGh2bV9pbmplY3RfaHdf ZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDApOwogICAgIHJldHVybiAtMTsKIH0KIApAQCAt MTQ1Nyw3ICsxNDc1LDcgQEAgaW50IGh2bV9zZXRfZWZlcih1aW50NjRfdCB2YWx1ZSkKICAg ICB7CiAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLCAiVHJ5aW5nIHRvIHNldCBy ZXNlcnZlZCBiaXQgaW4gIgogICAgICAgICAgICAgICAgICAiRUZFUjogMHglIlBSSXg2NCJc biIsIHZhbHVlKTsKLSAgICAgICAgaHZtX2luamVjdF9leGNlcHRpb24oVFJBUF9ncF9mYXVs dCwgMCwgMCk7CisgICAgICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1 bHQsIDApOwogICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047CiAgICAgfQogCkBA IC0xNDY2LDcgKzE0ODQsNyBAQCBpbnQgaHZtX3NldF9lZmVyKHVpbnQ2NF90IHZhbHVlKQog ICAgIHsKICAgICAgICAgZ2RwcmludGsoWEVOTE9HX1dBUk5JTkcsCiAgICAgICAgICAgICAg ICAgICJUcnlpbmcgdG8gY2hhbmdlIEVGRVIuTE1FIHdpdGggcGFnaW5nIGVuYWJsZWRcbiIp OwotICAgICAgICBodm1faW5qZWN0X2V4Y2VwdGlvbihUUkFQX2dwX2ZhdWx0LCAwLCAwKTsK KyAgICAgICAgaHZtX2luamVjdF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7CiAg ICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKICAgICB9CiAKQEAgLTE3MjIsNyAr MTc0MCw3IEBAIGludCBodm1fc2V0X2NyMCh1bnNpZ25lZCBsb25nIHZhbHVlKQogICAgIHJl dHVybiBYODZFTVVMX09LQVk7CiAKICBncGY6Ci0gICAgaHZtX2luamVjdF9leGNlcHRpb24o VFJBUF9ncF9mYXVsdCwgMCwgMCk7CisgICAgaHZtX2luamVjdF9od19leGNlcHRpb24oVFJB UF9ncF9mYXVsdCwgMCk7CiAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwogfQogCkBA IC0xODA4LDcgKzE4MjYsNyBAQCBpbnQgaHZtX3NldF9jcjQodW5zaWduZWQgbG9uZyB2YWx1 ZSkKICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwogCiAgZ3BmOgotICAgIGh2bV9pbmplY3Rf ZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDAsIDApOworICAgIGh2bV9pbmplY3RfaHdfZXhj ZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDApOwogICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElP TjsKIH0KIApAQCAtMjEwNCw3ICsyMTIyLDcgQEAgc3RhdGljIGludCBodm1fbG9hZF9zZWdt ZW50X3NlbGVjdG9yKAogIHVubWFwX2FuZF9mYWlsOgogICAgIGh2bV91bm1hcF9lbnRyeShw ZGVzYyk7CiAgZmFpbDoKLSAgICBodm1faW5qZWN0X2V4Y2VwdGlvbihmYXVsdF90eXBlLCBz ZWwgJiAweGZmZmMsIDApOworICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKGZhdWx0X3R5 cGUsIHNlbCAmIDB4ZmZmYyk7CiAgaHZtX21hcF9mYWlsOgogICAgIHJldHVybiAxOwogfQpA QCAtMjEzNyw5ICsyMTU1LDkgQEAgdm9pZCBodm1fdGFza19zd2l0Y2goCiAKICAgICBpZiAo ICgodHNzX3NlbCAmIDB4ZmZmOCkgKyA3KSA+IGdkdC5saW1pdCApCiAgICAgewotICAgICAg ICBodm1faW5qZWN0X2V4Y2VwdGlvbigodGFza3N3aXRjaF9yZWFzb24gPT0gVFNXX2lyZXQp ID8KKyAgICAgICAgaHZtX2luamVjdF9od19leGNlcHRpb24oKHRhc2tzd2l0Y2hfcmVhc29u ID09IFRTV19pcmV0KSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSQVBfaW52 YWxpZF90c3MgOiBUUkFQX2dwX2ZhdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0c3Nfc2VsICYgMHhmZmY4LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dHNzX3NlbCAmIDB4ZmZmOCk7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIApAQCAtMjE2 NCwyMSArMjE4MiwyMSBAQCB2b2lkIGh2bV90YXNrX3N3aXRjaCgKIAogICAgIGlmICggIXRy LmF0dHIuZmllbGRzLnAgKQogICAgIHsKLSAgICAgICAgaHZtX2luamVjdF9leGNlcHRpb24o VFJBUF9ub19zZWdtZW50LCB0c3Nfc2VsICYgMHhmZmY4LCAwKTsKKyAgICAgICAgaHZtX2lu amVjdF9od19leGNlcHRpb24oVFJBUF9ub19zZWdtZW50LCB0c3Nfc2VsICYgMHhmZmY4KTsK ICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogCiAgICAgaWYgKCB0ci5hdHRyLmZpZWxkcy50 eXBlICE9ICgodGFza3N3aXRjaF9yZWFzb24gPT0gVFNXX2lyZXQpID8gMHhiIDogMHg5KSAp CiAgICAgewotICAgICAgICBodm1faW5qZWN0X2V4Y2VwdGlvbigKKyAgICAgICAgaHZtX2lu amVjdF9od19leGNlcHRpb24oCiAgICAgICAgICAgICAodGFza3N3aXRjaF9yZWFzb24gPT0g VFNXX2lyZXQpID8gVFJBUF9pbnZhbGlkX3RzcyA6IFRSQVBfZ3BfZmF1bHQsCi0gICAgICAg ICAgICB0c3Nfc2VsICYgMHhmZmY4LCAwKTsKKyAgICAgICAgICAgIHRzc19zZWwgJiAweGZm ZjgpOwogICAgICAgICBnb3RvIG91dDsKICAgICB9CiAKICAgICBpZiAoIHRyLmxpbWl0IDwg KHNpemVvZih0c3MpLTEpICkKICAgICB7Ci0gICAgICAgIGh2bV9pbmplY3RfZXhjZXB0aW9u KFRSQVBfaW52YWxpZF90c3MsIHRzc19zZWwgJiAweGZmZjgsIDApOworICAgICAgICBodm1f aW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQX2ludmFsaWRfdHNzLCB0c3Nfc2VsICYgMHhmZmY4 KTsKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogCkBAIC0yMjgzLDcgKzIzMDEsNyBAQCB2 b2lkIGh2bV90YXNrX3N3aXRjaCgKICAgICAgICAgZ290byBvdXQ7CiAKICAgICBpZiAoICh0 c3MudHJhY2UgJiAxKSAmJiAhZXhuX3JhaXNlZCApCi0gICAgICAgIGh2bV9pbmplY3RfZXhj ZXB0aW9uKFRSQVBfZGVidWcsIHRzc19zZWwgJiAweGZmZjgsIDApOworICAgICAgICBodm1f aW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQX2RlYnVnLCB0c3Nfc2VsICYgMHhmZmY4KTsKIAog ICAgIHRyLmF0dHIuZmllbGRzLnR5cGUgPSAweGI7IC8qIGJ1c3kgMzItYml0IHRzcyAqLwog ICAgIGh2bV9zZXRfc2VnbWVudF9yZWdpc3Rlcih2LCB4ODZfc2VnX3RyLCAmdHIpOwpAQCAt MjM2Miw3ICsyMzgwLDcgQEAgc3RhdGljIGVudW0gaHZtX2NvcHlfcmVzdWx0IF9faHZtX2Nv cHkoCiAgICAgICAgICAgICAgICAgaWYgKCBwZmVjID09IFBGRUNfcGFnZV9zaGFyZWQgKQog ICAgICAgICAgICAgICAgICAgICByZXR1cm4gSFZNQ09QWV9nZm5fc2hhcmVkOwogICAgICAg ICAgICAgICAgIGlmICggZmxhZ3MgJiBIVk1DT1BZX2ZhdWx0ICkKLSAgICAgICAgICAgICAg ICAgICAgaHZtX2luamVjdF9leGNlcHRpb24oVFJBUF9wYWdlX2ZhdWx0LCBwZmVjLCBhZGRy KTsKKyAgICAgICAgICAgICAgICAgICAgaHZtX2luamVjdF9wYWdlX2ZhdWx0KHBmZWMsIGFk ZHIpOwogICAgICAgICAgICAgICAgIHJldHVybiBIVk1DT1BZX2JhZF9ndmFfdG9fZ2ZuOwog ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yODQ5LDcgKzI4NjcsNyBAQCBpbnQgaHZt X21zcl9yZWFkX2ludGVyY2VwdCh1bnNpZ25lZCBpbnQgCiAgICAgcmV0dXJuIHJldDsKIAog IGdwX2ZhdWx0OgotICAgIGh2bV9pbmplY3RfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDAs IDApOworICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDApOwog ICAgIHJldCA9IFg4NkVNVUxfRVhDRVBUSU9OOwogICAgICptc3JfY29udGVudCA9IC0xdWxs OwogICAgIGdvdG8gb3V0OwpAQCAtMjk2Miw3ICsyOTgwLDcgQEAgaW50IGh2bV9tc3Jfd3Jp dGVfaW50ZXJjZXB0KHVuc2lnbmVkIGludAogICAgIHJldHVybiByZXQ7CiAKIGdwX2ZhdWx0 OgotICAgIGh2bV9pbmplY3RfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDAsIDApOworICAg IGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDApOwogICAgIHJldHVy biBYODZFTVVMX0VYQ0VQVElPTjsKIH0KIApAQCAtNDI2NywxMyArNDI4NSwxMyBAQCBsb25n IGRvX2h2bV9vcCh1bnNpZ25lZCBsb25nIG9wLCBYRU5fR1VFCiAgICAgICAgIGlmICggdHIu dmNwdWlkID49IGQtPm1heF92Y3B1cyB8fCAodiA9IGQtPnZjcHVbdHIudmNwdWlkXSkgPT0g TlVMTCApCiAgICAgICAgICAgICBnb3RvIHBhcmFtX2ZhaWw4OwogICAgICAgICAKLSAgICAg ICAgaWYgKCB2LT5hcmNoLmh2bV92Y3B1LmluamVjdF90cmFwICE9IC0xICkKKyAgICAgICAg aWYgKCB2LT5hcmNoLmh2bV92Y3B1LmluamVjdF90cmFwLnZlY3RvciAhPSAtMSApCiAgICAg ICAgICAgICByYyA9IC1FQlVTWTsKICAgICAgICAgZWxzZSAKICAgICAgICAgewotICAgICAg ICAgICAgdi0+YXJjaC5odm1fdmNwdS5pbmplY3RfdHJhcCAgICAgICA9IHRyLnRyYXA7Ci0g ICAgICAgICAgICB2LT5hcmNoLmh2bV92Y3B1LmluamVjdF9lcnJvcl9jb2RlID0gdHIuZXJy b3JfY29kZTsKLSAgICAgICAgICAgIHYtPmFyY2guaHZtX3ZjcHUuaW5qZWN0X2NyMiAgICAg ICAgPSB0ci5jcjI7CisgICAgICAgICAgICB2LT5hcmNoLmh2bV92Y3B1LmluamVjdF90cmFw LnZlY3RvciA9IHRyLnRyYXA7CisgICAgICAgICAgICB2LT5hcmNoLmh2bV92Y3B1LmluamVj dF90cmFwLmVycm9yX2NvZGUgPSB0ci5lcnJvcl9jb2RlOworICAgICAgICAgICAgdi0+YXJj aC5odm1fdmNwdS5pbmplY3RfdHJhcC5jcjIgPSB0ci5jcjI7CiAgICAgICAgIH0KIAogICAg IHBhcmFtX2ZhaWw4OgpAQCAtNDQzMSwxMSArNDQ0OSw5IEBAIGludCBuaHZtX3ZjcHVfdm1l eGl0KHN0cnVjdCB2Y3B1ICp2LCBzdHIKICAgICByZXR1cm4gLUVPUE5PVFNVUFA7CiB9CiAK LWludAotbmh2bV92Y3B1X3ZtZXhpdF90cmFwKHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBp bnQgdHJhcG5yLAotICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXJyY29kZSwgdW5zaWdu ZWQgbG9uZyBjcjIpCitpbnQgbmh2bV92Y3B1X3ZtZXhpdF90cmFwKHN0cnVjdCB2Y3B1ICp2 LCBzdHJ1Y3QgaHZtX3RyYXAgKnRyYXApCiB7Ci0gICAgcmV0dXJuIGh2bV9mdW5jcy5uaHZt X3ZjcHVfdm1leGl0X3RyYXAodiwgdHJhcG5yLCBlcnJjb2RlLCBjcjIpOworICAgIHJldHVy biBodm1fZnVuY3Mubmh2bV92Y3B1X3ZtZXhpdF90cmFwKHYsIHRyYXApOwogfQogCiB1aW50 NjRfdCBuaHZtX3ZjcHVfZ3Vlc3RjcjMoc3RydWN0IHZjcHUgKnYpCmRpZmYgLXIgNTNlMDU3 MWY5NGU0IHhlbi9hcmNoL3g4Ni9odm0vaW8uYwotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2lv LmMJRnJpIE1heSAyNSAwODoyMToyNSAyMDEyICswMTAwCisrKyBiL3hlbi9hcmNoL3g4Ni9o dm0vaW8uYwlGcmkgTWF5IDI1IDA5OjQ1OjAwIDIwMTIgKzAxMDAKQEAgLTIwMCw3ICsyMDAs NyBAQCBpbnQgaGFuZGxlX21taW8odm9pZCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgY2Fz ZSBYODZFTVVMX0VYQ0VQVElPTjoKICAgICAgICAgaWYgKCBjdHh0LmV4bl9wZW5kaW5nICkK LSAgICAgICAgICAgIGh2bV9pbmplY3RfZXhjZXB0aW9uKGN0eHQuZXhuX3ZlY3RvciwgY3R4 dC5leG5fZXJyb3JfY29kZSwgMCk7CisgICAgICAgICAgICBodm1faW5qZWN0X2h3X2V4Y2Vw dGlvbihjdHh0LmV4bl92ZWN0b3IsIGN0eHQuZXhuX2Vycm9yX2NvZGUpOwogICAgICAgICBi cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKZGlmZiAtciA1M2UwNTcxZjk0 ZTQgeGVuL2FyY2gveDg2L2h2bS9zdm0vZW11bGF0ZS5jCi0tLSBhL3hlbi9hcmNoL3g4Ni9o dm0vc3ZtL2VtdWxhdGUuYwlGcmkgTWF5IDI1IDA4OjIxOjI1IDIwMTIgKzAxMDAKKysrIGIv eGVuL2FyY2gveDg2L2h2bS9zdm0vZW11bGF0ZS5jCUZyaSBNYXkgMjUgMDk6NDU6MDAgMjAx MiArMDEwMApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHN0YXRpYyBpbnQgZmV0Y2goc3RydWN0IHZj cHUgKnYsIHU4ICpidWYKICAgICAgICAgLyogTm90IE9LOiBmZXRjaGVzIGZyb20gbm9uLVJB TSBwYWdlcyBhcmUgbm90IHN1cHBvcnRhYmxlLiAqLwogICAgICAgICBnZHByaW50ayhYRU5M T0dfV0FSTklORywgIkJhZCBpbnN0cnVjdGlvbiBmZXRjaCBhdCAlI2x4ICglI2x4KVxuIiwK ICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpIGd1ZXN0X2NwdV91c2VyX3JlZ3Mo KS0+ZWlwLCBhZGRyKTsKLSAgICAgICAgaHZtX2luamVjdF9leGNlcHRpb24oVFJBUF9ncF9m YXVsdCwgMCwgMCk7CisgICAgICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfZ3Bf ZmF1bHQsIDApOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgcmV0dXJuIDE7CkBA IC0yMTYsNyArMjE2LDcgQEAgaW50IF9fZ2V0X2luc3RydWN0aW9uX2xlbmd0aF9mcm9tX2xp c3QocwogICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLAogICAgICAgICAgICAgICIlczog TWlzbWF0Y2ggYmV0d2VlbiBleHBlY3RlZCBhbmQgYWN0dWFsIGluc3RydWN0aW9uIGJ5dGVz OiAiCiAgICAgICAgICAgICAgImVpcCA9ICVseFxuIiwgIF9fZnVuY19fLCAodW5zaWduZWQg bG9uZyl2bWNiLT5yaXApOwotICAgIGh2bV9pbmplY3RfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1 bHQsIDAsIDApOworICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQs IDApOwogICAgIHJldHVybiAwOwogCiAgZG9uZToKZGlmZiAtciA1M2UwNTcxZjk0ZTQgeGVu L2FyY2gveDg2L2h2bS9zdm0vbmVzdGVkc3ZtLmMKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9z dm0vbmVzdGVkc3ZtLmMJRnJpIE1heSAyNSAwODoyMToyNSAyMDEyICswMTAwCisrKyBiL3hl bi9hcmNoL3g4Ni9odm0vc3ZtL25lc3RlZHN2bS5jCUZyaSBNYXkgMjUgMDk6NDU6MDAgMjAx MiArMDEwMApAQCAtNzM1LDcgKzczNSw3IEBAIG5zdm1fdmNwdV92bXJ1bihzdHJ1Y3QgdmNw dSAqdiwgc3RydWN0IGMKICAgICBkZWZhdWx0OgogICAgICAgICBnZHByaW50ayhYRU5MT0df RVJSLAogICAgICAgICAgICAgIm5zdm1fdmNwdV92bWVudHJ5IGZhaWxlZCwgaW5qZWN0aW5n ICNVRFxuIik7Ci0gICAgICAgIGh2bV9pbmplY3RfZXhjZXB0aW9uKFRSQVBfaW52YWxpZF9v cCwgSFZNX0RFTElWRVJfTk9fRVJST1JfQ09ERSwgMCk7CisgICAgICAgIGh2bV9pbmplY3Rf aHdfZXhjZXB0aW9uKFRSQVBfaW52YWxpZF9vcCwgSFZNX0RFTElWRVJfTk9fRVJST1JfQ09E RSk7CiAgICAgICAgIC8qIE11c3QgaGFwcGVuIGFmdGVyIGh2bV9pbmplY3RfZXhjZXB0aW9u IG9yIGl0IGRvZXNuJ3Qgd29yayByaWdodC4gKi8KICAgICAgICAgbnYtPm52X3Ztc3dpdGNo X2luX3Byb2dyZXNzID0gMDsKICAgICAgICAgcmV0dXJuIDE7CkBAIC03OTYsMTIgKzc5Niwx MiBAQCBuc3ZtX3ZjcHVfdm1leGl0X2luamVjdChzdHJ1Y3QgdmNwdSAqdiwgCiB9CiAKIGlu dAotbnN2bV92Y3B1X3ZtZXhpdF90cmFwKHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBpbnQg dHJhcG5yLAotICAgICAgICAgICAgICAgICAgICAgIGludCBlcnJjb2RlLCB1bnNpZ25lZCBs b25nIGNyMikKK25zdm1fdmNwdV92bWV4aXRfdHJhcChzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0 IGh2bV90cmFwICp0cmFwKQogewogICAgIEFTU0VSVCh2Y3B1X25lc3RlZGh2bSh2KS5udl92 dm1jeCAhPSBOVUxMKTsKIAotICAgIG5lc3RlZHN2bV92bWV4aXRfZGVmZXIodiwgVk1FWElU X0VYQ0VQVElPTl9ERSArIHRyYXBuciwgZXJyY29kZSwgY3IyKTsKKyAgICBuZXN0ZWRzdm1f dm1leGl0X2RlZmVyKHYsIFZNRVhJVF9FWENFUFRJT05fREUgKyB0cmFwLT52ZWN0b3IsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFwLT5lcnJvcl9jb2RlLCB0cmFwLT5jcjIp OwogICAgIHJldHVybiBORVNURURIVk1fVk1FWElUX0RPTkU7CiB9CiAKQEAgLTExNzYsNyAr MTE3Niw3IEBAIGVudW0gaHZtX2ludGJsayBuc3ZtX2ludHJfYmxvY2tlZChzdHJ1Y3QKICAg ICB9CiAKICAgICBpZiAoIG52LT5udl92bWV4aXRfcGVuZGluZyApIHsKLSAgICAgICAgLyog aHZtX2luamVjdF9leGNlcHRpb24oKSBtdXN0IGhhdmUgcnVuIGJlZm9yZS4KKyAgICAgICAg LyogaHZtX2luamVjdF9od19leGNlcHRpb24oKSBtdXN0IGhhdmUgcnVuIGJlZm9yZS4KICAg ICAgICAgICogZXhjZXB0aW9ucyBoYXZlIGhpZ2hlciBwcmlvcml0eSB0aGFuIGludGVycnVw dHMuCiAgICAgICAgICAqLwogICAgICAgICByZXR1cm4gaHZtX2ludGJsa19yZmxhZ3NfaWU7 CkBAIC0xNTA5LDcgKzE1MDksNyBAQCB2b2lkIHN2bV92bWV4aXRfZG9fc3RnaShzdHJ1Y3Qg Y3B1X3VzZXJfCiAgICAgdW5zaWduZWQgaW50IGluc3RfbGVuOwogCiAgICAgaWYgKCAhbmVz dGVkaHZtX2VuYWJsZWQodi0+ZG9tYWluKSApIHsKLSAgICAgICAgaHZtX2luamVjdF9leGNl cHRpb24oVFJBUF9pbnZhbGlkX29wLCBIVk1fREVMSVZFUl9OT19FUlJPUl9DT0RFLCAwKTsK KyAgICAgICAgaHZtX2luamVjdF9od19leGNlcHRpb24oVFJBUF9pbnZhbGlkX29wLCBIVk1f REVMSVZFUl9OT19FUlJPUl9DT0RFKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt MTUyOSw3ICsxNTI5LDcgQEAgdm9pZCBzdm1fdm1leGl0X2RvX2NsZ2koc3RydWN0IGNwdV91 c2VyXwogICAgIHZpbnRyX3QgaW50cjsKIAogICAgIGlmICggIW5lc3RlZGh2bV9lbmFibGVk KHYtPmRvbWFpbikgKSB7Ci0gICAgICAgIGh2bV9pbmplY3RfZXhjZXB0aW9uKFRSQVBfaW52 YWxpZF9vcCwgSFZNX0RFTElWRVJfTk9fRVJST1JfQ09ERSwgMCk7CisgICAgICAgIGh2bV9p bmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfaW52YWxpZF9vcCwgSFZNX0RFTElWRVJfTk9fRVJS T1JfQ09ERSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtciA1M2UwNTcxZjk0 ZTQgeGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9z dm0vc3ZtLmMJRnJpIE1heSAyNSAwODoyMToyNSAyMDEyICswMTAwCisrKyBiL3hlbi9hcmNo L3g4Ni9odm0vc3ZtL3N2bS5jCUZyaSBNYXkgMjUgMDk6NDU6MDAgMjAxMiArMDEwMApAQCAt MTA5LDcgKzEwOSw3IEBAIHZvaWQgX191cGRhdGVfZ3Vlc3RfZWlwKHN0cnVjdCBjcHVfdXNl cl8KICAgICBjdXJyLT5hcmNoLmh2bV9zdm0udm1jYi0+aW50ZXJydXB0X3NoYWRvdyA9IDA7 CiAKICAgICBpZiAoIHJlZ3MtPmVmbGFncyAmIFg4Nl9FRkxBR1NfVEYgKQotICAgICAgICBo dm1faW5qZWN0X2V4Y2VwdGlvbihUUkFQX2RlYnVnLCBIVk1fREVMSVZFUl9OT19FUlJPUl9D T0RFLCAwKTsKKyAgICAgICAgaHZtX2luamVjdF9od19leGNlcHRpb24oVFJBUF9kZWJ1Zywg SFZNX0RFTElWRVJfTk9fRVJST1JfQ09ERSk7CiB9CiAKIHN0YXRpYyB2b2lkIHN2bV9jcHVf ZG93bih2b2lkKQpAQCAtMTA2NiwxNCArMTA2NiwxNCBAQCBzdGF0aWMgdm9pZCBzdm1fdmNw dV9kZXN0cm95KHN0cnVjdCB2Y3B1CiAgICAgcGFzc2l2ZV9kb21haW5fZGVzdHJveSh2KTsK IH0KIAotc3RhdGljIHZvaWQgc3ZtX2luamVjdF9leGNlcHRpb24oCi0gICAgdW5zaWduZWQg aW50IHRyYXBuciwgaW50IGVycmNvZGUsIHVuc2lnbmVkIGxvbmcgY3IyKQorc3RhdGljIHZv aWQgc3ZtX2luamVjdF90cmFwKHN0cnVjdCBodm1fdHJhcCAqdHJhcCkKIHsKICAgICBzdHJ1 Y3QgdmNwdSAqY3VyciA9IGN1cnJlbnQ7CiAgICAgc3RydWN0IHZtY2Jfc3RydWN0ICp2bWNi ID0gY3Vyci0+YXJjaC5odm1fc3ZtLnZtY2I7CiAgICAgZXZlbnRpbmpfdCBldmVudCA9IHZt Y2ItPmV2ZW50aW5qOworICAgIHN0cnVjdCBodm1fdHJhcCBfdHJhcCA9ICp0cmFwOwogCi0g ICAgc3dpdGNoICggdHJhcG5yICkKKyAgICBzd2l0Y2ggKCBfdHJhcC52ZWN0b3IgKQogICAg IHsKICAgICBjYXNlIFRSQVBfZGVidWc6CiAgICAgICAgIGlmICggZ3Vlc3RfY3B1X3VzZXJf cmVncygpLT5lZmxhZ3MgJiBYODZfRUZMQUdTX1RGICkKQEAgLTEwODEsNiArMTA4MSw5IEBA IHN0YXRpYyB2b2lkIHN2bV9pbmplY3RfZXhjZXB0aW9uKAogICAgICAgICAgICAgX19yZXN0 b3JlX2RlYnVnX3JlZ2lzdGVycyhjdXJyKTsKICAgICAgICAgICAgIHZtY2Jfc2V0X2RyNih2 bWNiLCB2bWNiX2dldF9kcjYodm1jYikgfCAweDQwMDApOwogICAgICAgICB9CisgICAgICAg IGlmICggY3B1X2hhc19tb25pdG9yX3RyYXBfZmxhZyApCisgICAgICAgICAgICBicmVhazsK KyAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCiAgICAgY2FzZSBUUkFQX2ludDM6CiAgICAg ICAgIGlmICggY3Vyci0+ZG9tYWluLT5kZWJ1Z2dlcl9hdHRhY2hlZCApCiAgICAgICAgIHsK QEAgLTEwOTMsMjkgKzEwOTYsMzAgQEAgc3RhdGljIHZvaWQgc3ZtX2luamVjdF9leGNlcHRp b24oCiAgICAgaWYgKCB1bmxpa2VseShldmVudC5maWVsZHMudikgJiYKICAgICAgICAgIChl dmVudC5maWVsZHMudHlwZSA9PSBYODZfRVZFTlRUWVBFX0hXX0VYQ0VQVElPTikgKQogICAg IHsKLSAgICAgICAgdHJhcG5yID0gaHZtX2NvbWJpbmVfaHdfZXhjZXB0aW9ucyhldmVudC5m aWVsZHMudmVjdG9yLCB0cmFwbnIpOwotICAgICAgICBpZiAoIHRyYXBuciA9PSBUUkFQX2Rv dWJsZV9mYXVsdCApCi0gICAgICAgICAgICBlcnJjb2RlID0gMDsKKyAgICAgICAgX3RyYXAu dmVjdG9yID0gaHZtX2NvbWJpbmVfaHdfZXhjZXB0aW9ucygKKyAgICAgICAgICAgIGV2ZW50 LmZpZWxkcy52ZWN0b3IsIF90cmFwLnZlY3Rvcik7CisgICAgICAgIGlmICggX3RyYXAudmVj dG9yID09IFRSQVBfZG91YmxlX2ZhdWx0ICkKKyAgICAgICAgICAgIF90cmFwLmVycm9yX2Nv ZGUgPSAwOwogICAgIH0KIAogICAgIGV2ZW50LmJ5dGVzID0gMDsKICAgICBldmVudC5maWVs ZHMudiA9IDE7CiAgICAgZXZlbnQuZmllbGRzLnR5cGUgPSBYODZfRVZFTlRUWVBFX0hXX0VY Q0VQVElPTjsKLSAgICBldmVudC5maWVsZHMudmVjdG9yID0gdHJhcG5yOwotICAgIGV2ZW50 LmZpZWxkcy5ldiA9IChlcnJjb2RlICE9IEhWTV9ERUxJVkVSX05PX0VSUk9SX0NPREUpOwot ICAgIGV2ZW50LmZpZWxkcy5lcnJvcmNvZGUgPSBlcnJjb2RlOworICAgIGV2ZW50LmZpZWxk cy52ZWN0b3IgPSBfdHJhcC52ZWN0b3I7CisgICAgZXZlbnQuZmllbGRzLmV2ID0gKF90cmFw LmVycm9yX2NvZGUgIT0gSFZNX0RFTElWRVJfTk9fRVJST1JfQ09ERSk7CisgICAgZXZlbnQu ZmllbGRzLmVycm9yY29kZSA9IF90cmFwLmVycm9yX2NvZGU7CiAKICAgICB2bWNiLT5ldmVu dGluaiA9IGV2ZW50OwogCi0gICAgaWYgKCB0cmFwbnIgPT0gVFJBUF9wYWdlX2ZhdWx0ICkK KyAgICBpZiAoIF90cmFwLnZlY3RvciA9PSBUUkFQX3BhZ2VfZmF1bHQgKQogICAgIHsKLSAg ICAgICAgY3Vyci0+YXJjaC5odm1fdmNwdS5ndWVzdF9jclsyXSA9IGNyMjsKLSAgICAgICAg dm1jYl9zZXRfY3IyKHZtY2IsIGNyMik7Ci0gICAgICAgIEhWTVRSQUNFX0xPTkdfMkQoUEZf SU5KRUNULCBlcnJjb2RlLCBUUkNfUEFSX0xPTkcoY3IyKSk7CisgICAgICAgIGN1cnItPmFy Y2guaHZtX3ZjcHUuZ3Vlc3RfY3JbMl0gPSBfdHJhcC5jcjI7CisgICAgICAgIHZtY2Jfc2V0 X2NyMih2bWNiLCBfdHJhcC5jcjIpOworICAgICAgICBIVk1UUkFDRV9MT05HXzJEKFBGX0lO SkVDVCwgX3RyYXAuZXJyb3JfY29kZSwgVFJDX1BBUl9MT05HKF90cmFwLmNyMikpOwogICAg IH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBIVk1UUkFDRV8yRChJTkpfRVhDLCB0cmFw bnIsIGVycmNvZGUpOworICAgICAgICBIVk1UUkFDRV8yRChJTkpfRVhDLCBfdHJhcC52ZWN0 b3IsIF90cmFwLmVycm9yX2NvZGUpOwogICAgIH0KIH0KIApAQCAtMTM2MSw3ICsxMzY1LDcg QEAgc3RhdGljIHZvaWQgc3ZtX2ZwdV9kaXJ0eV9pbnRlcmNlcHQodm9pZAogICAgIHsKICAg ICAgICAvKiBDaGVjayBpZiBsMSBndWVzdCBtdXN0IG1ha2UgRlBVIHJlYWR5IGZvciB0aGUg bDIgZ3Vlc3QgKi8KICAgICAgICBpZiAoIHYtPmFyY2guaHZtX3ZjcHUuZ3Vlc3RfY3JbMF0g JiBYODZfQ1IwX1RTICkKLSAgICAgICAgICAgaHZtX2luamVjdF9leGNlcHRpb24oVFJBUF9u b19kZXZpY2UsIEhWTV9ERUxJVkVSX05PX0VSUk9SX0NPREUsIDApOworICAgICAgICAgICBo dm1faW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQX25vX2RldmljZSwgSFZNX0RFTElWRVJfTk9f RVJST1JfQ09ERSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICB2bWNiX3NldF9jcjAobjF2 bWNiLCB2bWNiX2dldF9jcjAobjF2bWNiKSAmIH5YODZfQ1IwX1RTKTsKICAgICAgICByZXR1 cm47CkBAIC0xNTc5LDcgKzE1ODMsNyBAQCBzdGF0aWMgaW50IHN2bV9tc3JfcmVhZF9pbnRl cmNlcHQodW5zaWduCiAgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKIAogIGdwZjoKLSAgICBo dm1faW5qZWN0X2V4Y2VwdGlvbihUUkFQX2dwX2ZhdWx0LCAwLCAwKTsKKyAgICBodm1faW5q ZWN0X2h3X2V4Y2VwdGlvbihUUkFQX2dwX2ZhdWx0LCAwKTsKICAgICByZXR1cm4gWDg2RU1V TF9FWENFUFRJT047CiB9CiAKQEAgLTE3MDgsNyArMTcxMiw3IEBAIHN0YXRpYyBpbnQgc3Zt X21zcl93cml0ZV9pbnRlcmNlcHQodW5zaWcKICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwog CiAgZ3BmOgotICAgIGh2bV9pbmplY3RfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDAsIDAp OworICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDApOwogICAg IHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKIH0KIApAQCAtMTc4NCwxMyArMTc4OCwxMyBA QCBzdm1fdm1leGl0X2RvX3ZtcnVuKHN0cnVjdCBjcHVfdXNlcl9yZWdzCiB7CiAgICAgaWYg KCFuZXN0ZWRodm1fZW5hYmxlZCh2LT5kb21haW4pKSB7CiAgICAgICAgIGdkcHJpbnRrKFhF TkxPR19FUlIsICJWTVJVTjogbmVzdGVkaHZtIGRpc2FibGVkLCBpbmplY3RpbmcgI1VEXG4i KTsKLSAgICAgICAgaHZtX2luamVjdF9leGNlcHRpb24oVFJBUF9pbnZhbGlkX29wLCBIVk1f REVMSVZFUl9OT19FUlJPUl9DT0RFLCAwKTsKKyAgICAgICAgaHZtX2luamVjdF9od19leGNl cHRpb24oVFJBUF9pbnZhbGlkX29wLCBIVk1fREVMSVZFUl9OT19FUlJPUl9DT0RFKTsKICAg ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghbmVzdGVkc3ZtX3ZtY2JfbWFwKHYs IHZtY2JhZGRyKSkgewogICAgICAgICBnZHByaW50ayhYRU5MT0dfRVJSLCAiVk1SVU46IG1h cHBpbmcgdm1jYiBmYWlsZWQsIGluamVjdGluZyAjVURcbiIpOwotICAgICAgICBodm1faW5q ZWN0X2V4Y2VwdGlvbihUUkFQX2ludmFsaWRfb3AsIEhWTV9ERUxJVkVSX05PX0VSUk9SX0NP REUsIDApOworICAgICAgICBodm1faW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQX2ludmFsaWRf b3AsIEhWTV9ERUxJVkVSX05PX0VSUk9SX0NPREUpOwogICAgICAgICByZXR1cm47CiAgICAg fQogCkBAIC0xODMwLDcgKzE4MzQsNyBAQCBzdm1fdm1leGl0X2RvX3ZtbG9hZChzdHJ1Y3Qg dm1jYl9zdHJ1Y3QgCiAgICAgcmV0dXJuOwogCiAgaW5qZWN0OgotICAgIGh2bV9pbmplY3Rf ZXhjZXB0aW9uKHJldCwgSFZNX0RFTElWRVJfTk9fRVJST1JfQ09ERSwgMCk7CisgICAgaHZt X2luamVjdF9od19leGNlcHRpb24ocmV0LCBIVk1fREVMSVZFUl9OT19FUlJPUl9DT0RFKTsK ICAgICByZXR1cm47CiB9CiAKQEAgLTE4NjQsNyArMTg2OCw3IEBAIHN2bV92bWV4aXRfZG9f dm1zYXZlKHN0cnVjdCB2bWNiX3N0cnVjdCAKICAgICByZXR1cm47CiAKICBpbmplY3Q6Ci0g ICAgaHZtX2luamVjdF9leGNlcHRpb24ocmV0LCBIVk1fREVMSVZFUl9OT19FUlJPUl9DT0RF LCAwKTsKKyAgICBodm1faW5qZWN0X2h3X2V4Y2VwdGlvbihyZXQsIEhWTV9ERUxJVkVSX05P X0VSUk9SX0NPREUpOwogICAgIHJldHVybjsKIH0KIApAQCAtMTg4MCwxMSArMTg4NCwxMSBA QCBzdGF0aWMgdm9pZCBzdm1fdm1leGl0X3VkX2ludGVyY2VwdChzdHJ1CiAgICAgc3dpdGNo ICggcmMgKQogICAgIHsKICAgICBjYXNlIFg4NkVNVUxfVU5IQU5ETEVBQkxFOgotICAgICAg ICBodm1faW5qZWN0X2V4Y2VwdGlvbihUUkFQX2ludmFsaWRfb3AsIEhWTV9ERUxJVkVSX05P X0VSUk9SX0NPREUsIDApOworICAgICAgICBodm1faW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQ X2ludmFsaWRfb3AsIEhWTV9ERUxJVkVSX05PX0VSUk9SX0NPREUpOwogICAgICAgICBicmVh azsKICAgICBjYXNlIFg4NkVNVUxfRVhDRVBUSU9OOgogICAgICAgICBpZiAoIGN0eHQuZXhu X3BlbmRpbmcgKQotICAgICAgICAgICAgaHZtX2luamVjdF9leGNlcHRpb24oY3R4dC5leG5f dmVjdG9yLCBjdHh0LmV4bl9lcnJvcl9jb2RlLCAwKTsKKyAgICAgICAgICAgIGh2bV9pbmpl Y3RfaHdfZXhjZXB0aW9uKGN0eHQuZXhuX3ZlY3RvciwgY3R4dC5leG5fZXJyb3JfY29kZSk7 CiAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGh2 bV9lbXVsYXRlX3dyaXRlYmFjaygmY3R4dCk7CkBAIC0xOTk4LDcgKzIwMDIsNyBAQCBzdGF0 aWMgc3RydWN0IGh2bV9mdW5jdGlvbl90YWJsZSBfX3JlYWRfCiAgICAgLnNldF9ndWVzdF9w YXQgICAgICAgID0gc3ZtX3NldF9ndWVzdF9wYXQsCiAgICAgLmdldF9ndWVzdF9wYXQgICAg ICAgID0gc3ZtX2dldF9ndWVzdF9wYXQsCiAgICAgLnNldF90c2Nfb2Zmc2V0ICAgICAgID0g c3ZtX3NldF90c2Nfb2Zmc2V0LAotICAgIC5pbmplY3RfZXhjZXB0aW9uICAgICA9IHN2bV9p bmplY3RfZXhjZXB0aW9uLAorICAgIC5pbmplY3RfdHJhcCAgICAgICAgICA9IHN2bV9pbmpl Y3RfdHJhcCwKICAgICAuaW5pdF9oeXBlcmNhbGxfcGFnZSAgPSBzdm1faW5pdF9oeXBlcmNh bGxfcGFnZSwKICAgICAuZXZlbnRfcGVuZGluZyAgICAgICAgPSBzdm1fZXZlbnRfcGVuZGlu ZywKICAgICAuZG9fcG11X2ludGVycnVwdCAgICAgPSBzdm1fZG9fcG11X2ludGVycnVwdCwK QEAgLTIyMTIsNyArMjIxNiw3IEBAIHZvaWQgc3ZtX3ZtZXhpdF9oYW5kbGVyKHN0cnVjdCBj cHVfdXNlcl8KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaHZt X2luamVjdF9leGNlcHRpb24oVFJBUF9wYWdlX2ZhdWx0LCByZWdzLT5lcnJvcl9jb2RlLCB2 YSk7CisgICAgICAgIGh2bV9pbmplY3RfcGFnZV9mYXVsdChyZWdzLT5lcnJvcl9jb2RlLCB2 YSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMjI4NSw3ICsyMjg5LDcgQEAgdm9p ZCBzdm1fdm1leGl0X2hhbmRsZXIoc3RydWN0IGNwdV91c2VyXwogICAgICAgICAgICAgICAg IF9fdXBkYXRlX2d1ZXN0X2VpcChyZWdzLCB2bWNiLT5leGl0aW5mbzIgLSB2bWNiLT5yaXAp OwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKCAhaGFuZGxlX21taW8oKSApCi0gICAg ICAgICAgICBodm1faW5qZWN0X2V4Y2VwdGlvbihUUkFQX2dwX2ZhdWx0LCAwLCAwKTsKKyAg ICAgICAgICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDApOwog ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVk1FWElUX0NSMF9SRUFEIC4uLiBWTUVYSVRf Q1IxNV9SRUFEOgpAQCAtMjI5Myw3ICsyMjk3LDcgQEAgdm9pZCBzdm1fdm1leGl0X2hhbmRs ZXIoc3RydWN0IGNwdV91c2VyXwogICAgICAgICBpZiAoIGNwdV9oYXNfc3ZtX2RlY29kZSAm JiAodm1jYi0+ZXhpdGluZm8xICYgKDFVTEwgPDwgNjMpKSApCiAgICAgICAgICAgICBzdm1f dm1leGl0X2RvX2NyX2FjY2Vzcyh2bWNiLCByZWdzKTsKICAgICAgICAgZWxzZSBpZiAoICFo YW5kbGVfbW1pbygpICkgCi0gICAgICAgICAgICBodm1faW5qZWN0X2V4Y2VwdGlvbihUUkFQ X2dwX2ZhdWx0LCAwLCAwKTsKKyAgICAgICAgICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9u KFRSQVBfZ3BfZmF1bHQsIDApOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVk1FWElU X0lOVkxQRzoKQEAgLTIzMDMsNyArMjMwNyw3IEBAIHZvaWQgc3ZtX3ZtZXhpdF9oYW5kbGVy KHN0cnVjdCBjcHVfdXNlcl8KICAgICAgICAgICAgIF9fdXBkYXRlX2d1ZXN0X2VpcChyZWdz LCB2bWNiLT5uZXh0cmlwIC0gdm1jYi0+cmlwKTsKICAgICAgICAgfQogICAgICAgICBlbHNl IGlmICggIWhhbmRsZV9tbWlvKCkgKQotICAgICAgICAgICAgaHZtX2luamVjdF9leGNlcHRp b24oVFJBUF9ncF9mYXVsdCwgMCwgMCk7CisgICAgICAgICAgICBodm1faW5qZWN0X2h3X2V4 Y2VwdGlvbihUUkFQX2dwX2ZhdWx0LCAwKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNl IFZNRVhJVF9JTlZMUEdBOgpAQCAtMjM0OSw3ICsyMzUzLDcgQEAgdm9pZCBzdm1fdm1leGl0 X2hhbmRsZXIoc3RydWN0IGNwdV91c2VyXwogCiAgICAgY2FzZSBWTUVYSVRfTU9OSVRPUjoK ICAgICBjYXNlIFZNRVhJVF9NV0FJVDoKLSAgICAgICAgaHZtX2luamVjdF9leGNlcHRpb24o VFJBUF9pbnZhbGlkX29wLCBIVk1fREVMSVZFUl9OT19FUlJPUl9DT0RFLCAwKTsKKyAgICAg ICAgaHZtX2luamVjdF9od19leGNlcHRpb24oVFJBUF9pbnZhbGlkX29wLCBIVk1fREVMSVZF Ul9OT19FUlJPUl9DT0RFKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFZNRVhJVF9W TVJVTjoKQEAgLTIzNjgsNyArMjM3Miw3IEBAIHZvaWQgc3ZtX3ZtZXhpdF9oYW5kbGVyKHN0 cnVjdCBjcHVfdXNlcl8KICAgICAgICAgc3ZtX3ZtZXhpdF9kb19jbGdpKHJlZ3MsIHYpOwog ICAgICAgICBicmVhazsKICAgICBjYXNlIFZNRVhJVF9TS0lOSVQ6Ci0gICAgICAgIGh2bV9p bmplY3RfZXhjZXB0aW9uKFRSQVBfaW52YWxpZF9vcCwgSFZNX0RFTElWRVJfTk9fRVJST1Jf Q09ERSwgMCk7CisgICAgICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfaW52YWxp ZF9vcCwgSFZNX0RFTElWRVJfTk9fRVJST1JfQ09ERSk7CiAgICAgICAgIGJyZWFrOwogCiAg ICAgY2FzZSBWTUVYSVRfWFNFVEJWOgpkaWZmIC1yIDUzZTA1NzFmOTRlNCB4ZW4vYXJjaC94 ODYvaHZtL3ZteC9pbnRyLmMKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92bXgvaW50ci5jCUZy aSBNYXkgMjUgMDg6MjE6MjUgMjAxMiArMDEwMAorKysgYi94ZW4vYXJjaC94ODYvaHZtL3Zt eC9pbnRyLmMJRnJpIE1heSAyNSAwOTo0NTowMCAyMDEyICswMTAwCkBAIC0yNTEsNyArMjUx LDcgQEAgdm9pZCB2bXhfaW50cl9hc3Npc3Qodm9pZCkKICAgICB9CiAgICAgZWxzZSBpZiAo IGludGFjay5zb3VyY2UgPT0gaHZtX2ludHNyY19tY2UgKQogICAgIHsKLSAgICAgICAgdm14 X2luamVjdF9od19leGNlcHRpb24oVFJBUF9tYWNoaW5lX2NoZWNrLCBIVk1fREVMSVZFUl9O T19FUlJPUl9DT0RFKTsKKyAgICAgICAgaHZtX2luamVjdF9od19leGNlcHRpb24oVFJBUF9t YWNoaW5lX2NoZWNrLCBIVk1fREVMSVZFUl9OT19FUlJPUl9DT0RFKTsKICAgICB9CiAgICAg ZWxzZQogICAgIHsKZGlmZiAtciA1M2UwNTcxZjk0ZTQgeGVuL2FyY2gveDg2L2h2bS92bXgv dm14LmMKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMJRnJpIE1heSAyNSAwODoy MToyNSAyMDEyICswMTAwCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCUZyaSBN YXkgMjUgMDk6NDU6MDAgMjAxMiArMDEwMApAQCAtMjY4LDcgKzI2OCw3IEBAIGxvbmdfbW9k ZV9kb19tc3Jfd3JpdGUodW5zaWduZWQgaW50IG1zciwKIAogIHVuY2Fub25pY2FsX2FkZHJl c3M6CiAgICAgSFZNX0RCR19MT0coREJHX0xFVkVMXzAsICJOb3QgY2FubyBhZGRyZXNzIG9m IG1zciB3cml0ZSAleCIsIG1zcik7Ci0gICAgdm14X2luamVjdF9od19leGNlcHRpb24oVFJB UF9ncF9mYXVsdCwgMCk7CisgICAgaHZtX2luamVjdF9od19leGNlcHRpb24oVFJBUF9ncF9m YXVsdCwgMCk7CiAgICAgcmV0dXJuIEhORExfZXhjZXB0aW9uX3JhaXNlZDsKIH0KIApAQCAt MTMxMCwxMCArMTMxMCw5IEBAIHZvaWQgbnZteF9lbnF1ZXVlX24yX2V4Y2VwdGlvbnMoc3Ry dWN0IHYKICAgICAgICAgICAgICAgICAgbnZteC0+aW50ci5pbnRyX2luZm8sIG52bXgtPmlu dHIuZXJyb3JfY29kZSk7CiB9CiAKLXN0YXRpYyBpbnQgbnZteF92bWV4aXRfZXhjZXB0aW9u cyhzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IHRyYXBuciwKLSAgICAgICAgICAgICAg ICAgICAgICBpbnQgZXJyY29kZSwgdW5zaWduZWQgbG9uZyBjcjIpCitzdGF0aWMgaW50IG52 bXhfdm1leGl0X3RyYXAoc3RydWN0IHZjcHUgKnYsIHN0cnVjdCBodm1fdHJhcCAqdHJhcCkK IHsKLSAgICBudm14X2VucXVldWVfbjJfZXhjZXB0aW9ucyh2LCB0cmFwbnIsIGVycmNvZGUp OworICAgIG52bXhfZW5xdWV1ZV9uMl9leGNlcHRpb25zKHYsIHRyYXAtPnZlY3RvciwgdHJh cC0+ZXJyb3JfY29kZSk7CiAgICAgcmV0dXJuIE5FU1RFREhWTV9WTUVYSVRfRE9ORTsKIH0K IApAQCAtMTM0NCw3OCArMTM0Myw2IEBAIHN0YXRpYyB2b2lkIF9fdm14X2luamVjdF9leGNl cHRpb24oaW50IHQKICAgICAgICAgY3Vyci0+YXJjaC5odm1fdm14LnZteF9lbXVsYXRlID0g MTsKIH0KIAotdm9pZCB2bXhfaW5qZWN0X2h3X2V4Y2VwdGlvbihpbnQgdHJhcCwgaW50IGVy cm9yX2NvZGUpCi17Ci0gICAgdW5zaWduZWQgbG9uZyBpbnRyX2luZm87Ci0gICAgc3RydWN0 IHZjcHUgKmN1cnIgPSBjdXJyZW50OwotCi0gICAgaW50IHR5cGUgPSBYODZfRVZFTlRUWVBF X0hXX0VYQ0VQVElPTjsKLQotICAgIGlmICggbmVzdGVkaHZtX3ZjcHVfaW5fZ3Vlc3Rtb2Rl KGN1cnIpICkKLSAgICAgICAgaW50cl9pbmZvID0gdmNwdV8yX252bXgoY3VycikuaW50ci5p bnRyX2luZm87Ci0gICAgZWxzZQotICAgICAgICBpbnRyX2luZm8gPSBfX3ZtcmVhZChWTV9F TlRSWV9JTlRSX0lORk8pOwotCi0gICAgc3dpdGNoICggdHJhcCApCi0gICAgewotICAgIGNh c2UgVFJBUF9kZWJ1ZzoKLSAgICAgICAgdHlwZSA9IFg4Nl9FVkVOVFRZUEVfU1dfRVhDRVBU SU9OOwotICAgICAgICBpZiAoIGd1ZXN0X2NwdV91c2VyX3JlZ3MoKS0+ZWZsYWdzICYgWDg2 X0VGTEFHU19URiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIF9fcmVzdG9yZV9kZWJ1Z19y ZWdpc3RlcnMoY3Vycik7Ci0gICAgICAgICAgICB3cml0ZV9kZWJ1Z3JlZyg2LCByZWFkX2Rl YnVncmVnKDYpIHwgMHg0MDAwKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIGNwdV9oYXNf bW9uaXRvcl90cmFwX2ZsYWcgKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIC8qIGZh bGwgdGhyb3VnaCAqLwotCi0gICAgY2FzZSBUUkFQX2ludDM6Ci0gICAgICAgIGlmICggY3Vy ci0+ZG9tYWluLT5kZWJ1Z2dlcl9hdHRhY2hlZCApCi0gICAgICAgIHsKLSAgICAgICAgICAg IC8qIERlYnVnL0ludDM6IFRyYXAgdG8gZGVidWdnZXIuICovCi0gICAgICAgICAgICBkb21h aW5fcGF1c2VfZm9yX2RlYnVnZ2VyKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg IH0KLQotICAgICAgICB0eXBlID0gWDg2X0VWRU5UVFlQRV9TV19FWENFUFRJT047Ci0gICAg ICAgIF9fdm13cml0ZShWTV9FTlRSWV9JTlNUUlVDVElPTl9MRU4sIDEpOyAvKiBpbnQzICov Ci0gICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgaWYgKCB0cmFwID4g VFJBUF9sYXN0X3Jlc2VydmVkICkKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZSA9IFg4 Nl9FVkVOVFRZUEVfU1dfRVhDRVBUSU9OOwotICAgICAgICAgICAgX192bXdyaXRlKFZNX0VO VFJZX0lOU1RSVUNUSU9OX0xFTiwgMik7IC8qIGludCBpbW04ICovCi0gICAgICAgIH0KLSAg ICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgaWYgKCB1bmxpa2VseShpbnRyX2luZm8gJiBJ TlRSX0lORk9fVkFMSURfTUFTSykgJiYKLSAgICAgICAgICgoKGludHJfaW5mbyA+PiA4KSAm IDcpID09IFg4Nl9FVkVOVFRZUEVfSFdfRVhDRVBUSU9OKSApCi0gICAgewotICAgICAgICB0 cmFwID0gaHZtX2NvbWJpbmVfaHdfZXhjZXB0aW9ucygodWludDhfdClpbnRyX2luZm8sIHRy YXApOwotICAgICAgICBpZiAoIHRyYXAgPT0gVFJBUF9kb3VibGVfZmF1bHQgKQotICAgICAg ICAgICAgZXJyb3JfY29kZSA9IDA7Ci0gICAgfQotCi0gICAgaWYgKCBuZXN0ZWRodm1fdmNw dV9pbl9ndWVzdG1vZGUoY3VycikgJiYKLSAgICAgICAgIG52bXhfaW50ZXJjZXB0c19leGNl cHRpb24oY3VyciwgdHJhcCwgZXJyb3JfY29kZSkgKQotICAgIHsKLSAgICAgICAgbnZteF9l bnF1ZXVlX24yX2V4Y2VwdGlvbnMgKGN1cnIsIAotICAgICAgICAgICAgSU5UUl9JTkZPX1ZB TElEX01BU0sgfCAodHlwZTw8OCkgfCB0cmFwLAotICAgICAgICAgICAgZXJyb3JfY29kZSk7 IAotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgX192bXhfaW5q ZWN0X2V4Y2VwdGlvbih0cmFwLCB0eXBlLCBlcnJvcl9jb2RlKTsKLQotICAgIGlmICggdHJh cCA9PSBUUkFQX3BhZ2VfZmF1bHQgKQotICAgICAgICBIVk1UUkFDRV9MT05HXzJEKFBGX0lO SkVDVCwgZXJyb3JfY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBUUkNfUEFSX0xP TkcoY3VycmVudC0+YXJjaC5odm1fdmNwdS5ndWVzdF9jclsyXSkpOwotICAgIGVsc2UKLSAg ICAgICAgSFZNVFJBQ0VfMkQoSU5KX0VYQywgdHJhcCwgZXJyb3JfY29kZSk7Ci19Ci0KIHZv aWQgdm14X2luamVjdF9leHRpbnQoaW50IHRyYXApCiB7CiAgICAgc3RydWN0IHZjcHUgKnYg PSBjdXJyZW50OwpAQCAtMTQ1NCwxMyArMTM4MSw2NyBAQCB2b2lkIHZteF9pbmplY3Rfbm1p KHZvaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVk1fREVMSVZFUl9OT19FUlJP Ul9DT0RFKTsKIH0KIAotc3RhdGljIHZvaWQgdm14X2luamVjdF9leGNlcHRpb24oCi0gICAg dW5zaWduZWQgaW50IHRyYXBuciwgaW50IGVycmNvZGUsIHVuc2lnbmVkIGxvbmcgY3IyKQor c3RhdGljIHZvaWQgdm14X2luamVjdF90cmFwKHN0cnVjdCBodm1fdHJhcCAqdHJhcCkKIHsK LSAgICBpZiAoIHRyYXBuciA9PSBUUkFQX3BhZ2VfZmF1bHQgKQotICAgICAgICBjdXJyZW50 LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2NyWzJdID0gY3IyOwotCi0gICAgdm14X2luamVjdF9o d19leGNlcHRpb24odHJhcG5yLCBlcnJjb2RlKTsKKyAgICB1bnNpZ25lZCBsb25nIGludHJf aW5mbzsKKyAgICBzdHJ1Y3QgdmNwdSAqY3VyciA9IGN1cnJlbnQ7CisgICAgc3RydWN0IGh2 bV90cmFwIF90cmFwID0gKnRyYXA7CisKKyAgICBpZiAoIChfdHJhcC52ZWN0b3IgPT0gVFJB UF9wYWdlX2ZhdWx0KSAmJgorICAgICAgICAgKF90cmFwLnR5cGUgPT0gWDg2X0VWRU5UVFlQ RV9IV19FWENFUFRJT04pICkKKyAgICAgICAgY3VycmVudC0+YXJjaC5odm1fdmNwdS5ndWVz dF9jclsyXSA9IF90cmFwLmNyMjsKKworICAgIGlmICggbmVzdGVkaHZtX3ZjcHVfaW5fZ3Vl c3Rtb2RlKGN1cnIpICkKKyAgICAgICAgaW50cl9pbmZvID0gdmNwdV8yX252bXgoY3Vyciku aW50ci5pbnRyX2luZm87CisgICAgZWxzZQorICAgICAgICBpbnRyX2luZm8gPSBfX3ZtcmVh ZChWTV9FTlRSWV9JTlRSX0lORk8pOworCisgICAgc3dpdGNoICggX3RyYXAudmVjdG9yICkK KyAgICB7CisgICAgY2FzZSBUUkFQX2RlYnVnOgorICAgICAgICBpZiAoIGd1ZXN0X2NwdV91 c2VyX3JlZ3MoKS0+ZWZsYWdzICYgWDg2X0VGTEFHU19URiApCisgICAgICAgIHsKKyAgICAg ICAgICAgIF9fcmVzdG9yZV9kZWJ1Z19yZWdpc3RlcnMoY3Vycik7CisgICAgICAgICAgICB3 cml0ZV9kZWJ1Z3JlZyg2LCByZWFkX2RlYnVncmVnKDYpIHwgMHg0MDAwKTsKKyAgICAgICAg fQorICAgICAgICBpZiAoIGNwdV9oYXNfbW9uaXRvcl90cmFwX2ZsYWcgKQorICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLworICAgIGNhc2UgVFJBUF9p bnQzOgorICAgICAgICBpZiAoIGN1cnItPmRvbWFpbi0+ZGVidWdnZXJfYXR0YWNoZWQgKQor ICAgICAgICB7CisgICAgICAgICAgICAvKiBEZWJ1Zy9JbnQzOiBUcmFwIHRvIGRlYnVnZ2Vy LiAqLworICAgICAgICAgICAgZG9tYWluX3BhdXNlX2Zvcl9kZWJ1Z2dlcigpOworICAgICAg ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCB1bmxpa2VseShp bnRyX2luZm8gJiBJTlRSX0lORk9fVkFMSURfTUFTSykgJiYKKyAgICAgICAgICgoKGludHJf aW5mbyA+PiA4KSAmIDcpID09IFg4Nl9FVkVOVFRZUEVfSFdfRVhDRVBUSU9OKSApCisgICAg eworICAgICAgICBfdHJhcC52ZWN0b3IgPSBodm1fY29tYmluZV9od19leGNlcHRpb25zKAor ICAgICAgICAgICAgKHVpbnQ4X3QpaW50cl9pbmZvLCBfdHJhcC52ZWN0b3IpOworICAgICAg ICBpZiAoIF90cmFwLnZlY3RvciA9PSBUUkFQX2RvdWJsZV9mYXVsdCApCisgICAgICAgICAg ICBfdHJhcC5lcnJvcl9jb2RlID0gMDsKKyAgICB9CisKKyAgICBpZiAoIG5lc3RlZGh2bV92 Y3B1X2luX2d1ZXN0bW9kZShjdXJyKSAmJgorICAgICAgICAgbnZteF9pbnRlcmNlcHRzX2V4 Y2VwdGlvbihjdXJyLCBfdHJhcC52ZWN0b3IsIF90cmFwLmVycm9yX2NvZGUpICkKKyAgICB7 CisgICAgICAgIG52bXhfZW5xdWV1ZV9uMl9leGNlcHRpb25zIChjdXJyLCAKKyAgICAgICAg ICAgIElOVFJfSU5GT19WQUxJRF9NQVNLIHwgKF90cmFwLnR5cGU8PDgpIHwgX3RyYXAudmVj dG9yLAorICAgICAgICAgICAgX3RyYXAuZXJyb3JfY29kZSk7IAorICAgICAgICByZXR1cm47 CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgX192bXhfaW5qZWN0X2V4Y2VwdGlvbihfdHJh cC52ZWN0b3IsIF90cmFwLnR5cGUsIF90cmFwLmVycm9yX2NvZGUpOworCisgICAgaWYgKCAo X3RyYXAudmVjdG9yID09IFRSQVBfcGFnZV9mYXVsdCkgJiYKKyAgICAgICAgIChfdHJhcC50 eXBlID09IFg4Nl9FVkVOVFRZUEVfSFdfRVhDRVBUSU9OKSApCisgICAgICAgIEhWTVRSQUNF X0xPTkdfMkQoUEZfSU5KRUNULCBfdHJhcC5lcnJvcl9jb2RlLAorICAgICAgICAgICAgICAg ICAgICAgICAgIFRSQ19QQVJfTE9ORyhjdXJyZW50LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2Ny WzJdKSk7CisgICAgZWxzZQorICAgICAgICBIVk1UUkFDRV8yRChJTkpfRVhDLCBfdHJhcC52 ZWN0b3IsIF90cmFwLmVycm9yX2NvZGUpOwogfQogCiBzdGF0aWMgaW50IHZteF9ldmVudF9w ZW5kaW5nKHN0cnVjdCB2Y3B1ICp2KQpAQCAtMTUzMiw3ICsxNTEzLDcgQEAgc3RhdGljIHN0 cnVjdCBodm1fZnVuY3Rpb25fdGFibGUgX19yZWFkXwogICAgIC5zZXRfZ3Vlc3RfcGF0ICAg ICAgICA9IHZteF9zZXRfZ3Vlc3RfcGF0LAogICAgIC5nZXRfZ3Vlc3RfcGF0ICAgICAgICA9 IHZteF9nZXRfZ3Vlc3RfcGF0LAogICAgIC5zZXRfdHNjX29mZnNldCAgICAgICA9IHZteF9z ZXRfdHNjX29mZnNldCwKLSAgICAuaW5qZWN0X2V4Y2VwdGlvbiAgICAgPSB2bXhfaW5qZWN0 X2V4Y2VwdGlvbiwKKyAgICAuaW5qZWN0X3RyYXAgICAgICAgICAgPSB2bXhfaW5qZWN0X3Ry YXAsCiAgICAgLmluaXRfaHlwZXJjYWxsX3BhZ2UgID0gdm14X2luaXRfaHlwZXJjYWxsX3Bh Z2UsCiAgICAgLmV2ZW50X3BlbmRpbmcgICAgICAgID0gdm14X2V2ZW50X3BlbmRpbmcsCiAg ICAgLmRvX3BtdV9pbnRlcnJ1cHQgICAgID0gdm14X2RvX3BtdV9pbnRlcnJ1cHQsCkBAIC0x NTU0LDcgKzE1MzUsNyBAQCBzdGF0aWMgc3RydWN0IGh2bV9mdW5jdGlvbl90YWJsZSBfX3Jl YWRfCiAgICAgLm5odm1fdmNwdV9ob3N0Y3IzICAgID0gbnZteF92Y3B1X2hvc3RjcjMsCiAg ICAgLm5odm1fdmNwdV9hc2lkICAgICAgID0gbnZteF92Y3B1X2FzaWQsCiAgICAgLm5odm1f dm1jeF9ndWVzdF9pbnRlcmNlcHRzX3RyYXAgPSBudm14X2ludGVyY2VwdHNfZXhjZXB0aW9u LAotICAgIC5uaHZtX3ZjcHVfdm1leGl0X3RyYXAgPSBudm14X3ZtZXhpdF9leGNlcHRpb25z LAorICAgIC5uaHZtX3ZjcHVfdm1leGl0X3RyYXAgPSBudm14X3ZtZXhpdF90cmFwLAogICAg IC5uaHZtX2ludHJfYmxvY2tlZCAgICA9IG52bXhfaW50cl9ibG9ja2VkCiB9OwogCkBAIC0x NjE4LDcgKzE1OTksNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfZ3Vlc3RfZWlwKHZvaWQpCiAg ICAgfQogCiAgICAgaWYgKCByZWdzLT5lZmxhZ3MgJiBYODZfRUZMQUdTX1RGICkKLSAgICAg ICAgdm14X2luamVjdF9od19leGNlcHRpb24oVFJBUF9kZWJ1ZywgSFZNX0RFTElWRVJfTk9f RVJST1JfQ09ERSk7CisgICAgICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfZGVi dWcsIEhWTV9ERUxJVkVSX05PX0VSUk9SX0NPREUpOwogfQogCiBzdGF0aWMgdm9pZCB2bXhf ZnB1X2RpcnR5X2ludGVyY2VwdCh2b2lkKQpAQCAtMTkyMiw3ICsxOTAzLDcgQEAgZG9uZToK ICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwogCiBncF9mYXVsdDoKLSAgICB2bXhfaW5qZWN0 X2h3X2V4Y2VwdGlvbihUUkFQX2dwX2ZhdWx0LCAwKTsKKyAgICBodm1faW5qZWN0X2h3X2V4 Y2VwdGlvbihUUkFQX2dwX2ZhdWx0LCAwKTsKICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJ T047CiB9CiAKQEAgLTIwMzAsNyArMjAxMSw3IEBAIHN0YXRpYyBpbnQgdm14X21zcl93cml0 ZV9pbnRlcmNlcHQodW5zaWcKIAogICAgICAgICBpZiAoIChyYyA8IDApIHx8CiAgICAgICAg ICAgICAgKHZteF9hZGRfaG9zdF9sb2FkX21zcihtc3IpIDwgMCkgKQotICAgICAgICAgICAg dm14X2luamVjdF9od19leGNlcHRpb24oVFJBUF9tYWNoaW5lX2NoZWNrLCAwKTsKKyAgICAg ICAgICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfbWFjaGluZV9jaGVjaywgMCk7 CiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgICAgX192bXdyaXRlKEdVRVNU X0lBMzJfREVCVUdDVEwsIG1zcl9jb250ZW50KTsKQEAgLTIwNzMsNyArMjA1NCw3IEBAIHN0 YXRpYyBpbnQgdm14X21zcl93cml0ZV9pbnRlcmNlcHQodW5zaWcKICAgICByZXR1cm4gWDg2 RU1VTF9PS0FZOwogCiBncF9mYXVsdDoKLSAgICB2bXhfaW5qZWN0X2h3X2V4Y2VwdGlvbihU UkFQX2dwX2ZhdWx0LCAwKTsKKyAgICBodm1faW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQX2dw X2ZhdWx0LCAwKTsKICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047CiB9CiAKQEAgLTIy MjIsMTEgKzIyMDMsMTEgQEAgc3RhdGljIHZvaWQgdm14X3ZtZXhpdF91ZF9pbnRlcmNlcHQo c3RydQogICAgIHN3aXRjaCAoIHJjICkKICAgICB7CiAgICAgY2FzZSBYODZFTVVMX1VOSEFO RExFQUJMRToKLSAgICAgICAgdm14X2luamVjdF9od19leGNlcHRpb24oVFJBUF9pbnZhbGlk X29wLCBIVk1fREVMSVZFUl9OT19FUlJPUl9DT0RFKTsKKyAgICAgICAgaHZtX2luamVjdF9o d19leGNlcHRpb24oVFJBUF9pbnZhbGlkX29wLCBIVk1fREVMSVZFUl9OT19FUlJPUl9DT0RF KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBYODZFTVVMX0VYQ0VQVElPTjoKICAgICAg ICAgaWYgKCBjdHh0LmV4bl9wZW5kaW5nICkKLSAgICAgICAgICAgIGh2bV9pbmplY3RfZXhj ZXB0aW9uKGN0eHQuZXhuX3ZlY3RvciwgY3R4dC5leG5fZXJyb3JfY29kZSwgMCk7CisgICAg ICAgICAgICBodm1faW5qZWN0X2h3X2V4Y2VwdGlvbihjdHh0LmV4bl92ZWN0b3IsIGN0eHQu ZXhuX2Vycm9yX2NvZGUpOwogICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KICAgICBkZWZh dWx0OgogICAgICAgICBodm1fZW11bGF0ZV93cml0ZWJhY2soJmN0eHQpOwpAQCAtMjQ0MCw3 ICsyNDIxLDEyIEBAIHZvaWQgdm14X3ZtZXhpdF9oYW5kbGVyKHN0cnVjdCBjcHVfdXNlcl8K ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoIGhhbmRsZWQgPCAwICkg CiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB2bXhfaW5qZWN0X2V4 Y2VwdGlvbihUUkFQX2ludDMsIEhWTV9ERUxJVkVSX05PX0VSUk9SX0NPREUsIDApOworICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgaHZtX3RyYXAgdHJhcCA9IHsKKyAgICAgICAgICAg ICAgICAgICAgICAgIC52ZWN0b3IgPSBUUkFQX2ludDMsCisgICAgICAgICAgICAgICAgICAg ICAgICAudHlwZSA9IFg4Nl9FVkVOVFRZUEVfU1dfRVhDRVBUSU9OLAorICAgICAgICAgICAg ICAgICAgICAgICAgLmVycm9yX2NvZGUgPSBIVk1fREVMSVZFUl9OT19FUlJPUl9DT0RFCisg ICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIGh2bV9pbmplY3Rf dHJhcCgmdHJhcCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIGlmICggaGFuZGxlZCApCkBAIC0yNDc2LDgg KzI0NjIsNyBAQCB2b2lkIHZteF92bWV4aXRfaGFuZGxlcihzdHJ1Y3QgY3B1X3VzZXJfCiAg ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHYt PmFyY2guaHZtX3ZjcHUuZ3Vlc3RfY3JbMl0gPSBleGl0X3F1YWxpZmljYXRpb247Ci0gICAg ICAgICAgICB2bXhfaW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQX3BhZ2VfZmF1bHQsIHJlZ3Mt PmVycm9yX2NvZGUpOworICAgICAgICAgICAgaHZtX2luamVjdF9wYWdlX2ZhdWx0KHJlZ3Mt PmVycm9yX2NvZGUsIGV4aXRfcXVhbGlmaWNhdGlvbik7CiAgICAgICAgICAgICBicmVhazsK ICAgICAgICAgY2FzZSBUUkFQX25taToKICAgICAgICAgICAgIGlmICggKGludHJfaW5mbyAm IElOVFJfSU5GT19JTlRSX1RZUEVfTUFTSykgIT0KQEAgLTI2NTgsNyArMjY0Myw3IEBAIHZv aWQgdm14X3ZtZXhpdF9oYW5kbGVyKHN0cnVjdCBjcHVfdXNlcl8KICAgICAgICAgICogYXMg ZmFyIGFzIHZtZXhpdC4KICAgICAgICAgICovCiAgICAgICAgIFdBUk5fT04oZXhpdF9yZWFz b24gPT0gRVhJVF9SRUFTT05fR0VUU0VDKTsKLSAgICAgICAgdm14X2luamVjdF9od19leGNl cHRpb24oVFJBUF9pbnZhbGlkX29wLCBIVk1fREVMSVZFUl9OT19FUlJPUl9DT0RFKTsKKyAg ICAgICAgaHZtX2luamVjdF9od19leGNlcHRpb24oVFJBUF9pbnZhbGlkX29wLCBIVk1fREVM SVZFUl9OT19FUlJPUl9DT0RFKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEVYSVRf UkVBU09OX1RQUl9CRUxPV19USFJFU0hPTEQ6CkBAIC0yNjY2LDcgKzI2NTEsNyBAQCB2b2lk IHZteF92bWV4aXRfaGFuZGxlcihzdHJ1Y3QgY3B1X3VzZXJfCiAKICAgICBjYXNlIEVYSVRf UkVBU09OX0FQSUNfQUNDRVNTOgogICAgICAgICBpZiAoICF2bXhfaGFuZGxlX2VvaV93cml0 ZSgpICYmICFoYW5kbGVfbW1pbygpICkKLSAgICAgICAgICAgIHZteF9pbmplY3RfaHdfZXhj ZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDApOworICAgICAgICAgICAgaHZtX2luamVjdF9od19l eGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2Fz ZSBFWElUX1JFQVNPTl9JT19JTlNUUlVDVElPTjoKQEAgLTI2NzUsNyArMjY2MCw3IEBAIHZv aWQgdm14X3ZtZXhpdF9oYW5kbGVyKHN0cnVjdCBjcHVfdXNlcl8KICAgICAgICAgewogICAg ICAgICAgICAgLyogSU5TLCBPVVRTICovCiAgICAgICAgICAgICBpZiAoICFoYW5kbGVfbW1p bygpICkKLSAgICAgICAgICAgICAgICB2bXhfaW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQX2dw X2ZhdWx0LCAwKTsKKyAgICAgICAgICAgICAgICBodm1faW5qZWN0X2h3X2V4Y2VwdGlvbihU UkFQX2dwX2ZhdWx0LCAwKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsK ZGlmZiAtciA1M2UwNTcxZjk0ZTQgeGVuL2FyY2gveDg2L2h2bS92bXgvdnBtdV9jb3JlMi5j Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZwbXVfY29yZTIuYwlGcmkgTWF5IDI1IDA4 OjIxOjI1IDIwMTIgKzAxMDAKKysrIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdnBtdV9jb3Jl Mi5jCUZyaSBNYXkgMjUgMDk6NDU6MDAgMjAxMiArMDEwMApAQCAtNDIxLDcgKzQyMSw3IEBA IHN0YXRpYyBpbnQgY29yZTJfdnBtdV9kb193cm1zcih1bnNpZ25lZCAKICAgICAgICAgICAg ICAgICBpZiAoIHZwbXVfaXNfc2V0KHZwbXUsIFZQTVVfQ1BVX0hBU19CVFMpICkKICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgZ2RwcmludGsoWEVO TE9HX1dBUk5JTkcsICJEZWJ1ZyBTdG9yZSBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgY3B1 XG4iKTsKLSAgICAgICAgICAgICAgICB2bXhfaW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQX2dw X2ZhdWx0LCAwKTsKKyAgICAgICAgICAgICAgICBodm1faW5qZWN0X2h3X2V4Y2VwdGlvbihU UkFQX2dwX2ZhdWx0LCAwKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAg ICAgIH0KICAgICAgICAgfQpAQCAtNDM3LDcgKzQzNyw3IEBAIHN0YXRpYyBpbnQgY29yZTJf dnBtdV9kb193cm1zcih1bnNpZ25lZCAKICAgICBjYXNlIE1TUl9DT1JFX1BFUkZfR0xPQkFM X1NUQVRVUzoKICAgICAgICAgZ2RwcmludGsoWEVOTE9HX0lORk8sICJDYW4gbm90IHdyaXRl IHJlYWRvbmx5IE1TUjogIgogICAgICAgICAgICAgICAgICAiTVNSX1BFUkZfR0xPQkFMX1NU QVRVUygweDM4RSkhXG4iKTsKLSAgICAgICAgdm14X2luamVjdF9od19leGNlcHRpb24oVFJB UF9ncF9mYXVsdCwgMCk7CisgICAgICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBf Z3BfZmF1bHQsIDApOwogICAgICAgICByZXR1cm4gMTsKICAgICBjYXNlIE1TUl9JQTMyX1BF QlNfRU5BQkxFOgogICAgICAgICBpZiAoIG1zcl9jb250ZW50ICYgMSApCkBAIC00NTIsNyAr NDUyLDcgQEAgc3RhdGljIGludCBjb3JlMl92cG11X2RvX3dybXNyKHVuc2lnbmVkIAogICAg ICAgICAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLAogICAgICAgICAgICAgICAg ICAgICAgICAgICJJbGxlZ2FsIGFkZHJlc3MgZm9yIElBMzJfRFNfQVJFQTogJSMiIFBSSXg2 NCAieFxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBtc3JfY29udGVudCk7Ci0gICAg ICAgICAgICAgICAgdm14X2luamVjdF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7 CisgICAgICAgICAgICAgICAgaHZtX2luamVjdF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVs dCwgMCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICB9CiAgICAg ICAgICAgICBjb3JlMl92cG11X2N4dC0+cG11X2VuYWJsZS0+ZHNfYXJlYV9lbmFibGUgPSBt c3JfY29udGVudCA/IDEgOiAwOwpAQCAtNTQ0LDcgKzU0NCw3IEBAIHN0YXRpYyBpbnQgY29y ZTJfdnBtdV9kb193cm1zcih1bnNpZ25lZCAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg ICB9CiAgICAgICAgIGlmIChpbmplY3RfZ3ApCi0gICAgICAgICAgICB2bXhfaW5qZWN0X2h3 X2V4Y2VwdGlvbihUUkFQX2dwX2ZhdWx0LCAwKTsKKyAgICAgICAgICAgIGh2bV9pbmplY3Rf aHdfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDApOwogICAgICAgICBlbHNlCiAgICAgICAg ICAgICB3cm1zcmwobXNyLCBtc3JfY29udGVudCk7CiAgICAgfQpkaWZmIC1yIDUzZTA1NzFm OTRlNCB4ZW4vYXJjaC94ODYvaHZtL3ZteC92dm14LmMKLS0tIGEveGVuL2FyY2gveDg2L2h2 bS92bXgvdnZteC5jCUZyaSBNYXkgMjUgMDg6MjE6MjUgMjAxMiArMDEwMAorKysgYi94ZW4v YXJjaC94ODYvaHZtL3ZteC92dm14LmMJRnJpIE1heSAyNSAwOTo0NTowMCAyMDEyICswMTAw CkBAIC0zMDQsMTIgKzMwNCwxMiBAQCB2bWV4aXQ6CiAgICAgCiBpbnZhbGlkX29wOgogICAg IGdkcHJpbnRrKFhFTkxPR19FUlIsICJ2bXhfaW5zdF9jaGVja19wcml2aWxlZ2U6IGludmFs aWRfb3BcbiIpOwotICAgIGh2bV9pbmplY3RfZXhjZXB0aW9uKFRSQVBfaW52YWxpZF9vcCwg MCwgMCk7CisgICAgaHZtX2luamVjdF9od19leGNlcHRpb24oVFJBUF9pbnZhbGlkX29wLCBI Vk1fREVMSVZFUl9OT19FUlJPUl9DT0RFKTsKICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJ T047CiAKIGdwX2ZhdWx0OgogICAgIGdkcHJpbnRrKFhFTkxPR19FUlIsICJ2bXhfaW5zdF9j aGVja19wcml2aWxlZ2U6IGdwX2ZhdWx0XG4iKTsKLSAgICBodm1faW5qZWN0X2V4Y2VwdGlv bihUUkFQX2dwX2ZhdWx0LCAwLCAwKTsKKyAgICBodm1faW5qZWN0X2h3X2V4Y2VwdGlvbihU UkFQX2dwX2ZhdWx0LCAwKTsKICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047CiB9CiAK QEAgLTM4Niw3ICszODYsNyBAQCBzdGF0aWMgaW50IGRlY29kZV92bXhfaW5zdChzdHJ1Y3Qg Y3B1X3VzCiAgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKIAogZ3BfZmF1bHQ6Ci0gICAgaHZt X2luamVjdF9leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCwgMCk7CisgICAgaHZtX2luamVj dF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7CiAgICAgcmV0dXJuIFg4NkVNVUxf RVhDRVBUSU9OOwogfQogCmRpZmYgLXIgNTNlMDU3MWY5NGU0IHhlbi9hcmNoL3g4Ni9tbS9z aGFkb3cvY29tbW9uLmMKLS0tIGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYwlG cmkgTWF5IDI1IDA4OjIxOjI1IDIwMTIgKzAxMDAKKysrIGIveGVuL2FyY2gveDg2L21tL3No YWRvdy9jb21tb24uYwlGcmkgTWF5IDI1IDA5OjQ1OjAwIDIwMTIgKzAxMDAKQEAgLTEzNSw3 ICsxMzUsNyBAQCBzdGF0aWMgaW50IGh2bV90cmFuc2xhdGVfbGluZWFyX2FkZHIoCiAKICAg ICBpZiAoICFva2F5ICkKICAgICB7Ci0gICAgICAgIGh2bV9pbmplY3RfZXhjZXB0aW9uKFRS QVBfZ3BfZmF1bHQsIDAsIDApOworICAgICAgICBodm1faW5qZWN0X2h3X2V4Y2VwdGlvbihU UkFQX2dwX2ZhdWx0LCAwKTsKICAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwog ICAgIH0KIApkaWZmIC1yIDUzZTA1NzFmOTRlNCB4ZW4vYXJjaC94ODYvbW0vc2hhZG93L211 bHRpLmMKLS0tIGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jCUZyaSBNYXkgMjUg MDg6MjE6MjUgMjAxMiArMDEwMAorKysgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRp LmMJRnJpIE1heSAyNSAwOTo0NTowMCAyMDEyICswMTAwCkBAIC00ODI1LDcgKzQ4MjUsNyBA QCBzdGF0aWMgbWZuX3QgZW11bGF0ZV9ndmFfdG9fbWZuKHN0cnVjdCB2CiAgICAgaWYgKCBn Zm4gPT0gSU5WQUxJRF9HRk4gKSAKICAgICB7CiAgICAgICAgIGlmICggaXNfaHZtX3ZjcHUo dikgKQotICAgICAgICAgICAgaHZtX2luamVj dF9leGNlcHRpb24oVFJBUF9wYWdlX2ZhdWx0 LCBwZmVjLCB2YWRkcik7CisgICAgICAgICAgICBodm1faW5qZWN0X3BhZ2VfZmF1bHQocGZl YywgdmFkZHIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcm9wYWdhdGVfcGFnZV9m YXVsdCh2YWRkciwgcGZlYyk7CiAgICAgICAgIHJldHVybiBfbWZuKEJBRF9HVkFfVE9fR0ZO KTsKZGlmZiAtciA1M2UwNTcxZjk0ZTQgeGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaHZtLmgK LS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaHZtLmgJRnJpIE1heSAyNSAwODoyMToy NSAyMDEyICswMTAwCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2h2bS5oCUZyaSBN YXkgMjUgMDk6NDU6MDAgMjAxMiArMDEwMApAQCAtNzEsNiArNzEsMTMgQEAgZW51bSBodm1f aW50YmxrIHsKICNkZWZpbmUgSFZNX0hBUF9TVVBFUlBBR0VfMk1CICAgMHgwMDAwMDAwMQog I2RlZmluZSBIVk1fSEFQX1NVUEVSUEFHRV8xR0IgICAweDAwMDAwMDAyCiAKK3N0cnVjdCBo dm1fdHJhcCB7CisgICAgaW50ICAgICAgICAgICB2ZWN0b3I7CisgICAgdW5zaWduZWQgaW50 ICB0eXBlOyAgICAgICAgIC8qIFg4Nl9FVkVOVFRZUEVfKiAqLworICAgIGludCAgICAgICAg ICAgZXJyb3JfY29kZTsgICAvKiBIVk1fREVMSVZFUl9OT19FUlJPUl9DT0RFIGlmIG4vYSAq LworICAgIHVuc2lnbmVkIGxvbmcgY3IyOyAgICAgICAgICAvKiBPbmx5IGZvciBUUkFQX3Bh Z2VfZmF1bHQgaC93IGV4Y2VwdGlvbiAqLworfTsKKwogLyoKICAqIFRoZSBoYXJkd2FyZSB2 aXJ0dWFsIG1hY2hpbmUgKEhWTSkgaW50ZXJmYWNlIGFic3RyYWN0cyBhd2F5IGZyb20gdGhl CiAgKiB4ODYveDg2XzY0IENQVSB2aXJ0dWFsaXphdGlvbiBhc3Npc3Qgc3BlY2lmaWNzLiBD dXJyZW50bHkgdGhpcyBpbnRlcmZhY2UKQEAgLTEyNCw4ICsxMzEsNyBAQCBzdHJ1Y3QgaHZt X2Z1bmN0aW9uX3RhYmxlIHsKIAogICAgIHZvaWQgKCpzZXRfdHNjX29mZnNldCkoc3RydWN0 IHZjcHUgKnYsIHU2NCBvZmZzZXQpOwogCi0gICAgdm9pZCAoKmluamVjdF9leGNlcHRpb24p KHVuc2lnbmVkIGludCB0cmFwbnIsIGludCBlcnJjb2RlLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBsb25nIGNyMik7CisgICAgdm9pZCAoKmluamVjdF90cmFw KShzdHJ1Y3QgaHZtX3RyYXAgKnRyYXApOwogCiAgICAgdm9pZCAoKmluaXRfaHlwZXJjYWxs X3BhZ2UpKHN0cnVjdCBkb21haW4gKmQsIHZvaWQgKmh5cGVyY2FsbF9wYWdlKTsKIApAQCAt MTYyLDEwICsxNjgsNyBAQCBzdHJ1Y3QgaHZtX2Z1bmN0aW9uX3RhYmxlIHsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpOwog ICAgIGludCAoKm5odm1fdmNwdV92bWV4aXQpKHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgY3B1 X3VzZXJfcmVncyAqcmVncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu dDY0X3QgZXhpdGNvZGUpOwotICAgIGludCAoKm5odm1fdmNwdV92bWV4aXRfdHJhcCkoc3Ry dWN0IHZjcHUgKnYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCB0cmFwbnIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBlcnJj b2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGNy Mik7CisgICAgaW50ICgqbmh2bV92Y3B1X3ZtZXhpdF90cmFwKShzdHJ1Y3QgdmNwdSAqdiwg c3RydWN0IGh2bV90cmFwICp0cmFwKTsKICAgICB1aW50NjRfdCAoKm5odm1fdmNwdV9ndWVz dGNyMykoc3RydWN0IHZjcHUgKnYpOwogICAgIHVpbnQ2NF90ICgqbmh2bV92Y3B1X2hvc3Rj cjMpKHN0cnVjdCB2Y3B1ICp2KTsKICAgICB1aW50MzJfdCAoKm5odm1fdmNwdV9hc2lkKShz dHJ1Y3QgdmNwdSAqdik7CkBAIC0zMjAsNyArMzIzLDkgQEAgdm9pZCBodm1fbWlncmF0ZV90 aW1lcnMoc3RydWN0IHZjcHUgKnYpOwogdm9pZCBodm1fZG9fcmVzdW1lKHN0cnVjdCB2Y3B1 ICp2KTsKIHZvaWQgaHZtX21pZ3JhdGVfcGlycXMoc3RydWN0IHZjcHUgKnYpOwogCi12b2lk IGh2bV9pbmplY3RfZXhjZXB0aW9uKHVuc2lnbmVkIGludCB0cmFwbnIsIGludCBlcnJjb2Rl LCB1bnNpZ25lZCBsb25nIGNyMik7Cit2b2lkIGh2bV9pbmplY3RfdHJhcChzdHJ1Y3QgaHZt X3RyYXAgKnRyYXApOwordm9pZCBodm1faW5qZWN0X2h3X2V4Y2VwdGlvbih1bnNpZ25lZCBp bnQgdHJhcG5yLCBpbnQgZXJyY29kZSk7Cit2b2lkIGh2bV9pbmplY3RfcGFnZV9mYXVsdChp bnQgZXJyY29kZSwgdW5zaWduZWQgbG9uZyBjcjIpOwogCiBzdGF0aWMgaW5saW5lIGludCBo dm1fZXZlbnRfcGVuZGluZyhzdHJ1Y3QgdmNwdSAqdikKIHsKQEAgLTQ3OSw4ICs0ODQsNyBA QCBpbnQgbmh2bV92Y3B1X3ZtZXhpdChzdHJ1Y3QgdmNwdSAqdiwgc3RyCiAvKiBpbmplY3Qg dm1leGl0IGludG8gbDEgZ3Vlc3QuIGwxIGd1ZXN0IHdpbGwgc2VlIGEgVk1FWElUIGR1ZSB0 bwogICogJ3RyYXBucicgZXhjZXB0aW9uLgogICovIAotaW50IG5odm1fdmNwdV92bWV4aXRf dHJhcChzdHJ1Y3QgdmNwdSAqdiwKLSAgICB1bnNpZ25lZCBpbnQgdHJhcG5yLCBpbnQgZXJy Y29kZSwgdW5zaWduZWQgbG9uZyBjcjIpOworaW50IG5odm1fdmNwdV92bWV4aXRfdHJhcChz dHJ1Y3QgdmNwdSAqdiwgc3RydWN0IGh2bV90cmFwICp0cmFwKTsKIAogLyogcmV0dXJucyBs MiBndWVzdCBjcjMgaW4gbDIgZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZS4gKi8KIHVp bnQ2NF90IG5odm1fdmNwdV9ndWVzdGNyMyhzdHJ1Y3QgdmNwdSAqdik7CmRpZmYgLXIgNTNl MDU3MWY5NGU0IHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N2bS9uZXN0ZWRzdm0uaAotLS0g YS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdm0vbmVzdGVkc3ZtLmgJRnJpIE1heSAyNSAw ODoyMToyNSAyMDEyICswMTAwCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N2bS9u ZXN0ZWRzdm0uaAlGcmkgTWF5IDI1IDA5OjQ1OjAwIDIwMTIgKzAxMDAKQEAgLTExNCw4ICsx MTQsNyBAQCBpbnQgbnN2bV92Y3B1X2hvc3RyZXN0b3JlKHN0cnVjdCB2Y3B1ICp2CiBpbnQg bnN2bV92Y3B1X3ZtcnVuKHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAq cmVncyk7CiBpbnQgbnN2bV92Y3B1X3ZtZXhpdF9pbmplY3Qoc3RydWN0IHZjcHUgKnYsIHN0 cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLAogICAgIHVpbnQ2NF90IGV4aXRjb2RlKTsKLWlu dCBuc3ZtX3ZjcHVfdm1leGl0X3RyYXAoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCB0 cmFwbnIsCi0gICAgICAgICAgICAgICAgICAgICAgaW50IGVycmNvZGUsIHVuc2lnbmVkIGxv bmcgY3IyKTsKK2ludCBuc3ZtX3ZjcHVfdm1leGl0X3RyYXAoc3RydWN0IHZjcHUgKnYsIHN0 cnVjdCBodm1fdHJhcCAqdHJhcCk7CiB1aW50NjRfdCBuc3ZtX3ZjcHVfZ3Vlc3RjcjMoc3Ry dWN0IHZjcHUgKnYpOwogdWludDY0X3QgbnN2bV92Y3B1X2hvc3RjcjMoc3RydWN0IHZjcHUg KnYpOwogdWludDMyX3QgbnN2bV92Y3B1X2FzaWQoc3RydWN0IHZjcHUgKnYpOwpkaWZmIC1y IDUzZTA1NzFmOTRlNCB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92Y3B1LmgKLS0tIGEveGVu L2luY2x1ZGUvYXNtLXg4Ni9odm0vdmNwdS5oCUZyaSBNYXkgMjUgMDg6MjE6MjUgMjAxMiAr MDEwMAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92Y3B1LmgJRnJpIE1heSAyNSAw OTo0NTowMCAyMDEyICswMTAwCkBAIC0xNjQsMTAgKzE2NCw5IEBAIHN0cnVjdCBodm1fdmNw dSB7CiAgICAgLyogQ2FsbGJhY2sgaW50byB4ODZfZW11bGF0ZSB3aGVuIGVtdWxhdGluZyBG UFUvTU1YL1hNTSBpbnN0cnVjdGlvbnMuICovCiAgICAgdm9pZCAoKmZwdV9leGNlcHRpb25f Y2FsbGJhY2spKHZvaWQgKiwgc3RydWN0IGNwdV91c2VyX3JlZ3MgKik7CiAgICAgdm9pZCAq ZnB1X2V4Y2VwdGlvbl9jYWxsYmFja19hcmc7Ci0gICAgLyogUGVuZGluZyBody9zdyBpbnRl cnJ1cHQgKi8KLSAgICBpbnQgICAgICAgICAgIGluamVjdF90cmFwOyAgICAgICAvKiAtMSBm b3Igbm90aGluZyB0byBpbmplY3QgKi8KLSAgICBpbnQgICAgICAgICAgIGluamVjdF9lcnJv cl9jb2RlOwotICAgIHVuc2lnbmVkIGxvbmcgaW5qZWN0X2NyMjsKKworICAgIC8qIFBlbmRp bmcgaHcvc3cgaW50ZXJydXB0ICgudmVjdG9yID0gLTEgbWVhbnMgbm90aGluZyBwZW5kaW5n KS4gKi8KKyAgICBzdHJ1Y3QgaHZtX3RyYXAgICAgIGluamVjdF90cmFwOwogCiAgICAgc3Ry dWN0IHZpcmlkaWFuX3ZjcHUgdmlyaWRpYW47CiB9OwpkaWZmIC1yIDUzZTA1NzFmOTRlNCB4 ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92bXgvdm14LmgKLS0tIGEveGVuL2luY2x1ZGUvYXNt LXg4Ni9odm0vdm14L3ZteC5oCUZyaSBNYXkgMjUgMDg6MjE6MjUgMjAxMiArMDEwMAorKysg Yi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92bXgvdm14LmgJRnJpIE1heSAyNSAwOTo0NTow MCAyMDEyICswMTAwCkBAIC0zODcsNyArMzg3LDYgQEAgc3RhdGljIGlubGluZSBpbnQgX192 bXhvbih1NjQgYWRkcikKICAgICByZXR1cm4gcmM7CiB9CiAKLXZvaWQgdm14X2luamVjdF9o d19leGNlcHRpb24oaW50IHRyYXAsIGludCBlcnJvcl9jb2RlKTsKIHZvaWQgdm14X2luamVj dF9leHRpbnQoaW50IHRyYXApOwogdm9pZCB2bXhfaW5qZWN0X25taSh2b2lkKTsKIAo= --B_3420784386_192024370 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel --B_3420784386_192024370--