From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v5 07/14] x86emul: correctly handle CMPXCHG* comparison failures Date: Thu, 15 Mar 2018 07:08:07 -0600 Message-ID: <5AAA7E4802000078001B2288@prv-mh.provo.novell.com> References: <5AAA7BAF02000078001B2242@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ewScD-0002Rp-L4 for xen-devel@lists.xenproject.org; Thu, 15 Mar 2018 13:08:17 +0000 In-Reply-To: <5AAA7BAF02000078001B2242@prv-mh.provo.novell.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel Cc: George Dunlap , Andrew Cooper List-Id: xen-devel@lists.xenproject.org SWYgdGhlIC0+Y21weGNoZygpIGhvb2sgZmluZHMgYSBtaXNtYXRjaCwgd2Ugc2hvdWxkIGRlYWwg d2l0aCB0aGlzIHRoZQpzYW1lIHdheSBhcyB3aGVuIHRoZSAibWFudWFsIiBjb21wYXJpc29uIHJl cG9ydHMgYSBtaXNtYXRjaC4KClRoaXMgaW52b2x2ZXMgcmV2ZXJ0aW5nIGJmY2UwZTYyYzMgKCJ4 ODYvZW11bDogRHJvcApYODZFTVVMX0NNUFhDSEdfRkFJTEVEIiksIGFsYmVpdCB3aXRoIFg4NkVN VUxfQ01QWENIR19GQUlMRUQgbm93CmJlY29taW5nIGEgdmFsdWUgZGlzdGluY3QgZnJvbSBYODZF TVVMX1JFVFJZLgoKU2lnbmVkLW9mZi1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29t PgpBY2tlZC1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQWNr ZWQtYnk6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgotLS0KdjQ6IEFkZCBjb21tZW50IHRvIHB0 d3JfZW11bGF0ZWRfdXBkYXRlKCkuIHBhZGRyX3QgLT4gaW50cHRlIGNoYW5nZQogICAgc3BsaXQg b2ZmIHRvIHNlcGFyYXRlIHBhdGNoLgp2MzogTmV3LgotLS0KVGhlIGNvZGUgY291bGQgYmUgZnVy dGhlciBzaW1wbGlmaWVkIGlmIHdlIGNvdWxkIHJlbHkgb24gYWxsCi0+Y21weGNoZygpIGhvb2tz IGFsd2F5cyB1c2luZyBDTVBYQ0hHLCBidXQgZm9yIG5vdyB3ZSBuZWVkIHRvIGNvcGUKd2l0aCB0 aGVtIHVzaW5nIHBsYWluIHdyaXRlcyAoYW5kIGhlbmNlIGFjY2VwdCB0aGUgZG91YmxlIHJlYWRz IGlmCkNNUFhDSEcgaXMgYWN0dWFsbHkgYmVpbmcgdXNlZCkuCk5vdGUgdGhhdCB0aGUgcGF0Y2gg ZG9lc24ndCBhZGRyZXNzIHRoZSBpbmNvcnJlY3RuZXNzIG9mIHRoZXJlIG5vdApiZWluZyBhIG1l bW9yeSB3cml0ZSBldmVuIGluIHRoZSBjb21wYXJpc29uLWZhaWxlZCBjYXNlLgoKLS0tIGEveGVu L2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYworKysgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93 L2NvbW1vbi5jCkBAIC0zMDIsOCArMzAyLDEyIEBAIGh2bV9lbXVsYXRlX2NtcHhjaGcoZW51bSB4 ODZfc2VnbWVudCBzZWcKICAgICBtZW1jcHkoJm9sZCwgcF9vbGQsIGJ5dGVzKTsKICAgICBtZW1j cHkoJm5ldywgcF9uZXcsIGJ5dGVzKTsKIAotICAgIHJldHVybiB2LT5hcmNoLnBhZ2luZy5tb2Rl LT5zaGFkb3cueDg2X2VtdWxhdGVfY21weGNoZygKLSAgICAgICAgICAgICAgIHYsIGFkZHIsIG9s ZCwgbmV3LCBieXRlcywgc2hfY3R4dCk7CisgICAgcmMgPSB2LT5hcmNoLnBhZ2luZy5tb2RlLT5z aGFkb3cueDg2X2VtdWxhdGVfY21weGNoZygKKyAgICAgICAgICAgICB2LCBhZGRyLCAmb2xkLCBu ZXcsIGJ5dGVzLCBzaF9jdHh0KTsKKworICAgIG1lbWNweShwX29sZCwgJm9sZCwgYnl0ZXMpOwor CisgICAgcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRlX29w cyBodm1fc2hhZG93X2VtdWxhdG9yX29wcyA9IHsKLS0tIGEveGVuL2FyY2gveDg2L21tL3NoYWRv dy9tdWx0aS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYwpAQCAtNDcyMywx MSArNDcyMywxMSBAQCBzaF94ODZfZW11bGF0ZV93cml0ZShzdHJ1Y3QgdmNwdSAqdiwgdW5zCiAK IHN0YXRpYyBpbnQKIHNoX3g4Nl9lbXVsYXRlX2NtcHhjaGcoc3RydWN0IHZjcHUgKnYsIHVuc2ln bmVkIGxvbmcgdmFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG9s ZCwgdW5zaWduZWQgbG9uZyBuZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgYnl0ZXMsIHN0cnVjdCBzaF9lbXVsYXRlX2N0eHQgKnNoX2N0eHQpCisgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKnBfb2xkLCB1bnNpZ25lZCBsb25nIG5ldywKKyAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGJ5dGVzLCBzdHJ1Y3Qgc2hfZW11bGF0ZV9j dHh0ICpzaF9jdHh0KQogewogICAgIHZvaWQgKmFkZHI7Ci0gICAgdW5zaWduZWQgbG9uZyBwcmV2 OworICAgIHVuc2lnbmVkIGxvbmcgcHJldiwgb2xkID0gKnBfb2xkOwogICAgIGludCBydiA9IFg4 NkVNVUxfT0tBWTsKIAogICAgIC8qIFVuYWxpZ25lZCB3cml0ZXMgYXJlIG9ubHkgYWNjZXB0YWJs ZSBvbiBIVk0gKi8KQEAgLTQ3NTEsNyArNDc1MSwxMCBAQCBzaF94ODZfZW11bGF0ZV9jbXB4Y2hn KHN0cnVjdCB2Y3B1ICp2LCB1CiAgICAgfQogCiAgICAgaWYgKCBwcmV2ICE9IG9sZCApCi0gICAg ICAgIHJ2ID0gWDg2RU1VTF9SRVRSWTsKKyAgICB7CisgICAgICAgICpwX29sZCA9IHByZXY7Cisg ICAgICAgIHJ2ID0gWDg2RU1VTF9DTVBYQ0hHX0ZBSUxFRDsKKyAgICB9CiAKICAgICBTSEFET1df REVCVUcoRU1VTEFURSwgInZhICUjbHggd2FzICUjbHggZXhwZWN0ZWQgJSNseCIKICAgICAgICAg ICAgICAgICAgICIgd2FudGVkICUjbHggbm93ICUjbHggYnl0ZXMgJXVcbiIsCi0tLSBhL3hlbi9h cmNoL3g4Ni9wdi9yby1wYWdlLWZhdWx0LmMKKysrIGIveGVuL2FyY2gveDg2L3B2L3JvLXBhZ2Ut ZmF1bHQuYwpAQCAtNjUsMTQgKzY1LDIwIEBAIHN0YXRpYyBpbnQgcHR3cl9lbXVsYXRlZF9yZWFk KGVudW0geDg2X3MKICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwogfQogCi1zdGF0aWMgaW50IHB0 d3JfZW11bGF0ZWRfdXBkYXRlKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50cHRlX3Qgb2xkLCBpbnRw dGVfdCB2YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBi eXRlcywgdW5zaWduZWQgaW50IGRvX2NtcHhjaGcsCisvKgorICogcF9vbGQgYmVpbmcgTlVMTCBp bmRpY2F0ZXMgYSBwbGFpbiB3cml0ZSB0byBvY2N1ciwgd2hpbGUgYSBub24tTlVMTAorICogaW5w dXQgcmVxdWVzdHMgYSBDTVBYQ0hHLWJhc2VkIHVwZGF0ZS4KKyAqLworc3RhdGljIGludCBwdHdy X2VtdWxhdGVkX3VwZGF0ZSh1bnNpZ25lZCBsb25nIGFkZHIsIGludHB0ZV90ICpwX29sZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50cHRlX3QgdmFsLCB1bnNpZ25lZCBpbnQg Ynl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4ODZfZW11bGF0 ZV9jdHh0ICpjdHh0KQogewogICAgIHVuc2lnbmVkIGxvbmcgbWZuOwogICAgIHVuc2lnbmVkIGxv bmcgdW5hbGlnbmVkX2FkZHIgPSBhZGRyOwogICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7CiAg ICAgbDFfcGdlbnRyeV90IHB0ZSwgb2wxZSwgbmwxZSwgKnBsMWU7CisgICAgaW50cHRlX3Qgb2xk ID0gcF9vbGQgPyAqcF9vbGQgOiAwOworICAgIHVuc2lnbmVkIGludCBvZmZzZXQgPSAwOwogICAg IHN0cnVjdCB2Y3B1ICp2ID0gY3VycmVudDsKICAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9t YWluOwogICAgIHN0cnVjdCBwdHdyX2VtdWxhdGVfY3R4dCAqcHR3cl9jdHh0ID0gY3R4dC0+ZGF0 YTsKQEAgLTkxLDcgKzk3LDkgQEAgc3RhdGljIGludCBwdHdyX2VtdWxhdGVkX3VwZGF0ZSh1bnNp Z25lZAogICAgIGlmICggYnl0ZXMgIT0gc2l6ZW9mKHZhbCkgKQogICAgIHsKICAgICAgICAgaW50 cHRlX3QgZnVsbDsKLSAgICAgICAgdW5zaWduZWQgaW50IHJjLCBvZmZzZXQgPSBhZGRyICYgKHNp emVvZihmdWxsKSAtIDEpOworICAgICAgICB1bnNpZ25lZCBpbnQgcmM7CisKKyAgICAgICAgb2Zm c2V0ID0gYWRkciAmIChzaXplb2YoZnVsbCkgLSAxKTsKIAogICAgICAgICAvKiBBbGlnbiBhZGRy ZXNzOyByZWFkIGZ1bGwgd29yZC4gKi8KICAgICAgICAgYWRkciAmPSB+KHNpemVvZihmdWxsKSAt IDEpOwpAQCAtMTMxLDcgKzEzOSw3IEBAIHN0YXRpYyBpbnQgcHR3cl9lbXVsYXRlZF91cGRhdGUo dW5zaWduZWQKICAgICB7CiAgICAgZGVmYXVsdDoKICAgICAgICAgaWYgKCBpc19wdl8zMmJpdF9k b21haW4oZCkgJiYgKGJ5dGVzID09IDQpICYmICh1bmFsaWduZWRfYWRkciAmIDQpICYmCi0gICAg ICAgICAgICAgIWRvX2NtcHhjaGcgJiYgKGwxZV9nZXRfZmxhZ3MobmwxZSkgJiBfUEFHRV9QUkVT RU5UKSApCisgICAgICAgICAgICAgIXBfb2xkICYmIChsMWVfZ2V0X2ZsYWdzKG5sMWUpICYgX1BB R0VfUFJFU0VOVCkgKQogICAgICAgICB7CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICog SWYgdGhpcyBpcyBhbiB1cHBlci1oYWxmIHdyaXRlIHRvIGEgUEFFIFBURSB0aGVuIHdlIGFzc3Vt ZSB0aGF0CkBAIC0xNjIsMjEgKzE3MCwyNiBAQCBzdGF0aWMgaW50IHB0d3JfZW11bGF0ZWRfdXBk YXRlKHVuc2lnbmVkCiAgICAgLyogQ2hlY2tlZCBzdWNjZXNzZnVsbHk6IGRvIHRoZSB1cGRhdGUg KHdyaXRlIG9yIGNtcHhjaGcpLiAqLwogICAgIHBsMWUgPSBtYXBfZG9tYWluX3BhZ2UoX21mbiht Zm4pKTsKICAgICBwbDFlID0gKGwxX3BnZW50cnlfdCAqKSgodW5zaWduZWQgbG9uZylwbDFlICsg KGFkZHIgJiB+UEFHRV9NQVNLKSk7Ci0gICAgaWYgKCBkb19jbXB4Y2hnICkKKyAgICBpZiAoIHBf b2xkICkKICAgICB7Ci0gICAgICAgIGJvb2wgb2theTsKLSAgICAgICAgaW50cHRlX3QgdCA9IG9s ZDsKIAogICAgICAgICBvbDFlID0gbDFlX2Zyb21faW50cHRlKG9sZCk7Ci0gICAgICAgIG9rYXkg PSBwYWdpbmdfY21weGNoZ19ndWVzdF9lbnRyeSh2LCAmbDFlX2dldF9pbnRwdGUoKnBsMWUpLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnQsIGwxZV9nZXRfaW50 cHRlKG5sMWUpLCBfbWZuKG1mbikpOwotICAgICAgICBva2F5ID0gKG9rYXkgJiYgdCA9PSBvbGQp OworICAgICAgICBpZiAoICFwYWdpbmdfY21weGNoZ19ndWVzdF9lbnRyeSh2LCAmbDFlX2dldF9p bnRwdGUoKnBsMWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm b2xkLCBsMWVfZ2V0X2ludHB0ZShubDFlKSwgX21mbihtZm4pKSApCisgICAgICAgICAgICByZXQg PSBYODZFTVVMX1VOSEFORExFQUJMRTsKKyAgICAgICAgZWxzZSBpZiAoIGwxZV9nZXRfaW50cHRl KG9sMWUpID09IG9sZCApCisgICAgICAgICAgICByZXQgPSBYODZFTVVMX09LQVk7CisgICAgICAg IGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgKnBfb2xkID0gb2xkID4+IChvZmZzZXQgKiA4 KTsKKyAgICAgICAgICAgIHJldCA9IFg4NkVNVUxfQ01QWENIR19GQUlMRUQ7CisgICAgICAgIH0K IAotICAgICAgICBpZiAoICFva2F5ICkKKyAgICAgICAgaWYgKCByZXQgIT0gWDg2RU1VTF9PS0FZ ICkKICAgICAgICAgewogICAgICAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UocGwxZSk7CiAgICAg ICAgICAgICBwdXRfcGFnZV9mcm9tX2wxZShubDFlLCBkKTsKLSAgICAgICAgICAgIHJldHVybiBY ODZFTVVMX1JFVFJZOworICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICAgICAgfQogICAgIH0K ICAgICBlbHNlCkBAIC0yMTEsNyArMjI0LDcgQEAgc3RhdGljIGludCBwdHdyX2VtdWxhdGVkX3dy aXRlKGVudW0geDg2XwogCiAgICAgbWVtY3B5KCZ2YWwsIHBfZGF0YSwgYnl0ZXMpOwogCi0gICAg cmV0dXJuIHB0d3JfZW11bGF0ZWRfdXBkYXRlKG9mZnNldCwgMCwgdmFsLCBieXRlcywgMCwgY3R4 dCk7CisgICAgcmV0dXJuIHB0d3JfZW11bGF0ZWRfdXBkYXRlKG9mZnNldCwgTlVMTCwgdmFsLCBi eXRlcywgY3R4dCk7CiB9CiAKIHN0YXRpYyBpbnQgcHR3cl9lbXVsYXRlZF9jbXB4Y2hnKGVudW0g eDg2X3NlZ21lbnQgc2VnLCB1bnNpZ25lZCBsb25nIG9mZnNldCwKQEAgLTIxOSw2ICsyMzIsNyBA QCBzdGF0aWMgaW50IHB0d3JfZW11bGF0ZWRfY21weGNoZyhlbnVtIHg4CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBib29sIGxvY2ssIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpj dHh0KQogewogICAgIGludHB0ZV90IG9sZCA9IDAsIG5ldyA9IDA7CisgICAgaW50IHJjOwogCiAg ICAgaWYgKCAoYnl0ZXMgPiBzaXplb2YobmV3KSkgfHwgKGJ5dGVzICYgKGJ5dGVzIC0gMSkpICkK ICAgICB7CkBAIC0yMzAsNyArMjQ0LDExIEBAIHN0YXRpYyBpbnQgcHR3cl9lbXVsYXRlZF9jbXB4 Y2hnKGVudW0geDgKICAgICBtZW1jcHkoJm9sZCwgcF9vbGQsIGJ5dGVzKTsKICAgICBtZW1jcHko Jm5ldywgcF9uZXcsIGJ5dGVzKTsKIAotICAgIHJldHVybiBwdHdyX2VtdWxhdGVkX3VwZGF0ZShv ZmZzZXQsIG9sZCwgbmV3LCBieXRlcywgMSwgY3R4dCk7CisgICAgcmMgPSBwdHdyX2VtdWxhdGVk X3VwZGF0ZShvZmZzZXQsICZvbGQsIG5ldywgYnl0ZXMsIGN0eHQpOworCisgICAgbWVtY3B5KHBf b2xkLCAmb2xkLCBieXRlcyk7CisKKyAgICByZXR1cm4gcmM7CiB9CiAKIHN0YXRpYyBjb25zdCBz dHJ1Y3QgeDg2X2VtdWxhdGVfb3BzIHB0d3JfZW11bGF0ZV9vcHMgPSB7Ci0tLSBhL3hlbi9hcmNo L3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfZW11 bGF0ZS94ODZfZW11bGF0ZS5jCkBAIC0xOTU5LDYgKzE5NTksOSBAQCBwcm90bW9kZV9sb2FkX3Nl ZygKIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIHJjOworCisgICAgICAg IGNhc2UgWDg2RU1VTF9DTVBYQ0hHX0ZBSUxFRDoKKyAgICAgICAgICAgIHJldHVybiBYODZFTVVM X1JFVFJZOwogICAgICAgICB9CiAKICAgICAgICAgLyogRm9yY2UgdGhlIEFjY2Vzc2VkIGZsYWcg aW4gb3VyIGxvY2FsIGNvcHkuICovCkBAIC02NjAzLDIxICs2NjA2LDQ1IEBAIHg4Nl9lbXVsYXRl KAogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgWDg2RU1VTF9PUEMoMHgwZiwgMHhiMCk6IGNh c2UgWDg2RU1VTF9PUEMoMHgwZiwgMHhiMSk6IC8qIGNtcHhjaGcgKi8KLSAgICAgICAgLyogU2F2 ZSByZWFsIHNvdXJjZSB2YWx1ZSwgdGhlbiBjb21wYXJlIEVBWCBhZ2FpbnN0IGRlc3RpbmF0aW9u LiAqLwotICAgICAgICBzcmMub3JpZ192YWwgPSBzcmMudmFsOwotICAgICAgICBzcmMudmFsID0g X3JlZ3MucihheCk7Ci0gICAgICAgIC8qIGNtcDogJSVlYXggLSBkc3QgPT0+IGRzdCBhbmQgc3Jj IHN3YXBwZWQgZm9yIG1hY3JvIGludm9jYXRpb24gKi8KLSAgICAgICAgZW11bGF0ZV8yb3BfU3Jj VigiY21wIiwgZHN0LCBzcmMsIF9yZWdzLmVmbGFncyk7Ci0gICAgICAgIGlmICggX3JlZ3MuZWZs YWdzICYgWDg2X0VGTEFHU19aRiApCisgICAgICAgIGZhaWxfaWYoIW9wcy0+Y21weGNoZyk7Cisg ICAgICAgIF9yZWdzLmVmbGFncyAmPSB+RUZMQUdTX01BU0s7CisgICAgICAgIGlmICggISgoZHN0 LnZhbCBeIF9yZWdzLnIoYXgpKSAmCisgICAgICAgICAgICAgICAofjBVTCA+PiAoOCAqIChzaXpl b2YobG9uZykgLSBkc3QuYnl0ZXMpKSkpICkKICAgICAgICAgewogICAgICAgICAgICAgLyogU3Vj Y2Vzczogd3JpdGUgYmFjayB0byBtZW1vcnkuICovCi0gICAgICAgICAgICBkc3QudmFsID0gc3Jj Lm9yaWdfdmFsOworICAgICAgICAgICAgaWYgKCBkc3QudHlwZSA9PSBPUF9NRU0gKQorICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgIGRzdC52YWwgPSBfcmVncy5yKGF4KTsKKyAgICAgICAg ICAgICAgICBzd2l0Y2ggKCByYyA9IG9wcy0+Y21weGNoZyhkc3QubWVtLnNlZywgZHN0Lm1lbS5v ZmYsICZkc3QudmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZzcmMudmFsLCBkc3QuYnl0ZXMsIGxvY2tfcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGN0eHQpICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgY2FzZSBYODZFTVVMX09LQVk6CisgICAgICAgICAgICAgICAgICAgIGRzdC50eXBl ID0gT1BfTk9ORTsKKyAgICAgICAgICAgICAgICAgICAgX3JlZ3MuZWZsYWdzIHw9IFg4Nl9FRkxB R1NfWkYgfCBYODZfRUZMQUdTX1BGOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgICAgICAgICBjYXNlIFg4NkVNVUxfQ01QWENIR19GQUlMRUQ6CisgICAgICAgICAgICAgICAg ICAgIHJjID0gWDg2RU1VTF9PS0FZOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAg ICAgeworICAgICAgICAgICAgICAgIGRzdC52YWwgPSBzcmMudmFsOworICAgICAgICAgICAgICAg IF9yZWdzLmVmbGFncyB8PSBYODZfRUZMQUdTX1pGIHwgWDg2X0VGTEFHU19QRjsKKyAgICAgICAg ICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlCisgICAgICAgIGlmICggIShfcmVncy5lZmxh Z3MgJiBYODZfRUZMQUdTX1pGKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIC8qIEZhaWx1cmU6 IHdyaXRlIHRoZSB2YWx1ZSB3ZSBzYXcgdG8gRUFYLiAqLwogICAgICAgICAgICAgZHN0LnR5cGUg PSBPUF9SRUc7CiAgICAgICAgICAgICBkc3QucmVnICA9ICh1bnNpZ25lZCBsb25nICopJl9yZWdz LnIoYXgpOworICAgICAgICAgICAgLyogY21wOiAlJWVheCAtIGRzdCA9PT4gZHN0IGFuZCBzcmMg c3dhcHBlZCBmb3IgbWFjcm8gaW52b2NhdGlvbiAqLworICAgICAgICAgICAgc3JjLnZhbCA9IF9y ZWdzLnIoYXgpOworICAgICAgICAgICAgZW11bGF0ZV8yb3BfU3JjVigiY21wIiwgZHN0LCBzcmMs IF9yZWdzLmVmbGFncyk7CisgICAgICAgICAgICBBU1NFUlQoIShfcmVncy5lZmxhZ3MgJiBYODZf RUZMQUdTX1pGKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKQEAgLTY5MTgsNiArNjk0 NSw3IEBAIHg4Nl9lbXVsYXRlKAogCiAgICAgICAgIGlmICggbWVtY21wKG9sZCwgYXV4LCBvcF9i eXRlcykgKQogICAgICAgICB7CisgICAgICAgIGNtcHhjaGdOYl9mYWlsZWQ6CiAgICAgICAgICAg ICAvKiBFeHBlY3RlZCAhPSBhY3R1YWw6IHN0b3JlIGFjdHVhbCB0byByRFg6ckFYIGFuZCBjbGVh ciBaRi4gKi8KICAgICAgICAgICAgIF9yZWdzLnIoYXgpID0gIShyZXhfcHJlZml4ICYgUkVYX1cp ID8gb2xkLT51MzJbMF0gOiBvbGQtPnU2NFswXTsKICAgICAgICAgICAgIF9yZWdzLnIoZHgpID0g IShyZXhfcHJlZml4ICYgUkVYX1cpID8gb2xkLT51MzJbMV0gOiBvbGQtPnU2NFsxXTsKQEAgLTY5 MjcsNyArNjk1NSw3IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICB7CiAgICAgICAgICAgICAvKgog ICAgICAgICAgICAgICogRXhwZWN0ZWQgPT0gYWN0dWFsOiBHZXQgcHJvcG9zZWQgdmFsdWUsIGF0 dGVtcHQgYXRvbWljIGNtcHhjaGcKLSAgICAgICAgICAgICAqIGFuZCBzZXQgWkYuCisgICAgICAg ICAgICAgKiBhbmQgc2V0IFpGIGlmIHN1Y2Nlc3NmdWwuCiAgICAgICAgICAgICAgKi8KICAgICAg ICAgICAgIGlmICggIShyZXhfcHJlZml4ICYgUkVYX1cpICkKICAgICAgICAgICAgIHsKQEAgLTY5 NDAsMTEgKzY5NjgsMjAgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICAgICAgYXV4LT51NjRb MV0gPSBfcmVncy5yKGN4KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCAocmMg PSBvcHMtPmNtcHhjaGcoZWEubWVtLnNlZywgZWEubWVtLm9mZiwgb2xkLCBhdXgsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcF9ieXRlcywgbG9ja19wcmVmaXgsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHh0KSkgIT0gWDg2RU1VTF9PS0FZICkK KyAgICAgICAgICAgIHN3aXRjaCAoIHJjID0gb3BzLT5jbXB4Y2hnKGVhLm1lbS5zZWcsIGVhLm1l bS5vZmYsIG9sZCwgYXV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg b3BfYnl0ZXMsIGxvY2tfcHJlZml4LCBjdHh0KSApCisgICAgICAgICAgICB7CisgICAgICAgICAg ICBjYXNlIFg4NkVNVUxfT0tBWToKKyAgICAgICAgICAgICAgICBfcmVncy5lZmxhZ3MgfD0gWDg2 X0VGTEFHU19aRjsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBY ODZFTVVMX0NNUFhDSEdfRkFJTEVEOgorICAgICAgICAgICAgICAgIHJjID0gWDg2RU1VTF9PS0FZ OworICAgICAgICAgICAgICAgIGdvdG8gY21weGNoZ05iX2ZhaWxlZDsKKworICAgICAgICAgICAg ZGVmYXVsdDoKICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgICAgICBfcmVncy5l ZmxhZ3MgfD0gWDg2X0VGTEFHU19aRjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg ICBicmVhazsKICAgICB9CkBAIC04Mzk0LDYgKzg0MzEsOCBAQCB4ODZfZW11bGF0ZSgKICAgICAg ICAgICAgIHJjID0gb3BzLT5jbXB4Y2hnKAogICAgICAgICAgICAgICAgIGRzdC5tZW0uc2VnLCBk c3QubWVtLm9mZiwgJmRzdC5vcmlnX3ZhbCwKICAgICAgICAgICAgICAgICAmZHN0LnZhbCwgZHN0 LmJ5dGVzLCB0cnVlLCBjdHh0KTsKKyAgICAgICAgICAgIGlmICggcmMgPT0gWDg2RU1VTF9DTVBY Q0hHX0ZBSUxFRCApCisgICAgICAgICAgICAgICAgcmMgPSBYODZFTVVMX1JFVFJZOwogICAgICAg ICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxh dGUveDg2X2VtdWxhdGUuaAorKysgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxh dGUuaApAQCAtMTU4LDYgKzE1OCw4IEBAIHN0cnVjdCB4ODZfZW11bF9mcHVfYXV4IHsKICAgKiBz dHJpY3RseSBleHBlY3RlZCBmb3Igbm93LgogICovCiAjZGVmaW5lIFg4NkVNVUxfVU5SRUNPR05J WkVEICAgWDg2RU1VTF9VTklNUExFTUVOVEVECisgLyogKGNtcHhjaGcgYWNjZXNzb3IpOiBDTVBY Q0hHIGZhaWxlZC4gKi8KKyNkZWZpbmUgWDg2RU1VTF9DTVBYQ0hHX0ZBSUxFRCA3CiAKIC8qIEZQ VSBzdWItdHlwZXMgd2hpY2ggbWF5IGJlIHJlcXVlc3RlZCB2aWEgLT5nZXRfZnB1KCkuICovCiBl bnVtIHg4Nl9lbXVsYXRlX2ZwdV90eXBlIHsKQEAgLTI0Nyw2ICsyNDksOCBAQCBzdHJ1Y3QgeDg2 X2VtdWxhdGVfb3BzCiAgICAgLyoKICAgICAgKiBjbXB4Y2hnOiBFbXVsYXRlIGEgQ01QWENIRyBv cGVyYXRpb24uCiAgICAgICogIEBwX29sZDogW0lOIF0gUG9pbnRlciB0byB2YWx1ZSBleHBlY3Rl ZCB0byBiZSBjdXJyZW50IGF0IEBhZGRyLgorICAgICAqICAgICAgICAgIFtPVVRdIFBvaW50ZXIg dG8gdmFsdWUgZm91bmQgYXQgQGFkZHIgKG1heSBhbHdheXMgYmUKKyAgICAgKiAgICAgICAgICAg ICAgICB1cGRhdGVkLCBtZWFuaW5nZnVsIGZvciBYODZFTVVMX0NNUFhDSEdfRkFJTEVEIG9ubHkp LgogICAgICAqICBAcF9uZXc6IFtJTiBdIFBvaW50ZXIgdG8gdmFsdWUgdG8gd3JpdGUgdG8gQGFk ZHIuCiAgICAgICogIEBieXRlczogW0lOIF0gT3BlcmF0aW9uIHNpemUgKHVwIHRvIDggKHg4Ni8z Mikgb3IgMTYgKHg4Ni82NCkgYnl0ZXMpLgogICAgICAqICBAbG9jazogIFtJTiBdIGF0b21pYyAo TE9DS2VkKSBvcGVyYXRpb24KLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wYWdpbmcuaAorKysg Yi94ZW4vaW5jbHVkZS9hc20teDg2L3BhZ2luZy5oCkBAIC04Niw3ICs4Niw3IEBAIHN0cnVjdCBz aGFkb3dfcGFnaW5nX21vZGUgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2b2lkICpzcmMsIHUzMiBieXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHNoX2VtdWxhdGVfY3R4dCAqc2hfY3R4dCk7CiAgICAg aW50ICAgICAgICAgICAoKng4Nl9lbXVsYXRlX2NtcHhjaGcgICApKHN0cnVjdCB2Y3B1ICp2LCB1 bnNpZ25lZCBsb25nIHZhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIG9sZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKm9sZCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBuZXcsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBieXRlcywKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNoX2VtdWxhdGVfY3R4 dCAqc2hfY3R4dCk7CgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2 ZWw=